Claude CodeとAiderの違い — 文脈の作り方とコミットの扱いを比べる
Aiderはrepo mapで全体像を渡し、編集のたびにgitコミットします。Claude Codeは探索とサブエージェントで文脈を作り、hooksで工程を足します。設計の差と選び方です。
Claude CodeとAiderの違い — 文脈の作り方とコミットの扱いを比べる
AiderとClaude Codeはどちらもターミナルで動くコーディングエージェントです。違いは機能の数ではなく、設計の重心にあります。Aiderは「リポジトリ全体の地図を渡し、変更を1件ずつgitに刻む」道具です。Claude Codeは「必要な場所を自分で探しに行き、工程の周りに部品を足していく」道具です。
先に、選択を左右しやすい2点から見ます。使えるモデルと、費用の持ち方です。そのうえで設計の差を3つの軸で比べます。文脈をどう作るか、変更をどう残すか、仕事の工程をどう拡張するか。最後は場面別の選び方の表です。
使えるモデルと費用の持ち方はどう違うか
Aiderは、ほぼあらゆるLLMにつなげます。Claude、DeepSeek、OpenAIのモデルのほか、Ollamaなどで動かすローカルモデルも選べます。接続はAPIキーを自分で用意する形で、費用は使うAPIの料金です。
aider --model sonnet --api-key anthropic=<key>
aider --model deepseek --api-key deepseek=<key>Claude Codeが動かすのはClaudeのモデルです。利用にはClaudeのサブスクリプションかAnthropic Consoleのアカウントが要り、サードパーティのプロバイダー経由でも使えます。ゲートウェイ越しに非Claudeモデルへつなぐ使い方は、公式がサポート対象にしていません。費用はサブスクリプションなら料金に含まれ、API利用ならトークンの消費量で決まります。
| 観点 | Aider | Claude Code |
|---|---|---|
| 使えるモデル | Aider複数のプロバイダーとローカルモデル | Claude CodeClaudeのモデル |
| 費用の持ち方 | Aider自分のAPIキーの従量課金 | Claude Codeサブスクリプション、またはAPIのトークン課金 |
モデルを選ぶ自由か、Claudeに揃えた一体の体験か。この点が合わない場合は、以下の設計の差を見る前に決着がつきます。
AiderのrepoマップとClaude Codeの探索は何が違うか
Aiderは変更を依頼するたびに、リポジトリの要約を一緒にLLMへ送ります。この要約が「repo map」です。ファイル一覧と、各ファイルで定義されている主要なシンボル(クラス・関数)、その定義の要所の行が入っています。
要約の大きさは、グラフのランキングで決まります。ソースファイルをノード、依存関係を辺にしたグラフを解析し、現在のチャットに関係が深い部分から、トークンの予算に収まる範囲だけを送ります。予算は--map-tokensで変えられ、既定は1,000トークンです。ただしチャットにファイルが1つも入っていないときは、全体を把握するために大きく広がります。
# repo mapの予算を広げて起動する
aider --map-tokens 2048この方式の強みは、最初の1手が速いことです。関数のシグネチャが全域で見えているので、モジュールの使い方を推測できる場面が多くなります。足りなければLLMが特定のファイルを見たいと求め、Aiderがチャットへの追加を提案します。見せるファイルの最終判断は人の手元に残ります。
Claude Codeにはrepo mapに当たる事前の要約がありません。ドキュメントが示すのは、Searchツールでファイル名のパターンと本文の正規表現を使い、読む範囲をその場で広げていく動きです。「失敗しているテストを直して」と頼まれたら、テストを走らせ、エラーを読み、関連ファイルを探し、読み、直し、再実行します。
文脈の作り方
Aider
依頼のたびに、関連度で絞ったシンボルの地図を送ります。人が/addで対象ファイルを選ぶ前提が強く、地図は選択の補助です。
Claude Code
地図は作らず、ツール呼び出しの結果が次の判断材料になります。毎回の探索がトークンを使う代わりに、索引が古くなる心配がありません。
探索が重いときは、地図を自分で書いておく
大きなリポジトリでは、探索そのものが時間とトークンを食います。Claude Codeには、CLAUDE.mdに地図の役割を書いておく手があります。CLAUDE.mdは毎セッションの開始時に読み込まれる指示ファイルで、探索の起点になります。例えば次のような形です。
# リポジトリの地図
- `api/` HTTPハンドラ。ビジネスロジックは持たない
- `core/` ドメインロジック。外部I/Oは `adapters/` 経由のみ
- `adapters/` DB・外部APIの薄いラッパー
- テストは `core/` 配下に同居(`*_test.go`)。`go test ./core/...` で実行Aiderのrepo mapは自動生成で、常に最新です。このCLAUDE.mdは手書きで、構造が変わったら人が直します。代わりに、シグネチャでは表せない「どこに何を置くか」という設計意図を書けます。
もう一つの手が、探索の分離です。サブエージェントは自分専用のコンテキストウィンドウで動き、検索結果やログを抱えたまま作業し、要約だけを返します。組み込みのExploreは読み取り専用で、コードベースの検索と分析に特化しています。ExploreとPlanは、CLAUDE.mdとgitステータスのスナップショットを読み込まない点も特徴です。調査を軽く済ませる設計になっています。
変更の残し方 — 毎回コミットするか、依頼されたらコミットするか
Aiderはgitを前提に作られています。ファイルを編集すると、説明付きのコミットを作ります。未コミットの変更があるファイルに触る前には、その変更を先にコミットして、人の編集とAIの編集を分けます。メッセージは--weak-modelにdiffとチャット履歴を渡して作り、既定ではConventional Commitsの形式です。
コミットが細かく残るので、/undoで直前の変更を捨て、/diffで直前のメッセージ以降の差分を見られます。AIの作業が、そのままブランチ上の履歴になる設計です。
注意点が1つあります。Aiderは既定でpre-commit hooksを飛ばします(--no-verifyを付けるため)。通したいときは--git-commit-verifyを使います。コミットのたびに走らせたい検査がチームにあるなら、この既定は知っておく価値があります。
Claude Codeの既定は違います。ドキュメントは「依頼すればコミットする」と書いており、編集ごとの自動コミットは既定の動作に含まれていません。取り消しは別の仕組みで、チェックポイントが担います。/rewind(入力欄が空のときはEscの2回押し)でプロンプトの一覧を開き、コードと会話を選んだ時点まで戻します。
| 観点 | Aider | Claude Code |
|---|---|---|
| 変更の単位 | Aider編集1回ごとのコミット | Claude Codeプロンプトごとのチェックポイント |
| 取り消し | Aider/undo(コミットを戻す) | Claude Code/rewind(ファイルと会話を戻す) |
| 履歴の置き場 | Aidergitのコミット履歴 | Claude Codeセッション内。長期の履歴はgitに任せる |
| 戻せない範囲 | Aidergitの外の変更 | Claude CodeBashで動かしたファイル、多くのサブエージェントの編集、外部の変更 |
右列の「戻せない範囲」は設計の差がよく出る部分です。チェックポイントが追うのはClaudeのファイル編集ツールによる変更だけで、rmやmvで動かしたファイルは戻りません。サブエージェントの編集も、フォアグラウンドで動くforkしたスキルを除いて戻りません。この場合はgitで戻します。スナップショットは、最後の保存からおよそ30日で掃除されます。
具体的な移行の手順や、コミットの署名(トレーラー)の違いはAiderからClaude Codeへの移行手順にあります。
Aiderの毎回コミットを、Claude Codeで再現するには
「やはり変更ごとにコミットが欲しい」場合は、Stopイベントのhookで組めます。StopはClaudeが応答を終えたときに走ります。次は、応答のたびに変更をコミットするシェルスクリプトの例です(公式の例ではなく、仕組みを示すための一例です)。
#!/bin/bash
# .claude/hooks/auto-commit.sh
git diff --quiet && git diff --cached --quiet && exit 0
git add -u
git commit -m "wip: Claudeの変更を自動コミット" --no-verify
exit 0chmod +x .claude/hooks/auto-commit.sh.claude/settings.jsonでStopに結びます。
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/auto-commit.sh"
}
]
}
]
}
}この例には、Aiderと違う点が3つあります。まず、未コミットの変更を先に別コミットへ分ける処理がありません。人の編集とAIの編集が1つのコミットに混ざります。次に、メッセージが固定文です。Aiderのような「diffから説明を作る」仕組みを求めるなら、スクリプトの中で別のモデル呼び出しを足す必要があります。さらにgit add -uは追跡済みのファイルの変更しか拾わないので、Claudeが新しく作ったファイルはコミットされません。再現はできても、Aiderの挙動と同じにはなりません。
仕事の工程を足す — サブエージェントとhooks
工程の扱いで、2つの道具の方向性が最もはっきり分かれます。
Aiderの自動化は、編集の直後に回る検査に寄っています。組み込みのlinterが、編集したファイルを既定で検査します(--no-auto-lintで止められます)。--lint-cmdで好みのlinterも指定できます。テストは/test <コマンド>で走らせるか、--test-cmdと--auto-testで編集のたびに自動化します。失敗の出力を読ませて直させる流れは、コマンドが非ゼロで終わることを合図にしています。
Claude Codeは、工程そのものを部品化します。hooksは、ライフサイクルの決まった時点で走る処理です。ツール実行の前後のPreToolUseとPostToolUse、応答の終了時のStop、サブエージェントの開始と終了などがあります。PreToolUseのhookは、終了コード2で呼び出しを止められます。
Claude Codeが足せる工程
PostToolUse
ファイル編集の直後にlinterやテストを走らせます。Aiderの
--auto-lint・--auto-testに近い位置づけです。PreToolUse
実行前に検査して止めます。
rmを含むBashコマンドを弾く、といった使い方ができます。編集の後ではなく、実行の前に置くゲートです。サブエージェント
調べ物や並行作業を専用のコンテキストに切り出します。使えるツールと使うモデルを個別に絞れます。
サブエージェントは、Markdownのファイルで定義します。次の例は、読み取り系のツールだけを持つ調査役です。
---
name: dep-auditor
description: 依存関係の使われ方を調べて報告する。コードは編集しない
tools: Read, Grep, Glob, Bash
---
指定された依存パッケージが、どのファイルから呼ばれているかを洗い出し、
呼び出し箇所を一覧にして返してください。.claude/agents/に置くと、Claudeはdescriptionを見て、合う依頼を自動で委任します。toolsで編集系のツールを外すと、調査役が誤ってファイルを書き換える事態を防げます。コストを抑えたい作業は、modelで低コストのモデルに寄せられます。
Aiderのarchitectモードは、architectモデルが変更を提案し、editorモデルがその提案を具体的なファイル編集に落とす2段構成です。役割を分ける発想はサブエージェントと近く、組み合わせるモデルも自由に選べます。Claude Codeのopusplanは、計画をOpus、実行をSonnetに割り当てる固定の組み合わせです。選べるのはこの1通りで、Claudeのモデルに限られます。
hooksの具体的な組み立ては、PostToolUseのLint自動修正とhooksでテストを自動実行する方法で言語別に扱っています。サブエージェントをSkillsやMCPと並べた使い分けは、SkillsとMCPの違いにあります。
どちらを選ぶか — 場面別の早見表
優劣ではなく、作業の形で選びます。
| 場面 | 向く道具 | 理由 |
|---|---|---|
| Claude以外のモデルや、ローカルモデルを使いたい | 向く道具Aider | 理由複数のプロバイダーとローカルモデルにつなげる |
| Claudeのサブスクリプションの範囲で使いたい | 向く道具Claude Code | 理由サブスクリプションで利用でき、APIキーの従量課金を別に持たなくて済む |
| 1機能ずつ小さく直し、履歴を細かく残したい | 向く道具Aider | 理由編集ごとのコミットと/undoが既定で揃っている |
| 対象ファイルが分かっていて、人が範囲を選びたい | 向く道具Aider | 理由repo mapが補助になり、チャットに入れるファイルを人が決める |
| 調べ物が多く、どこを直すか分からない | 向く道具Claude Code | 理由探索を任せられ、サブエージェントで本編のコンテキストを汚さない |
| テスト・lint・コミットの前後に独自の検査を挟みたい | 向く道具Claude Code | 理由hooksで工程の好きな時点に処理を足せる |
| 危険な操作を事前に止めたい | 向く道具Claude Code | 理由PreToolUseのhookと権限ルールで実行前に拒否できる |
| 並行して複数の作業を走らせたい | 向く道具Claude Code | 理由サブエージェントとgit worktreeで作業を分けられる |
どちらか一方に決める必要はありません。履歴を細かく残すAiderの流儀が合うリポジトリと、探索と検査の自動化が効くリポジトリは、同じ人の手元に混在します。自動コミットを重視してClaude Codeを使うなら、前述のStopのhookで近い形にできます。逆にAiderを選ぶなら、lintとテストの自動実行は--test-cmdと--auto-testの2つのスイッチで足ります。
まとめ
Aiderは「地図を先に渡し、変更をgitに刻む」設計で、Claude Codeは「探しながら進み、工程を部品で足す」設計です。履歴の細かさを取るか、工程の自由度を取るかが分かれ目になります。移行を考えている場合は、まず移行手順の記事で対応表を確認すると、差を実際の設定に落とせます。