対象読者
- 生成AIを使って個人開発を進めたい人
- 実装途中の手戻りを減らしたい人
- 実装前に何を決めればよいか迷っている人
前回は、Macを持っていない私が、WindowsとiPhoneからiOSアプリ開発を始めた方法について書きました。
MacなしでWindowsからiOSアプリ開発を始めた話【個人開発 第2回】
今回の開発では、最初にすべてを設計してから実装したわけではありません。
「ひとまず、こんな感じかな」と大まかに決め、AIへ相談しながら作り始めました。
結果としてアプリは完成しました。ただ、開発の途中では大きな手戻りや不具合も発生しました。
特にUIは、私とAIの間で完成イメージが合わず、何度も作り直しています。
原因を振り返ると、実装前に決めていなかったことが多すぎました。
開発時の前提
| 項目 | 内容 |
|---|---|
| 開発用PC | Windows |
| 所有端末 | iPhone 12 mini |
| Mac | 所有していない |
| フレームワーク | React Native、Expo |
| 言語 | TypeScript |
| データ保存 | SQLiteによる端末内保存 |
要件定義書の作成から始めた
開発を始めたとき、まったく何も決めていなかったわけではありません。
最初のチャットでは、次のような内容をAIへ相談しました。
- 誰に、何を提供するアプリなのか
- MVPに必要な画面
- データベース
- 課金
- 似たサービス
ここで決めていたのは大枠だけでした。
UIの具体的な形、画面遷移、処理の流れ、各画面の完成条件などは、十分に固めていませんでした。
要件定義を始めてはいましたが、実装に使えるところまで具体化できていなかったのだと思います。
決めないまま実装したもの
最初に考えていたMVPは、痛み、気分、不安を数値で記録し、後から見返せる程度のものでした。
しかし、その考えを画面ごとの機能へ落とし込まないまま、実装を始めました。
実装前に十分決めていなかったのは、次のような内容です。
- どの画面が必要か
- 画面間をどのように移動するか
- 画面ごとに何を表示するか
- 画面上で何を操作できるようにするか
- 入力したデータをどのような形で保存するか
- 何ができたら、その画面を完成とするか
これらが曖昧なままでも、AIは画面や処理を作ってくれます。
UIを変えると、ほかの部分にも修正が必要になった
手戻りが多かったのはUIです。
自分の中には「このような画面にしたい」というイメージがありました。しかし、それを文章や画面構成として十分に伝えていませんでした。
そのため、AIが作った画面を確認してから、次のような修正を繰り返しました。
- 表示する項目を変更する
- ボタンの位置や役割を変える
- 画面の移動方法を変える
- 入力する内容を追加する
- 保存するデータを変更する
画面だけを直せば終わると思っていましたが、実際には操作方法やデータの扱いもつながっています。
後からUIを変えると、それに合わせて処理やデータ保存も修正する必要がありました。
最初に画面の目的や操作を決めていなかったため、一つの変更が複数の場所へ影響しました。
必要な機能が消えていることもあった
AIへ指示しながら実装を進めていると、それまで使えていた機能が、修正後の実装から消えていることもありました。
画面一覧や機能一覧がなかったので、修正後に何を確認すればよいのかも曖昧でした。
画面ごとの完成条件を作っていれば、必要な機能が残っているかを確認できたと思います。
資料へまとめるべきだったこと
この失敗を振り返ると、最低限、次の内容は実装前に資料へまとめるべきでした。
- 誰の、どのような課題を解決するか
- 最初の公開へ入れる機能
- 最初の公開では入れない機能
- 利用者が目的を達成するまでの主要な流れ
- 必要な画面の一覧
- 主要画面の目的、表示内容、操作、状態
- 入力したデータの保存方法
- MVPの完成条件
実装前に完成条件を決める
私に足りなかったのは、実装前に確認する基準でした。
- 何を作るのか
- 今回は何を作らないのか
- どの状態になったら完成なのか
これらを文章で共有しないまま実装を始めたため、出来上がったものを見てから判断することになりました。
MVPに必要な画面、機能、データ、完成条件は、実装前に整理しておくべきでした。
まとめ
今回の開発では、大まかな要件だけで実装を始めたため、UIや処理、データ保存の修正が何度も発生しました。
振り返ると、実装前に必要だったのは次の準備です。
- 大まかなアイデアを画面ごとの機能へ落とし込む
- 主要な画面遷移を決める
- 表示、操作、保存するデータを整理する
- MVPへ入れるものと入れないものを分ける
- 画面や機能ごとに完成条件を決める
- 実装前に自分とAIの完成イメージを合わせる
AIは、指示した内容を素早く実装してくれます。
だからこそ、実装を始める前に「何を、どこまで作るのか」を決めておくことが大切でした。