事業フェーズごとにiOS/Androidアプリ開発で気をつけるべき観点


色々な事業フェーズに携わる中で、事業フェーズ別のアプリ開発に関する観点に対して思う所があったので個人的な見解をまとめます。

前段

事業状況は0→1、1→10、10→100などの局面によって変化していくものです。
その事業の局面ごとに最適なアプリの設計や重視すべき観点というのは変化していくのではないかと私は思います。
もちろん、アプリの特性と組織状況によっても最適なアプリの設計は変わるものですが、そこはサブ要因として今回は踏み込まずに思うところを記載していこうと思います。

0→1フェーズ

0→1フェーズは仮説検証を繰り返し行い、ビジネスが成立するコアサイクルを見つけ出すフェーズです。
この局面ではアプリに必要とされる機能やUXもどんどん変化するため、そもそもネイティブアプリとして作るべきかどうかも含めて検討すべきフェーズです。
可能であれば、NoCodeによるアプリ開発で簡素な仮説検証を繰り返して一定の方向性を見つけてからアプリ開発を開始すべきでしょう。
この段階で実際にアプリを開発する場合、仕様変更が頻発するとともに0→1に興味を持つ少数のエンジニアでどんどん開発を進めていく形になると思われます。
この局面では、アプリ開発において以下の観点を重視すべきでしょう。

  • 安定性よりも作りやすさを優先(スクラップ&ビルド)
  • 学習コストが小さく、参入障壁が低い設計
  • テストよりも動くものを優先
  • 仮説検証の状況の可視化(定性・定量調査とその可視化)

1→10フェーズ

1→10フェーズはビジネスのコアバリューが形成され、売り上げを拡大していくフェーズです。
この局面ではコアの機能しかないアプリに色々な機能追加やUX改善が求められます。
また、0→1にこだわるエンジニアが抜けたりすることで人の入れ替えが激しくなってくる時期でもあります。
この段階におけるアプリ開発においては以下の観点を重視すべきでしょう。

  • コア機能に対するテストの実装
  • 開発ドキュメントの整備(暗黙知から形式知への変換)
  • リファクタリング(あるいはリニューアル)の検討と実施

10→100フェーズ

10→100フェーズは事業が安定した状態に入り、運用に重きを置くフェーズです。
この局面ではユーザ数が一定存在することもあり、細かいUI/UXの改善や不具合修正、外部(他アプリや他企業のAPIなど)との連携といった開発がメインとなってきます。
この時期には人員が十分な数配置され、技術主導の開発が進んでいる組織も存在するでしょう。
この段階におけるアプリ開発においては以下の観点を重視すべきだと思われます。

  • 組織体制に応じた設計ルールの制定(人員が十分なら細かく責務を分けて厳密な設計ルールにするなど組織状況に応じた判断が必要)
  • テストの拡充
  • 運用周りの自動化推進

雑感

具体的な設計という意味では、初期フェーズではiOSならMVC、AndroidならMVVMで構成するにとどめておき、Clean Archなどを適用するとしても厳密なルールを適用しない方が小回りが利くと思います。
1→10フェーズではアプリの特性に合わせて設計を考え、場合によってはリニューアルする感じになるでしょう。
1→10でリファクタリングもしてないケースでは、10→100フェーズになってから大掛かりなリニューアルなどを行う羽目になり苦労している現場もあると思います。
逆に、0→1フェーズで作り込みをやりすぎて、1→10になってから作った人が抜けて誰も触れない設計になっているというのも聞いたことがあるので、事業フェーズと人員体制によってアプリに適した設計というのは変化していくことを意識してほしいと思う所です。