本記事は、技術的なものではなく、AIを利用したアプリ開発の感想ですw
アプリを作成する際のこれまでの AI の使い方として、
- コードを書いているときに、部分的にコード生成してもらう
- コードレビューの際に、説明してもらう
- コメントを生成してもらう
- ソースレビューしてもらう
という感じの使い方でした。
バイブコーディングが一般的になってきているとのことなので、アプリ開発に最初からAIを使ってみるとどうなるだろうと思い、今回試してみました。
やろうとしたこと
全く新しいアプリのアイディアが思いつかなかったので、現在リリースしているアプリを作り直してみることにしました。
Android / iOS それぞれで開発していたので、これを機会に Flutter で1コードにしてしまうのも良いかと考えました。
環境・対象
開発対象や環境は以下。
- 統合環境 : VSCode
- 開発FW : Flutter
- 対象 : Android / iOS
- AI : Github Copilot Pro
なお AI に関しては、基本的には Agent (GPT-5 mini) モードでのチャットを中心に利用しました。
進め方
勉強不足なため効果的なプロンプトではなく、軽い感じで会話しながら始めました。
最初はアプリの概要を伝え、プロジェクトの作成から行なってもらいました。
- Flutter でモバイルアプリを作りたい
- アプリの概要と機能の説明
- 複数端末間で同期が取れるように、Google Drive を使いたい
大枠を Copilot に作成してもらったところで、細かい画面設定や機能を少しづつ追加・修正していく感じで進めました。
まだ完成では無いのですが、自分で利用する分には問題なさそうなところまでは作成できました。
この時点で、コードの9割以上はAIが書きました。
中身はほとんど見ていません。
感想
プロンプトに工夫がない割には動くものが出来上がっていくことに、正直すごいなと思いました。
プログラミング知識が浅くても、正常系ならそれなりに作れそうなレベル。
画面なども曖昧な指示でもそれなりの形ができる。
そこから少しづつ指示を与えていくことで、理想の形まで改善していける。
必要なパッケージなども探してきて使ってくれました。
同期処理なども、Agent Chat でお互いに提案しながら仕様を固めて、あとは「実装お願いします!」で OK。
確かに、ビギナー開発者は不要かもしれないし、なんなら企画・営業の人がプロトタイプくらいなら作れそうです。
課題・悪い点
とはいえ、色々と課題は多そうです。
ただ今回は GPT-5 mini を使っていたので、プレミアムモデルを使えば以下のある程度は解決するのかもしれません。。。
Agent の考える時間が長い
問いかけて回答を待つ間に他のことをしていると、忘れた頃に終わっていたりと無駄な時間ができたりしました。
熟考の末にコード破壊されると頭に来ます。。。
回答できないものは何度やってもダメ
不具合対応や改善指示を出した際、色々言い換えても全く解決できないことが時々ありました。
ひどい時には、修正指示を出すたびにソースが破壊されてエラーが増えていくこともありました。
最終的にロールバックしてやり直すか、自分でソース修正することになりました。。。
なんで消すの?
指示した内容は修正してくれているのに、ビルドエラーが発生。
よくみると今回とは関係ない必要な関数を丸ごと消したりしていたことが度々ありました。
差分を見ると修正が多いなと思ったら、微妙にインデントを変えていたり。
不要な修正もよく発生します。
Accept All は危険ですw
無駄なコードが多い
少しづつ指示して作っていくと、指示ごとにコードが生成されることが多いです。
自分で書く場合は、9割同じコードの関数は1つにまとめますが、生成された場合はそれぞれの関数になったりします。
同じ関数を使い回すようにプロンプトを書けば良いというような記事を見かけますが、それだとコードを読む必要があり、だったら自分で書いたほうが早い、となりそう。。。
関数が長い
確かに機能しますが、ダラダラと長い関数になって非常に見づらいコードが出来上がってました。
特に Widget の build() 関数などが長くなると、ものすごく見づらいです。。。
コメントが少ない
生成されたコードはコメントが少ないので読みづらいです。
コメントも書くように指示を出しとけば良かったのかもしれない。
後からコメント追加してもらうことはできるし、説明もしてもらえるので、大きな問題にはならないですが。。。
結局、細かな修正は人力で
ある程度は動くものが作れました。
とはいえ、リリースできるかというとそこまでの精度はなく、細かいところはたくさん修正する必要があります。
その際は結局コードを読む必要が出てくるのですが、ここまでコードを読んでないので課題を見つけたり、コードを理解するのに時間がかかってしまいます。
そうしていると、全体で見ると効率が良かったのかどうかはよくわからないです。。。
結論
- バイブコーディングは、初心者や開発者でない人がプロトタイプレベルを作るには便利かもしれない。
- 効率や精度を上げていくには、プロンプトの書き方を学んでいく必要がある。
- 良いものを作るには、やはりある程度のプログラミングの知識と経験は必要。
ということで、プロンプトの書き方を学んでいくことと、高度なモデル(高い)を使ってみることも今後試してみたいと思いました。
雑感記事でしたが、以上です。