Claude Media
AiderからClaude Codeへの移行手順 — .aiderignoreの読み替え方

AiderからClaude Codeへの移行手順 — .aiderignoreの読み替え方

Aiderの.aiderignoreやCONVENTIONS.mdをClaude Codeの権限ルール・CLAUDE.mdに移す対応表です。自動コミットの挙動差やチャットモードの読み替えも扱います。

はじめに

AiderとClaude Codeはどちらもターミナルで動くCLI型のコーディングエージェントで、IDE拡張型のツールより設計思想が近い関係にあります。それでも設定ファイルの持ち方はかなり違います。

とくに引っかかるのが無視ファイルです。.claudeignoreを作っても、Claude Codeはそのファイルを読みません。権限の公式ページにも「.claudeignoreは効果がないので、中身をReadのdenyルールへ移す」と書かれています。.aiderignoreの行き先は.claude/settings.jsonのpermissions.denyです。

手順

移行の手を動かす順番

  1. 1

    コミットの担当を決める

    Aiderのauto-commitsに頼っていたなら、Claude Code側では「依頼して切る」か「Hookで切る」かを先に選びます。

  2. 2

    CONVENTIONS.mdをCLAUDE.mdにする

    cp CONVENTIONS.md CLAUDE.mdで、読み込みの設定そのものが要らなくなります。

  3. 3

    .aiderignoreをdenyルールにする

    除外したいパスを.claude/settings.jsonのpermissions.denyへ書き写します。

  4. 4

    lint・testをHookにする

    --auto-lintと--auto-testは、PostToolUseのHookに置き換えます。

  5. 5

    認証の経路を選び直す

    ANTHROPIC_API_KEYを環境変数に入れたままだと、Claude Codeはそちらを優先します。

コミットと巻き戻しはどう変わるか

移行前に押さえたい差のうち、最も体感が大きいのは自動コミットです。Aiderはauto-commitsが既定でTrueで、ファイルを編集するたびに説明付きのコミットを作ります。Claude Codeにはこの既定動作がなく、コミットは依頼するか、Stopイベントに結んだHookで組みます。

くらべる

AIの変更を取り消す手段

コミット単位

Aider

編集のたびにコミットが残り、/undoで直前のAIの変更を取り消します。/diffは直前のメッセージ以降の差分を見せます。作業ツリーに未コミットの変更があると、Aiderは先にそれをコミットして自分の編集と分けます(--dirty-commits、既定はTrue)。

プロンプト単位

Claude Code

入力欄が空の状態でEscを2回押すか/rewindを実行すると、送ったプロンプトの一覧が開きます。選んだ時点まで、コードと会話をまとめて、または片方だけ戻せます。gitのコミット履歴は対象外で、長期の履歴はgitで持つ前提です。

rewindには範囲の限界があります。Claudeのファイル編集ツールによる変更だけが記録され、Bashのrm・mv・cpで動かしたファイルは戻りません。サブエージェントの編集も、フォアグラウンドで動くforkスキルを除いて戻りません。スナップショットは、最後の保存からおよそ30日で掃除されます。

Hookで自動コミットを組んでいた場合、rewindで戻してもすでに切られたコミットは残ります。取り消すときはgit resetなど通常のgit操作を使います。

コミットの署名も食い違います。Aiderは既定でCo-authored-byトレーラーを付けます(--attribute-co-authored-by)。Claude Codeも、自分でコミットするときは既定でCo-Authored-Byトレーラーを付け、settings.jsonのattributionで文面を変えられます。falseにすると非表示になり、v2.1.281以降が必要です。

Aiderのチャットモードはplanモードに近い

Aiderにはcode(既定、編集する)・ask(議論だけで編集しない)・architect(提案役と編集役の2段構成)・helpの4モードがあり、/chat-modeで切り替えます。このうちaskからcodeへの往復は、Claude Codeのplanモードに近い体験です。コードベースを読んで計画を示し、承認するまでソースを書き換えません。

planモードはclaude --permission-mode planで起動できます。セッション中はShift+Tabでモードを順に切り替えるか、プロンプトの先頭に/planを付けます。実機(v2.1.289)で指定できる値を出すと次のとおりです。

claude --version
claude --help | grep -A3 -e "--permission-mode"
2.1.289 (Claude Code)
  --permission-mode <mode>              Permission mode to use for the session
                                        (choices: "acceptEdits", "auto",
                                        "bypassPermissions", "manual",
                                        "dontAsk", "plan")

Aiderの4モードと違い、Claude Codeのモードは「編集の確認をどこまで省くか」の段階です。計画を承認するときも、承認後の動かし方を「自動モード」か「編集を1件ずつ確認」から選びます。

.aiderignoreを権限ルールに置き換える

.aiderignoreはgitignoreと同じ書式でAiderの対象からパスを外すファイルで、既定ではgit rootのものが使われます(--aiderignoreで変更可)。Claude Codeではpermissions.denyが同じ役目を担います。

.claude/settings.json
{
  "permissions": {
    "deny": [
      "Read(./secrets/**)",
      "Read(./.env)",
      "Edit(./vendor/**)"
    ]
  }
}

Readのdenyは読み取りを止めるだけでなく、同じパスへのEditツールとWriteツールも止めます。新しいファイルを作る操作も含みます。編集側の検査はv2.1.208以降、書き込み側はv2.1.228以降です。つまり.aiderignoreの「読ませず・書かせない」はReadの1行で足ります。

Edit(./vendor/**)のようにEditだけを拒否すると、読ませて書かせない設定になり、.aiderignoreにはない細かい制御です。ルール全体の構造はClaude Code settings.json完全ガイドにまとめています。

.gitignoreはこの代わりになりません。Globツールは既定で、gitignore対象のファイルも返します。Grepはgitignore対象を飛ばします。Globにも従わせたいときは、起動前に環境変数CLAUDE_CODE_GLOB_NO_IGNORE=falseを設定します。settings.jsonのrespectGitignoreは@ファイルピッカー専用です。読み書きを禁じる手段は、あくまでdenyルールです。

CONVENTIONS.mdの手動読み込みとCLAUDE.mdの自動読み込み

Aiderには、セッション開始時に自動で読まれる指示ファイルがありません。規約を書いたCONVENTIONS.mdは、aider --read CONVENTIONS.mdと毎回指定するか、.aider.conf.ymlに常時読み込みを書いて使います。

.aider.conf.yml(Aider側)
read: CONVENTIONS.md

Claude CodeのCLAUDE.mdはプロジェクト直下に置くだけで、セッション開始時に読み込まれます。read:にあたる有効化の手順が要りません。中身はそのままコピーできます。

cp CONVENTIONS.md CLAUDE.md
git add CLAUDE.md

規約が育って長くなったら、.claude/rules/にトピック別のファイルを置けます。ファイルの先頭にpathsを書けば、該当するファイルを触るときだけ読み込まれます。書き方の実例はCLAUDE.mdを実用に引き上げる10のパターンにあります。

.aider.conf.ymlとsettings.jsonの対応

.aider.conf.ymlは、ホームディレクトリまたはgitリポジトリのルートに置くYAMLで、モデル・APIキー・編集フォーマットなどを1ファイルにまとめます。Claude Codeでは役割ごとにキーが分かれます。

Aider(.aider.conf.yml)Claude Code備考
model: xxxClaude Codesettings.jsonのmodel備考どちらもセッション既定モデルを指定
anthropic-api-key: xxxClaude CodeANTHROPIC_API_KEY環境変数備考Claude ConsoleのAPI従量課金で認証する場合
auto-commits: trueClaude Code既定動作なし(Hookで代替)備考コミットの担当を決め直す
aiderignore: .aiderignoreClaude Codepermissions.deny備考ファイル単位ではなくルール単位
attribute-co-authored-by: trueClaude Codeattribution備考署名の文面を変えられる

Aiderの設定ファイルはホーム用とプロジェクト用の2か所に置け、両方見つかれば両方が読み込まれます。Claude Codeにも、ユーザー用の~/.claude/settings.jsonとプロジェクト用の.claude/settings.jsonを含む複数の階層があり、起動時にマージされる点は考え方が共通です。

自動lint/testをHookに置き換える

Aiderの--auto-lintは編集後に--lint-cmdのコマンドを、--auto-testは--test-cmdのコマンドを自動実行します。Claude CodeではPostToolUseイベントのHookが同じ役目を担います。

.claude/settings.json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          { "type": "command", "command": "npm run lint" }
        ]
      }
    ]
  }
}

Aider側はコマンド文字列を1つ渡せば済みますが、Claude Code側はイベント名とツール名の組で指定します。テストも同じ形で、hooks配列にコマンドを足します。書き方の詳細はClaude Code Hooks完全ガイドを参照してください。

置き換え先が別の形になる3つの機能

Aiderで当たり前に使っていた機能のうち、Claude Codeに同名の機能がないものがあります。探し続けるより、置き換え先の考え方を先に知っておくと早く済みます。

読み替え

同名の機能がないAiderの習慣

  • architectモード

    提案役と編集役を別モデルに分ける構成に近いのは、/modelで選ぶopusplanです。planモードではOpus、実行ではSonnetが使われます。planモードで計画を作り、承認して同じセッションで実行する流れは同じです。Aiderは2つのモデルを自由に指定できますが、opusplanはopusとsonnetの組に固定された別物です。

  • AI!コメント

    Aiderは--watch-filesで、# 〜 AI!のようなコメントを検知して指示として実行します。AI?なら質問として答えます。Claude Code側にコメントを指示として実行する機能はなく、指示はセッションのプロンプトで渡します。ファイル変更を契機にコマンドを走らせたいときは、FileChangedのHookがあります。

  • リポジトリマップ

    Aiderは全体のシンボル構造を要約した「repo map」を自動で作り、/add・/dropで対象ファイルを人が選びます。Claude CodeはGrepとGlobで必要な範囲をその都度探す設計で、事前登録の手順がありません。

大きなリポジトリで探索が重いときは、CLAUDE.mdにディレクトリ構成とモジュールの役割を書いておくと、探索の範囲を絞りやすくなります。

よくあるつまずき

denyルールを書いたのにgrepで中身が見える

ReadとEditのdenyルールが効くのは、Claudeの組み込みファイルツールと、cat・head・sed・teeのようにファイルを名指しするBashコマンドです。リダイレクトの対象にも効きます。

一方、grep -r pattern .のようにファイルを名指ししないコマンドや、PythonやNodeのスクリプトがファイルを開く操作には効きません。GrepとGlobへの適用はベストエフォートとされています。プロセス全体をOSの水準で止めたいなら、サンドボックスを有効にします。

編集のたびにlintが走らない

PostToolUseのmatcherを"Edit"だけにすると、新しいファイルを作るWriteでは動きません。上の例のようにEdit|Writeと書きます。

ANTHROPIC_API_KEYを入れたまま、サブスクリプションが使われない

Aiderの運用でANTHROPIC_API_KEYをシェルに入れていると、Claude Codeはログイン済みのサブスクリプションよりそのキーを優先します。対話モードでは、最初に一度キーを使うかどうかを尋ねられます。-pによる非対話実行では、キーがあれば常にそちらが使われます。サブスクリプションの枠で使いたいなら、unset ANTHROPIC_API_KEYが必要です。

Bedrockを使うならAWSの認証情報、Vertex AIならGCPの認証情報を使い、ANTHROPIC_API_KEYとは別の経路です。従量課金のキーだけを使ってきた人は、サブスクリプション・Console・Bedrock・Vertexのどれで認証するかを、移行時に選び直すことになります。

まとめ

移行で最初に決めるのは、コミットを誰がいつ切るかです。1対1で移らないのはarchitect・AI!コメント・repo mapの3つで、ここは機能探しより運用の組み直しになります。

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