claude_code
差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| claude_code [2026/01/25 07:56] – 作成 nullpon | claude_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 Code overview - Claude Code Docs(code.claude.com)](https:// | ||
| + | |||
| + | ## 設定ファイル | ||
| + | |||
| + | 設定ファイルは3種類 | ||
| + | |||
| + | - グローバルスコープ: | ||
| + | - プロジェクトスコープ: | ||
| + | - ローカルスコープ: | ||
| + | |||
| + | 下のスコープほど優先度が高い。 | ||
| + | |||
| + | - グローバルスコープ: | ||
| + | - プロジェクトスコープ: | ||
| + | - ローカルスコープ: | ||
| + | |||
| + | ## CLAUDE.md | ||
| + | |||
| + | セッション開始時に読み込まれるプロンプト。セッション開始時に進みコンテキストが増えるほど影響が小さくなっていく。このため常に守って欲しいルール、例えば「コード修正したらテストを実行すること」といったルールを書くべきではない。(このようなルールはhookを使うといい) | ||
| + | |||
| + | CLAUDE.mdには、セッション開始時に「このプロジェクトは何?」といった作業の取り掛かりになる情報を与えるのが良い。 | ||
| + | |||
| + | |||
| + | ## ヘッドレスモード | ||
| + | |||
| + | 対話モードを起動せずにワンショットのCLIツールとして起動するモード | ||
| + | |||
| + | ``` | ||
| + | cat error.log | claude -p ' | ||
| + | ``` | ||
| + | |||
| + | プロンプトは次のようになる。この時カレントディレクトリのCLAUDE.mdも参照される | ||
| + | |||
| + | ``` | ||
| + | < | ||
| + | このエラーの原因を簡潔に説明してください | ||
| + | ``` | ||
| + | |||
| + | ## Claude Codeが実行するシェル環境 | ||
| + | |||
| + | (このセクションはv2.1.45時点での情報です) | ||
| + | |||
| + | claude codeはコマンドをbashまたはzshで実行する。この時の環境はログインシェルかつ非インタラクティブシェルである。つまりzshであれば`, | ||
| + | |||
| + | これはshell-snapshotという仕組みで実現されている。詳細は不明だがおそらく.zshrcの内容を先に実行して、その結果作成されるシェル関数、シェルオプション、コマンドエイリアス、PATH環境変数を~/ | ||
| + | |||
| + | この仕組みのためか、コマンドの遅延ロードのようなギミックを仕込んでいるとコマンドが正常に動かないことがある。shell-snapshotを作成するときは`CLAUDECODE`という環境変数がセットされている。これを見て遅延ロードしないように分岐すると良い | ||
| + | |||
| + | ```bash | ||
| + | if command -v rbenv >/ | ||
| + | if [[ $CLAUDECODE == 1 ]]; then | ||
| + | # claude codeはrbenvを即時ロードする | ||
| + | eval " | ||
| + | else | ||
| + | # 人間はrbenvを遅延ロードする | ||
| + | _rbenv_lazy_init() { | ||
| + | unfunction _rbenv_lazy_init rbenv ruby bundle gem rake rails irb 2>/ | ||
| + | eval " | ||
| + | } | ||
| + | for cmd in rbenv ruby bundle gem rake rails irb; do | ||
| + | eval " | ||
| + | done | ||
| + | fi | ||
| + | fi | ||
| + | |||
| + | ``` | ||
| + | |||
| ## AIの使い方の方針 | ## AIの使い方の方針 | ||
| 行 20: | 行 89: | ||
| いきなりコーディングに入らず、Plan Modeで調査・計画を行ってから実装に移ることで間違った問題を解くリスクを減らす。ただし、単純な変更には不要なオーバーヘッドになる場合もある。 | いきなりコーディングに入らず、Plan Modeで調査・計画を行ってから実装に移ることで間違った問題を解くリスクを減らす。ただし、単純な変更には不要なオーバーヘッドになる場合もある。 | ||
| - | これは次の「具体的な指示」を作るための下準備と思っても良い | + | Plan Modeが有効であるのは次の「具体的な指示」が作られることによる |
| ### 3. 具体的な指示を出す | ### 3. 具体的な指示を出す | ||
| - | 曖昧な指示より、対象ファイル・制約・参照すべきパターンを明示する。LLMはAという表現を別のBという表現に変換する関数のようなものだと思って良い。入力が詳細なほど出力も詳細なものになる。 | + | 曖昧な指示より、対象ファイル・制約・参照すべきパターンを明示する。LLMはAという表現を別のBという表現に変換する関数のようなものであり、出力の品質は入力の質が反映されたものになる。曖昧な指示による入力には相応の低品質なコードが出力されると熟知せよ。 |
| ### 4. 複数セッションで並列化 | ### 4. 複数セッションで並列化 | ||
| 行 35: | 行 104: | ||
| - 無関係なタスクの混在: | - 無関係なタスクの混在: | ||
| - 繰り返しの修正: | - 繰り返しの修正: | ||
| + | - 失敗すると失敗した状態をコンテキストにしてしまう。これは性能を大幅に劣化させる原因となる | ||
| - 長すぎるCLAUDE.md: | - 長すぎるCLAUDE.md: | ||
| - 検証なしの信頼: | - 検証なしの信頼: | ||
| - スコープなき調査: | - スコープなき調査: | ||
| + | </ | ||
claude_code.1769327804.txt.gz · 最終更新: by nullpon