ユーザ用ツール

サイト用ツール


claude_code

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
claude_code [2026/02/04 12:10] nullponclaude_code [2026/04/01 12:34] (現在) nullpon
行 3: 行 3:
  
 Anthropic社のコーディングAIエージェント Anthropic社のコーディングAIエージェント
 +
 +- [Claude Code by Anthropic | AI Coding Agent, Terminal, IDE(claude.com)](https://claude.com/product/claude-code)
 +- [Claude Code overview - Claude Code Docs(code.claude.com)](https://code.claude.com/docs/)
 +
 +## 設定ファイル
 +
 +設定ファイルは3種類
 +
 +- グローバルスコープ: `~/.claude/settings.json`
 +- プロジェクトスコープ: `.claude/settings.json`
 +- ローカルスコープ: `.claude/settings.local.json`
 +
 +下のスコープほど優先度が高い。
 +
 +- グローバルスコープ: どこで起動しても有効になる個人設定
 +- プロジェクトスコープ: プロジェクトで共有する設定、[VCS](/vcs)にコミットして管理する想定
 +- ローカルスコープ: プロジェクトにおけるユーザの固有設定、バージョン管理から除外する想定
 +
 +## CLAUDE.md
 +
 +セッション開始時に読み込まれるプロンプト。セッション開始時に進みコンテキストが増えるほど影響が小さくなっていく。このため常に守って欲しいルール、例えば「コード修正したらテストを実行すること」といったルールを書くべきではない。(このようなルールはhookを使うといい)
 +
 +CLAUDE.mdには、セッション開始時に「このプロジェクトは何?」といった作業の取り掛かりになる情報を与えるのが良い。
 +
  
 ## ヘッドレスモード ## ヘッドレスモード
行 11: 行 35:
 cat error.log | claude -p 'このエラーの原因を簡潔に説明してください' cat error.log | claude -p 'このエラーの原因を簡潔に説明してください'
 ``` ```
 +
 +プロンプトは次のようになる。この時カレントディレクトリのCLAUDE.mdも参照される
 +
 +```
 +<error.logの内容>
 +このエラーの原因を簡潔に説明してください
 +```
 +
 +## Claude Codeが実行するシェル環境
 +
 +(このセクションはv2.1.45時点での情報です)
 +
 +claude codeはコマンドをbashまたはzshで実行する。この時の環境はログインシェルかつ非インタラクティブシェルである。つまりzshであれば`,zprofile`は読み込まれるが`.zshrc`は読み込まれないはずである。しかしclaude codeは`,zshrc`で定義している関数や環境変数を使うことができる。
 +
 +これはshell-snapshotという仕組みで実現されている。詳細は不明だがおそらく.zshrcの内容を先に実行して、その結果作成されるシェル関数、シェルオプション、コマンドエイリアス、PATH環境変数を~/.claude/shell-snapshots以下に書き出し、コマンド実行のたびにsourceして読み込んでいるものと推測される。
 +
 +この仕組みのためか、コマンドの遅延ロードのようなギミックを仕込んでいるとコマンドが正常に動かないことがある。shell-snapshotを作成するときは`CLAUDECODE`という環境変数がセットされている。これを見て遅延ロードしないように分岐すると良い
 +
 +```bash
 +if command -v rbenv >/dev/null 2>&1; then
 +  if [[ $CLAUDECODE == 1 ]]; then
 +    # claude codeはrbenvを即時ロードする
 +    eval "$(command rbenv init -)"
 +  else
 +    # 人間はrbenvを遅延ロードする
 +    _rbenv_lazy_init() {
 +      unfunction _rbenv_lazy_init rbenv ruby bundle gem rake rails irb 2>/dev/null
 +      eval "$(command rbenv init -)"
 +    }
 +    for cmd in rbenv ruby bundle gem rake rails irb; do
 +      eval "${cmd}() { _rbenv_lazy_init; ${cmd} \"\$@\" }"
 +    done
 +  fi
 +fi
 +
 +```
 +
  
 ## AIの使い方の方針 ## AIの使い方の方針
claude_code.1770207024.txt.gz · 最終更新: by nullpon