創刊準備号 · 2026年秋English · RSS
AgentKoji

コーディングエージェントの選び方

IDE型・CLI型・クラウド型の違いは入口にすぎない。どれを選んでも事故が起きた5つの場面と、編集部が使い続けている運用の型。

「どのコーディングエージェントがいいか」という質問には、正直なところ「どれでも、運用の型がなければ事故が起きる」と答えるしかありません。この記事では、最初にタイプの違いを整理し、そのあと編集部がどのタイプでも実際に踏んだ5つの事故と、その対策を紹介します。

3つのタイプ

タイプ動き方向いている作業注意点
IDE型エディタに組み込まれ、補完から複数ファイルの編集まで手元で見ながら速く書く差分しか見えないので、全体への影響を見落としやすい
CLI型ターミナルで動き、コマンド実行やテストまで自走する自動化、検証のループ、大きめのリファクタシェルの罠を踏む(後述)
クラウド型リモートのサンドボックスで非同期に作業し、PR を作る並列で回す、独立したタスク完了報告と実物のずれを確かめる手間が増える

編集部の現在の使い分けは、ふだんの実装は CLI 型、コードレビューは別系統のモデル、大量の定型処理(分類や翻訳)はいちばん安いモデルです。定型処理はかなり安く、記事299件の翻訳が数分・約0.1ドルで済みました。ただし1回の呼び出しに固定のオーバーヘッドがあるので、少量を何度も呼ぶと割に合いません。

プランごとの月額と API の目安は「Claude Codeの料金の実際」にあります。Claude Code をこれから入れる人は、インストールから最初の変更までを「Claude Codeの始め方」にまとめました。

事故1:完了報告を信じた

「6コミット先行、PR作成済み」という報告が、実際にはツール呼び出し0回だったことがあります。詳しくは「AIの「完了しました」を信じない仕組み」に書きました。対策は、git の実数を毎ターン表示させることと、「完了の断定」と「実数との矛盾」が両方そろったときに止める hook です。

事故2:作業ディレクトリが持ち越された

CLI 型のエージェントでは、シェルの状態が呼び出しをまたいで残ります。cd lp && npm install のあとに並列で出した3つの呼び出しが、全部サブディレクトリで走ってしまいました。その結果、設定の編集が失敗し、lint は空振りし、空のディレクトリを2回デプロイしました。

# 呼び出しをまたいで状態に頼らない
npm --prefix lp install
git -C /abs/path/repo status
( cd lp && npm run build )

シェルが zsh の環境では、さらに罠があります。$VAR が単語分割されない、path という変数名が PATH を壊す、glob が一致しないとコマンドがエラーで止まる、などです。

環境変数が「設定したのに効かない」ときの切り分けは、「Claude Codeで環境変数が効かない」にまとめました。

事故3:サブエージェントが親のモデルを継承した

並列で動かすサブエージェントは、モデルを指定しないと親と同じモデルで起動します。高価なモデルで15体が走り出し、慌てて止めました。いまは起動する前に「何体を、どのモデルで」と1行で宣言させています。

逆に、小型のモデルに連鎖するリファクタを任せたら、「テスト1本で足りる」と自分で判断して既存のテストを195行消しました。小型のモデルに任せるのは、1〜2ファイルで、仕様が明確で、削除を含まない作業だけにしています。

並列運用で踏んだほかの失敗は「サブエージェント並列運用の失敗集」にまとめています。

事故4:レビューを「0件になるまで」回した

状態遷移・競合・ライフサイクルを含む変更は、別系統のモデルで指摘が出なくなるまでレビューを繰り返します。ある機能は18周かかり、重大な指摘(P1)が6件、中程度の指摘(P2)が16件出ました。1か所直すたびに、次の競合が見えてきました。

一方で、7周しても件数が 4→3→4→1→3→2→4 と減らず、人間のレビュアーに止められたこともあります。いまの打ち切りの基準は、件数ではなく指摘の中身の変化です。「もっと厳密にできる」という理想論ばかりになったら締めます。P1 は直し、P2 は2周目までに直して、残りは既知の課題として記録します。

打ち切りの判断と CLI の罠は「AIコードレビューは何周で止める?」に書きました。

事故5:権限の分類器を説得しようとした

エージェントの安全分類器は、実行内容ではなくコマンドの文字列を見て止めます。Issue の本文に delete from … と書いただけで「大量削除」として拒否されたことがあります(DB には触らない操作でした)。会話の中でユーザーの同意を取っても、本番への書き込みは通りません。

分類器を回避しようとするのはやめました。いまは段取りの段階で、読み取りはエージェント、書き込みは人と分けています。書き込みが必要なときは「確認の SELECT → 書き込み → 検証の SELECT」を1本のスクリプトにまとめ、人に1回だけ実行してもらいます。マージも人が行います。

読み取りと書き込みの分け方は「AIエージェントの権限設計」で詳しく扱っています。

どれを選ぶか