- AIコーディングモデルが単一の命令すら信頼性高く実行できない現実にもかかわらず、バックグラウンドで自律的に動作するエージェント型コーディングへの過度な期待が生まれている
- 筆者は100行規模のGolang関数を参照コードとして提示したにもかかわらず、GPT-5とGemini Proの両方で一部ロジックの欠落や更新漏れを経験した
- エージェント型システムが50個のファイルと多数の関数を自律的に処理するのは、現在の技術水準では非現実的であり、かえってデバッグにより多くの時間を要する危険がある
- コミュニティの反応は、体系的なプロンプト設計、ドキュメント化、段階的検証によって限定的に成功活用できるという意見と、エージェント型はまだ実用的ではないという懐疑的な意見に分かれた
- 現在のLLMは知能ではなく知識ベースのシステムであるため、開発者が自ら文脈を与え、段階ごとに検証する「道具としての活用」が現実的なアプローチである
元記事執筆者の問題提起
- 単純な命令の失敗事例: 100行のGolang関数を参照として提供し、別の関数を同じ構造に更新するよう依頼したが、GPT-5とGemini Proはいずれも一部ロジックを省略したり、更新を見落としたりした
- エージェント型コーディングの非現実性: 単一関数すらまともに処理できない状況で、50個のファイルにまたがる多数の関数を自律的に修正するエージェント型の方法は、さらに多くの問題を引き起こしかねないと懸念されている
- 6000行ファイル更新への質問: Stripeのバージョン更新のように、6000行規模のファイルを安全に修正する方法についてコミュニティに意見を求めた
前向きな活用事例と方法論
体系的なドキュメント化とインデックス化のアプローチ
- Markdown参照ファイルの活用:
.md ファイルにリファレンスを保存し、AIにそれを読ませるよう指示すると、一貫性と正確性が向上する
- 例示プロンプト: "添付の
goLang_Update_reference.md ファイルを参照して、update関数の重要ポイントを要約し、それを基にソフトウェア更新のドラフトを作成してください"
- ローカルインデックスの構築: 大規模ファイル(6000行以上)の場合、1000行単位でスキャンして関数名と行参照を含むインデックスを生成する
- フロントエンド作業時には
fr.index.md など、特定領域だけを分離したインデックスを活用
エージェント管理と作業の構造化
- エージェントの専門化: 設計(architect)、コード探索(codeseeker)、コーダー(coder)など役割別のエージェントを構成し、それぞれに対応した
.md ルールファイルを与える
- バーティカルスライスのアプローチ: 10万トークン以下で完結できる小さな機能単位に作業を分割する
- 10万トークンを超えるとエージェントの誤作動可能性が急増する
- 作業文書化の強制:
docs/TASKS.md, docs/WORKLOG.md, docs/DECISIONS.md の更新を必須にして、作業の継続性を確保する
Plan ModeとAsk Modeの活用
- Plan Mode: プロジェクト全体をレビューし、要求に応じて計画を立てたうえで段階的に進行する
- Ask Mode: コードベースへのクエリ、アイデア探索、選択肢の検討などに活用し、GoogleやStackOverflowの代替ツールとして有用
単体テスト先行アプローチ
- テスト駆動開発: 関数を書く前に単体テストを先に作成し、AIがテストを通過するコードを繰り返し生成するようにする
- 機能的に正しいコードを得られる確率が大幅に上がり、その後は最適化や整理作業だけで済む
懐疑的な意見と限界認識
エージェント型の現実的限界
- 監督なしの作業は自殺行為: 現在の技術水準でチケットを割り当て、バックグラウンドで自律的に作業させるのは失敗確率が高い
- 虚偽を語る可能性: モデルは成功するよりもハルシネーションを生み出す可能性のほうが高く、最悪の場合は既存コードを破壊しかねない
- Planning Modeの重複性: ベースモデルに詳細な計画を求めるだけでも十分であり、Planning Modeは実質的に新しい機能を提供していない
LLMの本質的制約
- 推論ではなく予測: モデルは結果を検証せず、次の単語を予測する方式で動作するため、grounding、memory、feedbackが改善されるまでは信頼性は不安定なままだろう
- 知能なき知識ベース: LLMは知能を持たない高度化された知識ベースであり、開発者が自ら知能(BYOI: Bring Your Own Intelligence)と文脈を与える必要がある
- メモリ不足: モデルには真のメモリがなく、contextとcontext cacheにのみ依存しているため、新しいチャットを始めるたびに文脈が初期化される
言語とデータのバイアス
- Golangの相対的不利: GolangはPythonやJavaScriptに比べて公開コードベースが少なく、モデルが学習したパターンや慣習が不足している
- これは一貫した編集や変換結果を得にくくする構造的要因である
成功活用のための実践ガイド
プロンプト設計と文脈の提供
- 明確で詳細な指示: 文法と句読点を正確に使い、曖昧な表現ではなく明示的な指示を与える
- 関連ファイルをすべて明示的に参照: エージェントが使うべきファイルをすべて指定しないと、スパゲッティコードが生まれる確率が上がる
- ルールファイルの設定: ワークスペース全体のルールとプロジェクト別ルールファイルを設定し、一貫したコード生成を促す
- @Docsの活用: エージェントに必要な中核知識を与えるため、ドキュメント参照機能を活用する(一部バージョンでは動作が不安定)
作業範囲と検証
- 小さな単位への分割: 一度に処理できる最小単位まで作業を分割し、各段階を検証してから次へ進む
- リアルタイムレビュー: 生成されるすべてのコードをリアルタイムで確認し、即時に修正を依頼してスパゲッティコードを防ぐ
- バックアップとバージョン管理: 各段階ごとにバックアップを作成し、GitHubなどのバージョン管理システムを活用する
- テスト実行:
pytest --testmon -q で影響を受けるテストを増分実行し、完了前に全体テストを実行する
モジュール化とコード構造
- 6000行ファイルの分割: 単一ファイルで6000行はモジュール化されておらず、文脈提供にも不利なため、500行規模の12ファイルに分割するほうが効果的
- バーティカルスライスの重視: エンドツーエンドで実行可能な小さな機能単位で開発する
モデル選択とコスト管理
- Claude Sonnet 4.5を優先検討: GPTやGeminiより一貫性と正確性が高く、追加コストに見合う価値がある
- トークン消費に注意: 大規模な計画は多くのトークンを消費するため、実行時には小さな段階に分けて進めるほうがコスト効率が良い
特殊なユースケース
一回限りのスクリプト生成
- 分析スクリプト: 1日に数百本の一回限りのデータ分析スクリプトを書く必要がある場合、正確性が50%でも手作業で書くより1000倍速く生成・実行できる
- 結果の検証可能性: 結果を自分で検証できるため、精度が低くても実用的
ゼロからのアプリ構築
- マルチエージェント構成: 大規模アプリをゼロから構築する際、監督エージェントが他のエージェントの作業をレビューし、一貫性を維持する
- import名、変数名の一貫性、コード重複の防止などに有効
- コスト対効果: それでも複雑な修正やリファクタリングが必要であり、段階的アプローチのほうが長期的には安価
コミュニティ意見の要約
前向きな体験(生産性3〜5倍向上)
- Next.jsのWebサイト: ゼロから完全に動作し、デプロイ可能なWebサイトを数分で構築
- 複雑な機能実装: チャットアプリにthreads機能を3〜4分で実装(本来は3日程度の作業量)
- 体系的アプローチ時: 明確なルール、十分な文脈、段階的検証を組み合わせれば、一貫して成功できる可能性がある
否定的な体験(現時点では非実用的)
- スパゲッティコードの量産: 広範な目標を与えると、文書更新漏れ、不要ファイルの未削除などの問題が起きる
- 意味的な誤り: 技術的には動作しても、コードの配置が不適切だったり、既存関数を再実装してしまったりするなど構造的問題がある
- 5分超の追跡失敗: 5分以上続く長い追跡は、たいてい役に立たない結果を生む
1件のコメント
Hacker Newsの意見