01 基礎概念 — Claude Code とは
Claude Code の4つの形態
Claude Code は Anthropic が提供する AI コーディングアシスタント。4つの形態で利用できる。
| 形態 | 説明 | 使い方 |
|---|---|---|
| CLI | ターミナル上で動作。你的のメイン環境(WSL2) | claude コマンドで起動 |
| Desktop App | Windows/Mac用のデスクトップアプリ | スタンドアロンで起動 |
| IDE拡張 | VS Code・JetBrains用プラグイン | IDE内のパネルで操作 |
| Web App | claude.ai/code でブラウザから利用 | ブラウザでアクセス |
このガイドは主に CLI(WSL2環境) を前提に書かれている。
Desktop App と CLI の違い
⚠️ 公式の仕様 を比較しています。個人のコスト最適化構成(GLM/MiniMaxルーティング等)は 15_コスト最適化構成 を参照。
比較表
| 項目 | Desktop App | CLI |
|---|---|---|
| 起動方法 | アプリをダブルクリック | ターミナルで claude コマンド |
| 画面 | GUI(タブ・サイドバー・ビジュアルdiff) | ターミナル(テキストのみ) |
| 並行セッション | タブで視覚的に管理 | バックグラウンドエージェント |
| 変更差分 | 横並びビジュアル表示 | テキストdiff(色付き) |
| コンテキスト上限 | モデル依存(Sonnet 5は1M自動・他は[1m]選択) |
モデル依存(同じ) |
| スクリプト連携 | 不可 | 可(パイプ・cron・hook) |
| 対応OS | Windows / macOS / Linux(beta) | 全OS(Linux/WSL2/Mac/Windows) |
| Desktop固有機能 | ビジュアルdiff・アプリプレビュー(組込ブラウザ)・Computer Use(GUI操作)・Dispatch・サイドチャット | — |
| CLI固有機能 | — | --print/Agent SDK(スクリプト自動化)・エージェントチーム・dontAskモード・ターミナル系コマンド |
| 設定ファイル | claude_desktop_config.json |
settings.json |
| Hook / Skill | ✅ 対応 | ✅ 対応 |
| MCPサーバー | ✅ 対応 | ✅ 対応 |
設定ファイルの場所
| ファイル | Desktop App | CLI |
|---|---|---|
| メイン設定 | AppData\Local\Packages\<pkg>\claude_desktop_config.json |
~/.claude/settings.json |
| MCP起動コマンド | wsl -d Ubuntu -- bash ...(WSL経由) |
bash ...(直接) |
⚠️ Windows Desktop App(MSIX版)のMCP設定ファイルについて(2026-07-06実測)
Windows Desktop App(ストア配布のMSIXパッケージ版)は、MCPサーバー設定を AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json(MSIX仮想化パス)から読み込みます。~/.claude/settings.json にMCPを書いても反映されません。
- 変更の反映確認: アプリ内「設定 → 開発者 → ローカルMCPサーバー」パネルで
running表示を直接確認するのが確実 - 注意: このパスは2026-07-06時点の実測で、アプリ更新で変わりうります。一度確定した対応関係を恒久前提にしないこと(2026-05時点は別ファイルが有効に見えた時期もあり)
- 詳細: Windows Desktop版Gemini-MCP真因確定 — MSIXconfig特定
どちらを選ぶか
| 場面 | おすすめ |
|---|---|
| 視覚的な差分確認が欲しい | Desktop App |
| ターミナル作業はCLIの方が慣れている | CLI |
| Linux / WSL2 で使いたい | CLI のみ |
| スクリプトやcronで自動化したい | CLI のみ |
| 複数プロジェクトを並行管理 | Desktop App(タブ) |
詳細: 自作MCPサーバー構造メモ
アーキテクチャ
ユーザー
│
▼
Claude Code CLI(ターミナル)
│
├─ システムプロンプトを読み込み(CLAUDE.md等)
├─ MCPツール定義を読み込み(83ツール)
├─ スキル定義を読み込み(30+スキル)
├─ メモリを読み込み(MEMORY.md等)
│
▼
LLM(Claude Sonnet / Opus / Haiku)
│
├─ ツール実行要求(Read, Edit, Bash, Agent等)
│ ├─ ローカルファイル操作
│ ├─ シェルコマンド実行
│ ├─ MCPツール呼び出し(GitHub, Brave Search等)
│ └─ サブエージェント起動
│
▼
レスポンス(テキスト + ファイル変更)
│
▼
ユーザーに表示
~3%"] B["ツール定義
~20%"] C["メモリ・スキル
~4%"] D["会話履歴
~3%"] E["空き容量
~70%"] end
コンテキストの仕組み
Claude Code は コンテキストウィンドウ(最大1Mトークン・モデル依存。標準は200k、Sonnet 5/Fable 5/Opus 4.6以降/Sonnet 4.6は1M窓に対応)の中で動作する。セッション開始時に以下がロードされる。
コンテキストの構成要素
200k トークン(標準窓の例・1M対応モデルなら空きが約5倍に拡大)
├── システムプロンプト ~5.7k (2.8%) ← Claude Codeの基本ルール
├── システムツール定義 ~18.1k (9.0%) ← Read, Edit, Bash等のツール説明
├── MCPツール定義 ~21.4k (10.7%) ← 83個のMCPツール説明
├── カスタムエージェント ~2.9k (1.4%) ← エージェント定義
├── メモリファイル ~2.5k (1.2%) ← CLAUDE.md + MEMORY.md
├── スキル定義 ~2.4k (1.2%) ← スキル一覧
├── メッセージ(会話履歴) ~5.4k (2.7%) ← やり取りの履歴
└── 空き ~108.7k (54.3%)
※ Autocompact用バッファ 33k (16.5%)
重要なポイント
- MCPツール定義が最も重い(21.4k = コンテキストの10.7%)
- セッション開始直後からこの消費が発生する
- 会話が進むとメッセージ部分が増加し、空きが減る
/contextコマンドで現在の内訳を確認できる
自動コンパクション
空きが少なくなると、古い会話が自動的に要約される。これをオートコンパクションと呼ぶ。
/clearは完全リセット(会話全破棄)- オートコンパクションは要約して圧縮(文脈は保持)
- バッファとして33kトークンが確保されている
入力と出力の非対称性
詳解: 11_現場の知見
Claude Codeでは入力トークン >> 出力トークンになるのが普通(比率は約13:1)。
理由は毎ターンで「システムプロンプト + MCP定義 + メモリ + 過去会話すべて」を再送するため。チャットAI(ChatGPT等)では出力が多くなりがちだが、コーディングアシスタントでは逆転する。
また、実質使える量は窓サイズ依存: 標準200K窓なら約160K、1M窓なら約960K(いずれもシステム・MCP・メモリで約40Kが固定消費される)。
トークンとは
トークンはテキストの最小単位。日本語1文字 ≒ 1〜2トークン、英単語1語 ≒ 1トークン。
- 入力トークン: ユーザー→LLMへの送信(コンテキストに含まれる全て)
- 出力トークン: LLM→ユーザーへの返信
- コストは入力 + 出力のトークン数で計算される
環境の特記事項
- コスト最適化: 公式のSonnet/Opus/Haikuではなく、GLM-5.2とMiniMaxにルーティングする独自構成 → 15_コスト最適化構成
- コンテキスト最適化済み: 以前9サーバー→11サーバーに最適化
- セキュリティフック: PreToolUseで危険コマンドを自動ブロック
セッション管理
Claude Code のセッション開始・再開・引き継ぎを支える3つの仕組み。
SessionStart Hook — SSOT日記の自動ロード
~/.claude/settings.json の SessionStart に登録された load-obsidian-log.sh が、セッション開始時に以下を自動的にコンテキストへ流す:
- 今日のSSOT日記(直近3セッション分)
- 昨日〜直近のセッションサマリー(1行ずつ)
- バックログのP0+P1タスク
- 本日セッション数(複数セッション運用の可視化)
軽量版で自動表示されるため、ユーザーが手動で handoff を読み込む必要はない(初回・作業中断後の再開時に文脈を即座に復元できる)。
resume-session / new-session — セッション区切りのスキル
| スキル | タイミング | 役割 |
|---|---|---|
resume-session |
セッション開始時「おはよう」「再開」「/resume-session」 | 最新5件のhandoff(00★SYSTEM/handoff/)を読み込み文脈を復元(new-sessionの対・読込側) |
new-session |
コンテキスト満杯時「新セッション」「/new-session」 | 現在の状態を収集→GLMで引き継ぎプロンプト生成→00★SYSTEM/handoff/YYYY-MM-DD_HHMM.md に保存→3行サマリー出力 |
- 引き継ぎは 日時付きファイル に蓄積されるため、過去の引き継ぎも
lsで参照可能(旧:/tmp/new-session-prompt.mdは2026-05-31に廃止) new-session実行時、active-sessionsボードの自分エントリを✅終了に更新(即commit+push)
タスク占有ボード — 並行セッションの競合防止
複数セッションを並行運用する場合、共通ファイル(settings.json / CLAUDE.md / hook群 / 共通スキル等)を逆向きに変更する競合を防ぐための作業宣言ボード。
- 場所:
knowledge-base/00★SYSTEM/active-sessions.md - 🟢現在進行中タスク表: 着手中のセッションがタスク名・窓・開始時刻・方針を記入
- ルール:
- 開始時(resume-session): タスク選択時に🟢表へ追加 → 即push
- 終了時(new-session): 🟢表から削除 → 即push(タスクはバックログに戻る)
- 着手前: 他セッションの🟢タスクに着手する時はユーザーにsoft警告(重複の旨・ブロックはしない)
- 逆方向の変更(修正 vs 削除 等)は勝手に進めず必ずユーザー判断
💡 やさしい補足(初心者向け)
この章に出てくる言葉を、できるだけ平たく言い直します。
- Claude Codeって?: ChatGPTのようなチャットAIですが、手元のパソコンのファイルを直接見たり・書き換えたり・動かしたりできるのが最大の違い。「話しながら一緒に作業してくれる助手」です。
- 「コンテキスト」= 作業机の広さ: Claudeは一度に覚えていられる量に限りがあります。上の図のとおり、会話を始める前から既に机の3割くらいは埋まっています(基本ルールや追加機能の説明書で埋まっている)。だから長く使うとすぐいっぱいになります。
- 「トークン」= 文字数の単位: ざっくり「日本語1文字=1〜2トークン」と思ってください。これがお金の計算単位です。机に積める量も、請求される金額も、全部このトークンで決まります。
- 「毎ターン全部読み直している」: 1回やり取りするたびに、それまでの会話すべてを最初から読み直して返事を作ります。だから会話が長くなるほど1回あたり重く(高く)なります。これが「雪だるま式にコストが増える」理由です。
- この環境は「お得な構成」: 公式の高価なAIではなく、GLM・MiniMaxという別のAIに切り替える設定にしてあって、コストを大幅に抑えています(詳しくは 15章)。