健康DXとしてGoogle HealthConnect上のデータを、Google SpreadSheetに出力するスマートフォンアプリを作っています。下の図のようにChatGPTにソースの生成をお願いしては、ソースを書いてもらって、そのソースをAndroid Studioに貼り付けて、ビルドしたりデバッグしたりとしています。ビルドでエラーがでるとChatGPTにエラーを伝えてさらに修正案を出したもらったりと開発者を中心に生成AI(ChatGPT)とIDE(Android Studio)を行き来して開発を進めています。

生成AI(対話)を用いた開発の課題
生成AI(ChatGPT)は、対話を重ねることでプログラムもサポートしてくれソースを示してくれるなどプログラミングもずいぶんと楽になりました。今回のスマートフォンアプリを作る時にKotlinというJavaベースの開発言語を使っていますが、私にとっては初めての取り組みです。それでもChatGPTのサポートを得ながら、プロジェクトを作り、ソースを一つ一つ足していき、テストをしながら徐々に機能を改善してきました。
ただ、課題もありそれはやり取りがとても多くなることです。何かを考えるのはChatGPTとやり取りを重ね、具体的なソースコードができれば、IDE(Android Studio)を使ってビルド。ビルドエラーが出ればChatGPTと確認し、改善版のソースを取得。改めてIDEでビルドの繰り返し。ビルドが通れば実機でのテスト。テストの状況によってはさらにChatGPTとのやりとりを重ね修正や改善をひたすら繰り返す。その間、状況を見失わないようにバックログもChatGPTで管理してもらっています。
ChatGPTはとても役立っていますが、こちらの能力不足も重なってかなりやり取りが多くなっています。もう少しゆだねることができればと思うところです。
AIエージェントの活用
最近では、AIエージェントを用いた開発が取りざたされています。開発でやりたいことを伝えて開発者の代わりにAIエージェントがソースを書き、問題があれば自己解決を図り、さらにテストやビルドも実行させることが可能です。今回、ChatGPTを利用していることもあり、CODEXを利用します。最近ではGitHub Copilot, Claude Codeなどのコーディングアシスタントも出てきていますが、まずはChatGPTの契約の範囲内で利用できるCODEXを使うことにしました。
それぞれの関係は以下のようになります。開発者とAndroid Studioとの間にCODEXが介在するようなイメージです。実際にはAndroid Studio上のターミナルでCODEXを実行していますので図としては少し違和感があるかも知れません。

生成AI関係性の変化
CODEX利用の前後で生成AIに期待する役割が変わってきます。以下表にまとめます。
| フェーズ | ChatGPTのみ | ChatGPT+CODEX |
| プログラミング内容の検討 | ChatGPTと対話で検討 | 同左。さらにCODEXへの依頼用のプロンプトの作成を依頼。 |
| ソースコードの作成・修正 | ChatGPTと対話で生成されたソースをAndroid Studioに貼り付ける。まれにソースが正しくないこともあり、その場合は現在のソースをChatGPTに貼り付けて見直し案を出してもらう。 | CODEXで開発の計画と段取りを検討する。その後、ソースの修正を検討する。実ソースを見ながら検討してくれる。検討したものが妥当か開発者に確認する。 ※この過程で別の問題を検出したりもする。 |
| ビルドとビルドエラーへの対応 | IDE上でビルドを指示し、エラーメッセージがでたら、エラーメッセージをChatGPTに貼り付けて修正案を作ってもらい、また上記とおなじようにソースを修正する。 | CODEXの中でエラーを検出し、自動的に修正再度ビルドと自律的に改善を進めることもできる。内容によっては開発者に続行してよいか判断を求める。 |
| テスト | 開発者がテストコードを書くか、画面操作しテストを行う。テストで問題が生じれば、またChatGPTとやり取りしつつ改修を進める。 | テストの内容を指示し、パラメーターのバリエーションを試すことができる。その後、ある程度確認ができた段階で、開発者がテストを行う。 |
対話型の生成AIの利用は、開発者の能力を補完する目的で使います。対話で開発や修正の内容を考えたり、ソースコード作ってもらったり。但し、実際の開発は開発者がIDEと行います。まれにIDE上のソースコードとChatGPTが返すソースコードがマッチしない場合もあり、そういう時にはIDE上のソースをChatGPTに渡して再検討を促したりもします。基本的には開発者の能力を補助する役割で利用しています。
一方、AIエージェント(CODEX)を適用した時には、開発者がソースコードは書かなくてもよくなります。細かいところや開発者としての手直しはこれまで同様IDEを使って行えます。ただ、基本的にはやりたいことを文章で伝えて、CODEXが内容を咀嚼しどのソースをどう修正するかとか、新たなクラスを追加しようとか考えて実装案を示してくれます。開発者はCODEXは、判断が必要なところでは開発者に継続してよいかなど問い合わせを出してきます。例えば、開発内容をもらい具体的な開発の段どりがて来た時などです。それに対して進めるか、さらに修正するか、やめるかなど判断します。
開発者と絵には書きましたが、エージェントを使った場合はCODEXも開発者となり、人間の開発者はCODEXの行いを監視し、問い合わせに答えることで開発をマネージメントします。役割が少し変わる印象です。
実際にエージェントと開発を行う
今回、スマートフォンアプリの修正が進むにつれソースの規模も増えていき、ChatGPTが生成するソースをIDEへコピペする作業も増えていたこともあり、エージェント開発への切り替えを行いました。以下のような実際の開発項目を実施してみました。
- 睡眠時間の集計方法見直し(origin単位)
- 画面スクロール制御や手入力の値を分かりやすく見直し
実際にこれらを進める上で、課題も出てきました。以下に課題と対応を記載します。
課題1.CODEXヘの指示が書けない。
これまでChatGPTと対話で解決していたことを、一つの指示でCODEXに渡す必要があり、どれだけ細かく指示を書くかなど頭を悩まします。これは、ChatGPTにCODEX向けの指示プロンプトを書いてもらうことで解決をしましたが、詳しくはまだ検討中です。毎回すべての指示を書く必要が無いように README.mdにこのアプリのことを書いたり、Project_map.md にプログラムの構成を書いたりとするのですが、それらもすべてChatGPTに作ってもらいます。それらをIDE内のプロジェクトフォルダに置くことで必ず理解して欲しい内容をもれなく伝えることが可能になります。そういうCODEXの使い方については継続してChatGPTにサポートしてもらっています。
課題2.CODEXを過信し、挙動がおかしくなった。
睡眠時間の集計方法を見直しを指示した時に、もともとうまく動いていた機能が動かなくなる問題が発生しました。具体的にはスマートフォン上のHealthConnectデータへのアクセス宣言が取れていない時に、これまでは権限設定画面を出して設定を促していましたが、なぜか勝手にエラーを表示する処理になっていました。
今回のように明確に気が付けは、今回の修正でこれまで上手くいっていた処理がうまく行かなくなったことを具体的にCODEXに伝えて処理の復元を指示することも可能です。また、本来はこのようなミスが起きないように、修正を必要最低限にとどめるとか関係ないソースには手を出さないような指示を付け足すこともします。修正内容の確認があった時に気づけた内容でもあったため、あまり内容を見ずにOKを出すとこのようなことも起きるのでしっかり内容を吟味し作業の継続の可否を判断する必要があります。
課題3.安心して開発するために。
これはgitを適切に運用しましょうという話です。エージェント開発に限らず復元できるポイントを決め、上記の課題2のような問題が発生し、ソースを改造し続けることが困難になった場合、適切なチェックポイントに戻ることをできるようにします。
その為、CODEXと修正を進める前にチェックポイントを設け、開発・テストが終わって問題がないことを確認したらコミットするなどのgitを適切に運用することで安心してエージェントにソースを作ってもらうことができるようになります。私自身、gitの操作を忘れがちになる為、CODEXの中でgitまで指示ができるようになればとは考えています。
最後に
エージェント開発への開発手法の変更は、やるまえはかなり大変だと思っていましたが、環境はかなり整っており、ChatGPTのサポートを受けながら比較的順調に進めることができました。今後、少しづつ難しい内容の修正にもチャレンジしエージェントを用いた開発手法にも慣れていきたいと思います。