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

クロードコードの優れた理由とは何か

2025年8月24日原文(minusx.ai)

概要

  • Claude Code は、シンプルかつ直感的なAIエージェント体験を提供
  • 複雑な仕組みを避け、単一ループと明快なツール設計 を重視
  • claude.mdなどのコンテキストファイル でユーザー設定や好みを反映
  • LLM検索中心の設計 でRAGに依存せず、モデル本来の力を最大活用
  • ツールやプロンプト設計の工夫 が、他のエージェントとの差別化要因

Claude Codeが「使っていて気持ちいい」理由

  • Claude Code は、ターゲット編集や使い捨てツールの操作が快適なエージェント体験を実現
  • 適度な自律性 を持ちつつ、ユーザーの制御感を損なわない設計
  • Claude 4モデル (特にinterleaved thinking)が主要な処理を担当
  • CursorやGitHub Copilot Agents と比較しても、使い勝手が圧倒的に優れている
  • MinusX の開発現場でも即採用されるほどの実用性

Claude Codeの設計思想と学び

  • LLMの得意・不得意を理解した設計 で、弱点をプロンプトやツールで補完
  • コントロールループは非常にシンプル で、デバッグも容易
  • 複雑なマルチエージェントやRAG検索は極力排除 し、保守性と拡張性を両立
  • 全てを1ファイルにまとめ、不要なボイラープレートを排除

Claude Codeの設計を自作エージェントに活かすポイント(TL;DR)

  • 設計はとにかくシンプルに保つことが最重要
  • メインループは1つ、分岐は最大1つ、メッセージ履歴も1つだけ
  • 小型モデル(例:claude-3-5-haiku)を多用 し、コスト最適化
  • ユーザーコンテキストはclaude.md等のファイルで厳密に管理
  • プロンプトはXMLタグ・Markdown・豊富な事例で構成
  • LLM検索を中心に据え、RAGベース検索は極力使わない
  • ツールは低・中・高レベルをバランス良く用意
  • エージェント自身がToDoリストを管理し、タスクの見失いを防止
  • トーンやスタイルなどの美学も明示的に設計

コントロールループ設計

  • メインループは1本化 し、デバッグ性を最優先
  • 階層的なタスクはサブエージェント(分岐最大1つ)で処理
  • メッセージ履歴はフラットなリストで管理
  • サブエージェントは自己増殖不可とし、制御性を担保
  • 複雑なマルチエージェント設計は不要

小型モデルの活用

  • 重要なLLM呼び出しの半数以上がclaude-3-5-haiku
  • 大容量ファイルの読取や要約も小型モデルで十分
  • コスト削減効果が大きく、常用推奨

プロンプト設計

claude.mdパターンによるユーザーコンテキスト管理

  • claude.md/cursor rules/agent.md などのコンテキストファイルでユーザー設定を厳密管理
  • コードベースから推測できない好みやルールも明文化
  • リクエストごとにclaude.mdの内容を毎回送信

XMLタグ・Markdown・事例の多用

  • <system-reminder> タグでLLMへのリマインドを明示
  • <good-example> / <bad-example> でベストプラクティスを具体的に提示
  • Markdown見出しでプロンプト内セクションを明確化
    • 例:トーン・スタイル、プロアクティブ性、コーディング規約、タスク管理、ツール利用方針

ツール設計

LLM検索中心主義(RAG排除)

  • RAGではなく、LLMによるコマンド検索(例:ripgrep, jq, find)を重視
  • LLMがコードを深く理解し、柔軟な正規表現やコマンド生成が可能
  • RAG導入による複雑化・隠れた失敗モードを回避
  • RL(強化学習)による最適化も視野に入る設計

ツールのレベル分けと選定

  • 低レベル:Bash, Read, Write
  • 中レベル:Edit, Grep, Glob
  • 高レベル:WebFetch, mcp__ide__getDiagnostics
  • 頻繁利用・高精度が求められるものは専用ツール化
  • ツール選択基準や利用例をプロンプトで明示

ToDoリスト管理

  • エージェント自身がToDoリストを頻繁に参照・更新
  • 長期タスクや文脈の劣化(コンテキストロット)を防止
  • 柔軟なタスク追加・修正が可能な設計

ステアラビリティ(制御性)

  • トーンやスタイル、プロアクティブ性をプロンプト内で明示
  • 「PLEASE THIS IS IMPORTANT」などの強調も未だ有効
  • アルゴリズムやヒューリスティック、事例を活用し、望ましい動作へ誘導

このように、 Claude Code は「シンプルな設計」「強力なコンテキスト管理」「LLM本来の力の最大活用」「ツール設計の工夫」によって、他のエージェントと一線を画しています。自作エージェントにもこれらの原則を取り入れることで、 使っていて楽しい・気持ちいいLLMエージェント体験 が実現可能です。

Hackerたちの意見

GoogleのGemini(Pro?)とClaudeをコードに関して比べると、みんなはどう思ってる?Googleの製品は結構好きなんだけど、いつも何かを閉じちゃうし、企業のコントロール(Chromeや不正行為)や検閲に関してはちょっと手荒いよね。

Geminiは理由もなくコードを書いてくれないことが多かったし、仮想的な解決策についてだけ話してた。ツールの問題っぽいけど。

Ampの人たちによると、ClaudeのSonnet/Opusはツールの使い方が得意なんだって。

ウェブUI(チャット)について?実はGemini 2.5 Proがすごく好きなんだ。コマンドラインツール(ClaudeコードとGeminiコード)については?全然比較にならないよ。Geminiのコードは役に立たなかったし、Claudeのコードはほとんど遅いだけだった。

考えるのは結構得意だけど、コーディングはイマイチだね。コードを書くと、よくぐるぐる回って入力を無視しちゃう。役に立つのは、大きなコードベースを読み込んで必要な情報を抽出する時かな。特定のことを相談するためにClaudeからGeminiを使ったりもしてる。Opusもそんな感じだけど、もうちょっとコーディングが得意かな。Sonnetは、私の経験ではコーディングが得意なんだけどね。

Gemini Proがコーディングで必ずしも劣っているとは思わないけど、私の経験ではClaudeは「ターミナル」タスク(つまり、ターミナルでCLIを通じてモデルを操作すること)でかなり優れてる。ほとんどのCLIはClaudeを使ってるし、詳しくはhttps://www.tbench.ai/leaderboardを見てみて。

Geminiは、複数の関数呼び出しを追跡する必要がある難しい問題をデバッグするのに役立つと思う。Claudeはもっと予測可能で、指示に従うのが得意だと思う。管理しているtodoリストは、この点でとても役立つみたい。

システムコマンドでモデルを制御できたら、すごくいいと思う。でも、結局うまくいかなかった。モデルが冗長すぎて、助けになりすぎるんだよね。

最近のテストで、全体像を分析するのが結構賢いなって思ったよ(つまり、「テストが失敗してるのはあれのせいじゃなくて、全体の前提が変わったからだ。だからこのテストを最初から書き直そう」って感じ)。でも、何回か「ファイルを編集できない、詰まった、全然違う方法でやってみる」っていう風に行き詰まったこともあった。今のところ一番の違いはコミュニケーションスタイルかな。ちょっと…皮肉っぽい?「ああ、テストが失敗してるね、やっぱり」みたいなコメントがあるんだ。なんで初めて見るプロジェクトの失敗するテストを予想できるんだろう? :D

ジェミニは、自分のリポジトリ全体のマージファイルを入れて、いろいろ話し合うのにめっちゃ便利だよ。コードベース全体を理解するレベルがすごすぎて、素晴らしいアーキテクチャの計画支援もできる。クロードは全然そこまでできないね。俺の戦略は、ジェミニを使ってプロジェクトの濃い要約を作って、高レベルのアクションプランを立てること。その後、それをgpt5に持って行って、プランを改善してもらい、実行するための詳細なワークフローXMLドキュメントに変換してもらう。それをクロードに渡すんだ。これでクロードの計画外のもたつきをほぼ回避できる。

昔はすごく好きだったけど、最近はなんかバカになった気がする。俺の気のせいかな?他にもそう感じてる人いる?

基本モデルが現実のコーディングタスクには向いてるだけだと思う。一般的なベンチマークのコーディングタスクとは違ってね。GitHub Copilotを使うと、自分のシステムレベルのプロンプトがあって、モデルを切り替えられるんだけど、ClaudeはOpenAIやGoogleのモデルよりも圧倒的にパフォーマンスが良くて、他は実質的に役に立たないよ。

Hacker Newsで議論の続きを見る