Claude Media
Claude CodeとAiderの違い — 文脈の作り方とコミットの扱いを比べる

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利用ならトークンの消費量で決まります。

観点AiderClaude 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回押し)でプロンプトの一覧を開き、コードと会話を選んだ時点まで戻します。

観点AiderClaude 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 0
chmod +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は「探しながら進み、工程を部品で足す」設計です。履歴の細かさを取るか、工程の自由度を取るかが分かれ目になります。移行を考えている場合は、まず移行手順の記事で対応表を確認すると、差を実際の設定に落とせます。

この記事を共有:XはてブLinkedIn