SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2022 Summer レポート(AD)

小規模チームでの開発こそ将来を考慮した技術選定を! SHIFTが語る、年間4000件のテストデータを活用する構想【デブサミ2022夏】

【C-6】すべてのエンジニアが手にするサービスを!SHIFTが手がけるプラットフォーム構想と認証基盤開発

  • X ポスト
  • このエントリーをはてなブックマークに追加

小さく始める時こそ、大規模になった場合を考慮した技術選定を

 片山氏は、「小規模なチームで開発を始めると、プロセスをあまり整備しなくてもメンバーが近いので、何となく開発できてしまう」と指摘し、そのままでは人員規模が大きくなっていったときに、「ある人はテストをするが、ある人がテストしないでコードをプッシュしてしまう」など後々のテストが上手くいかなくなる。

 「静的解析やコードフォーマットのルールを後から適用しようとすると、すでにあるソースコードへの変更点が多くなりすぎて、結局できないといった例を見てきた(片山氏)」。こうしたことを防ぐために、少人数でスタートするときからプロセスを整備して仕組みにしてしまうことが大切だ。

 さらに、サービスが動き始めた後に大規模改修が発生する可能性を潰しておくことも重要だ。よくある例としては、多言語対応が挙げられる。すでにサービスが動いている状態で多言語対応をすることはデータベースの整合性などの問題もあってなかなか難しい。「海外市場を見据えるなら多言語対応は欠かせないが、それができなくなるとプロダクトがスケールしていかない(片山氏)」。

 そして、REST APIを開発する際には「APIの定義と実装がずれる」「API定義のフォーマットのあいまいさ、考慮漏れによる実装ミス」「APIごとのバリデーション実装」「APIの定義変更がAPI利用者側に影響」といった問題が発生しやすいと片山氏は指摘する。

 この点でスケールした後のことを考えた結果、今回のプロジェクトではOpenAPI仕様を採用し、そのエコシステムを利用することに決めた。「スケールさせていくには自分たち独自の仕組みではなく、既存の優れたエコシステムを利用すべき」という考えからの結論だ。

 OpenAPIはYAMLやJSONといった形式で記述できるので、エンジニアには扱いやすい。さらに、関係ツールが豊富にあることも利点だ。例えば「Stoplight Studio」というツールを使えば、GUIでOpenAPI仕様に沿ったYAMLやJSONを作成できる。さらに、「Redoc」というツールを使えば、YAMLやJSONからAPIリファレンスを生成できる。そのほかにも、入出力バリデーションに使える「express-openapi-validator」というツールや、自動テストに利用できる「Jest」というツールもある。今回のプロジェクトでは、以上のツールを採用して、ドキュメント管理とテストに費やす工数を最小化することに努めた。

 開発に使用する言語も、プロジェクトが大きくなった後のことを考えて選んだ。候補としてはJavaScriptとTypeScriptがあったが、「新たに参加するメンバーの学習コストが低い点を評価して」JavaScriptを選んだ。「TypeScriptの利点は型がしっかりしていること。ライブラリで型が用意されていれば問題ない。しかし、ない場合は作らなければならない」と片山氏は両言語の得失について語った。

 そしてJavaScriptを選んだ理由にはほかにも、「Vue 2.x」でTypeScriptが完全対応していない点や、UIライブラリの「Vuetify」を使いたいといった点がある。

 最後に片山氏は現状を振り返って良かったこととして、静的解析を仕組みとして取り入れたことや、OpenAPIのエコシステムを利用できたことを挙げた。反対に良くなかったこととして、ライブラリの依存関係の問題で、最新バージョンを利用できなかったことと、OpenAPIのエコシステムが少々難しく、使いこなすために手間と時間がかかってしまった点を挙げ、セッションを終えた。

関連リンク

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Developers Summit 2022 Summer レポート連載記事一覧

もっと読む

この記事の著者

笹田 仁(ササダ ヒトシ)

 フリーランスのライター、編集者。IT、特にソフトウェア開発の話が好きです。 趣味はドラムを叩くこと。コロナ騒ぎでリハーサルスタジオに入りにくくなり、ちょこちょこと楽器を買うことでストレスを解消していたら、いつの間にか置き場所に困るほどになってしまいました。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16399 2022/09/26 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング