スケーラビリティのあるチームをつくるために大切にした6つのこと(1)
セッション冒頭で中川氏は、SansanアプリのGitHub Contributorsの数値を提示。iOS版のSansanアプリのコントリビューション数が、どのように変遷してきたかを解説した。
- 2016年4月10日~2017年10月5日:v3.0.0を開発。主に3名がコントリビュート。
- 2017年10月6日~2018年5月7日:v3.1.0 - v4.0.0を開発。3~4名がコントリビュート。
- 2018年5月8日~2018年8月8日:v4.1.0 - v4.1.6を開発。1名がコントリビュート。
- 2018年8月9日~2018年4月8日:v4.1.7 - v5.0.0を開発。この時期、チームに中川氏が参画。複数名がコントリビュート。
上図のグラフから読み取れるように、中川氏が参画した後の開発効率は非常に高くなっている。「スケーラビリティのあるチームを目指して私たちが取り組んできたことを、6つの観点に沿ってご紹介します」と中川氏は口火を切った。
1.アーキテクチャの方針策定
SansanのiOSチームでは開発効率向上のため、採用するアーキテクチャの方針策定を行った。なぜなら、複数人による開発でメンバーの入れ替わりが発生する環境において、設計の軸となる方針がなければ、メンバーが戸惑い教育コストも大きくなってしまうからだ。アプリのアーキテクチャにはVIPERを、UIのアーキテクチャにはDesign Systemを用いている。
2.メンバーの受け入れ
チームに新しいメンバーが入った際には、受け入れ作業を行う必要がある。だが、工数最適化の観点から、受け入れに要する時間的コストは最小限にしたい。説明しなくてもいい情報は、しなくて済むに越したことはないだろう。
「例えば、開発環境の構築は説明するような作業ではないですし、自動的にできた方がみんな楽になります。そこで、iOSアプリ開発に必要となる設定ファイルの作成やライブラリのインストール、Xcodeの設定などを自動化できるスクリプトを書きました」
3.CI(Continuous Integration)
CIにおいても改善を行った。Pull RequestのPushごとに、ビルドやテスト、Lintなどを行うように変更したのだ。用いている技術は、CI/CDサービスのBitriseとコードレビュー自動化サービスのSiderだ。