世界を動かす技術を、日本語で。

エージェント工学パターン

概要

  • Claude CodeOpenAI Codex などのコーディングエージェントを活用する際の最適な利用パターンを解説
  • 効率的な プロンプト設計 やフィードバック方法のポイントを紹介
  • コーディングエージェントから 高品質な出力 を得るための工夫
  • エージェントの 限界 や注意点にも言及
  • 実践的な テクニック のまとめ

コーディングエージェント活用パターン

  • ゴールの明確化

    • 目的や期待する出力例の簡潔な提示
    • コードの用途や制約条件の明記
  • 具体的なプロンプト設計

    • 必要な入力・出力フォーマットの指定
    • 言語やフレームワーク、バージョンの明示
    • 関数名や変数名など、命名規則の共有
  • 段階的な指示出し

    • 複雑な処理は小さなタスクに分割
    • ステップごとに確認・修正を繰り返す方法
  • 例示とサンプルの活用

    • 期待するコード例やテストケースの提示
    • 入力値と期待される出力例の併記
  • フィードバックの具体化

    • 間違いや改善点は明確に指摘
    • どの部分を修正すべきか具体的に伝達
  • 反復的なやりとり

    • 一度の出力で満足しない姿勢
    • 少しずつ要件を追加・調整しながら精度向上
  • エージェントの限界理解

    • 長大なコードや特殊なAPI利用時の注意
    • セキュリティや最適化の最終確認は人間によるレビュー必須

より良い結果を得るための実践テクニック

  • 自然言語とコードの併用指示

    • 英語・日本語問わず、コメントや説明文の活用
    • コード例とその説明を交互に提示
  • エラーやバグ発生時の対応

    • エラーメッセージや実行環境情報の共有
    • 修正後の再テスト指示
  • ドキュメント生成やリファクタリング依頼

    • コードの説明やコメント追加の依頼
    • 可読性や保守性向上のためのリファクタリング指示
  • 複数案の提案要求

    • 別アプローチや異なるアルゴリズムの提案依頼
    • 比較検討の材料として活用
  • 最終レビューと検証

    • 出力コードの動作確認
    • セキュリティやパフォーマンスの二次チェック

コーディングエージェント利用時の注意点

  • 著作権やライセンスの確認

    • 出力コードの利用規約やライセンス遵守
  • 個人情報や機密情報の入力回避

    • セキュリティリスクの低減
  • バージョンアップやAPI変更への追従

    • 最新環境への対応状況確認
  • 過信せず、最終判断は人間が行う姿勢

    • エージェントは補助ツールという認識

Hackerたちの意見

StrongDMのダークファクトリーの原則は、すぐに実行可能だと思うよ(ごめんね、サイモン!): https://factory.strongdm.ai/principles

それに賛成!時には問題に対してトークン燃料を投げる価値があるし、進めながら検証していくのもアリだよね。

何も謝ることはないと思うよ。彼は数週間前にそれについて書いてたしね。 https://simonwillison.net/2026/Feb/7/software-factory/

最近、エージェント的なコーディング/エンジニアリングをたくさん試してみたんだけど、簡単にテストできるソフトウェアがこのエージェントループにぴったりだと気づいた。実験の一つでは「Linuxバイナリをより良い圧縮でダウンロードしやすくする」というシンプルな目標を持ってたんだ。[1] 圧縮はこれに最適。簡単に検証できる(バイナリ -> 圧縮 -> 解凍 -> バイナリ)から、各イテレーションで何かしらの進展がないと、その試みは捨てられるべきだよ。私が学んだことは以下の通り:- マイクロマネジメントはしないこと。AIはアイデアを出すのが得意だから、あまり干渉しなくていい - テストハーネスが全て。検証する方法がないと、ループが迷走する - イテレーションを実験させる。AIにアイデアを探求させたり、実験で壊させたりするのが大事。イテレーションが長くなるかもしれないけど、その実験は次のイテレーションにとって価値がある - セッションの合間にいくつかの.mdファイルをメモ代わりに残しておくと、各イテレーションが前の実験や試みから学べるよ。[1] https://github.com/mohsen1/fesh

本当に良いテストが必要だよ。変な方法でバグるからね(経験豊富なプログラマーはコーディング中に脳内でループを回してると思う)。いいニュースは、エージェントは新しいテストを追加したりバグを見つけたりするのが得意だってこと。そういうのをやろう。ユニットテストやプレイライトもやってみて。ウェブドライビングで全てをテストするのはエージェント以前は狂気の沙汰だったけど、今は十分可能だよ。

テストハーネスのポイントは、私にとっても本当に印象に残っている。ブラウザの自動化作業にエージェントループを使っていて、そのドメインには自然なバリデーションシグナルがある。つまり、ブラウザセッションが実際のユーザーのように振る舞うか、そうでないか。そういう二元的なフィードバックがループをきれいに閉じる。私たちの場合、"正しく振る舞う"には2つのレイヤーがあって、機能的(正しくナビゲートできたか?)と行動的(検出システムにとって人間に見えるか?)。エージェントは最初のレイヤーには問題ないけど、2つ目には直感がない。行動的バリデーションをループに組み込むことが、実際に役立つものにした。セッション間の.mdのスクラッチパッドは過小評価されている。私たちはそれを短い決定ログに形式化した。何が起こったかの要約ではなく、明白でない選択とその理由だけ。次のセッションにおいて「私たちはXを試した」と「私たちはXを試したが、Yのせいで失敗したのでZを使う」というのは大きな違いだ。

「テストハーネスが全てだよ。作業を検証する方法がなければ、ループは迷走する」これがAIコーディングエージェントを使う上で最も重要なポイントだね。彼らは本当に魔法のような機械で、多くの開発や一般的なコンピューティング、データ収集のタスクを簡単にこなせるけど、決定論的で実行可能なチェックやテストがなければ、ループの一回目から次の回にかけて何も保証できないよ。

私は主にAIをワークフローで簡単なボイラープレートや問題解決、ドキュメントのために使ってる。エージェント的な作業にも時々手を出してるけど、あまり印象的な結果は出てない(まあ、機能する出力があるだけでもすごいけど、文句を言いたくなるようなコードではない)。同じことを言う人が多いけど、尊敬する人たちの中にはもうほとんどコードを書かないって言ってる人もいる。これをうまく整理するのはちょっと難しい時もあるね。とにかく、この本が進化する中で、いくつかのパターンを試すのが楽しみ。どうやって他の人がこれらのツールを使っているのかを理解するのは、私にとって大きなギャップだよ。

最後に試したのはいつ?エージェントに大きなタスクをやらせるのは、去年の終わりまでずっと当たり外れがあったと思う。ここ数ヶ月で彼らがかなり良くなったのを感じてる(私だけじゃないけど)。コーディングアシスタントが得意なことの私の経験は、スマートオートコンプリートから、ターゲットを絞った変更/追加、そしてフルエンジニアリングへと変わったよ。

私もあなたと同じような状況だったけど、DHHがエージェントの使い方を変えたって投稿を見てから変わった。彼がLex Fridmanとのトークで話していたアプローチは私のと似ていて、ハイプの中で一つの常識の核のように感じた。だから、彼がアプローチを変えたと言ったとき、もう一度見直してみた。今は毎日エージェント(Claude code)を使ってるし、毎日コードも書いてるよ。(この立場を強化するために、OpenCodeのDax Raadも同じことを言ってる)。モデルがプロダクションのコードベースを持つことができるとは思えないし、エンジニアは責任を持つために十分なスキルを維持する必要があると思ってる。エージェントは多くのことに役立つけど、通常は先行事例がたくさんあるパターン化されたコードに限る。CCはポーラーズコードを書くのが一貫して苦手だと思う。正直、エージェントを使うのは全然楽しくないし、誰もがこれがどうなるかを本当に知っているとは思えない。でも、自分でツールを使うことで、ハイプの中で現実感が強くなった気がする。

私の経験では、単一のエージェントからの最初のイテレーションの出力は、私が責任を持ちたくないものだよ。「もうコードを書かない」というのとつながるのは、出力を改善するためのイテレーティブなプロセスだね:1) エージェント間でレビューのループを持つ(別の「レビュアー」エージェントを生成する)ことと、明確なテスト/評価基準が、結果をかなり改善してくれた。2) 手動でレビューして改善の指示を出すことが、私が責任を持てるコードを得るためには必要だよ。

これをうまく調整するのはちょっと難しい時もあるよね。私の経験では、これはタスクによって大きく変わるし、良いフィットと悪いフィットの間には大きな溝がある。人によっては、その溝の片側だけで作業して、もう片側に戸惑うこともあると思う。

Hacker Newsで議論の続きを見る