2週間使って少し見えてきた、暴れ馬を制御する的な開発手法

はじめに

AIエージェントを活用した開発が一般的になってきました。CursorやAmazon Qを使った開発を始めて約2週間ほどですが、最初はひたすら感動でしたが、進めていくうちに思い通りに進まないことが出てきました。

今回は、その経験を踏まえて見えてきた「AIエージェントと上手に開発するためのコツ」を備忘録的に残したいと思います。

AIエージェント開発で遭遇した問題

無計画な指示による迷走

AIエージェントを使った開発では、無計画に自然言語で指示を出していくと、取り留めなく自分の意思と違う方向に開発が進んでしまうことがよくあります。

・・・よね?私だけ??

具体的な失敗例:Streamlitアプリの無限ループ

実際に、Streamlitでアプリケーションを作らせた際には以下のような問題が発生しました:

  • 後付けの機能を足すことで、ネスト構造が深くなりすぎる
  • エラーがAIエージェントにも分からなくなる
  • 目視での解消も困難になる
  • 結果として無限ループのような状態に陥る

このような経験から、AIエージェントは強力だが、適切な制御が必要な「暴れ馬」のような存在だと感じるようになりました。

解決策:3つの基本原則

試行錯誤の結果、以下の原則を守らせることが有効であると感じています。

1. ステップバイステップ開発

一つ一つの機能実現を確認しながら開発を進める

  • 大きな機能を小さな単位に分解
  • 各ステップで動作確認を行う
  • 次のステップに進む前に必ず確認

2. 構造の明確化

なるべく構造がわかりやすくなるように、機能は関数やクラスに切り出して作らせる

  • 機能ごとに関数・クラスに分離
  • コードの可読性向上
  • デバッグの容易さ確保

3. ブランチ管理

一つの機能が動くところが確認できたら、ブランチを切って進める

  • 動作する状態を保存
  • 安全な実験環境の確保
  • ロールバックの容易さ

実践例:小遣いアプリダッシュボード開発

これらの原則を実際に試すため、以前AWS Lambdaの練習で作成した小遣いアプリケーションのデータを、スプレッドシートから読み込んでStreamlitで分析するダッシュボードを作成してみました。

事前準備:READMEでの要件定義

開発を始める前に、READMEファイルに明確な要件と手順を記載しました:

https<スプレッドシートのURL>というスプレッドシートを読み込んで、内容を分析するダッシュボードを作成したい。
以下の順番で開発を進めてください。
各機能はできるだけ関数やクラスに切り分けて開発すること。
各番号の内容を実装したら一度ストップして内容を確認します。

1. Gspreadを使ってスプレッドシートを読み込んで内容を確認
2. 読み込んだスプレッドシートの内容をstreamlitで表やグラフにするアプリケーションを作成
3. streamlit-cloudにデプロイするための定義ファイルを作成しデプロイ

結果

このREADMEをAIエージェントに読み込ませて開発を進めたところ、概ね思った形で開発が進行しました。

スクリーンショット 2025-06-18 23.32.30
dashboard

効果と感想

制御感の向上

正直なところ、このくらいの規模のアプリケーションなら、運が良ければ言葉の指示一発で作ってくれるかもしれません。しかし、「暴れ馬を制御できている」という感覚は気持ち良く、より大きなアプリケーションでも応用していけそうな手応えを感じています。

小規模なプロジェクトで培ったこの手法は、より大きく複雑なプロジェクトでも有効だと考えています。

まとめ

AIエージェントとの開発を成功させるには:

  1. 事前の計画と要件定義が重要
  2. 段階的な開発とその都度の確認で迷走を防ぐ
  3. 構造化されたコードでメンテナンス性を向上
  4. 適切なバージョン管理で安全性を確保

ここまで書いてて思ったんですが、AIに限らず、まあ 開発における「当たり前」 という気もします(笑 AIがこちらの想像より遥かに高い効率で開発してくれるからこそ、「当たり前」の手綱をしっかり握って進めていく必要があるのかもしれません。 この辺り、まだまだ勉強の余地がありそうです。がっつり使いこなしていけるようになりたいです。