🔸

"Claude Code" を始めよう。

に公開

はじめに

せっかくなので、Claude Codeを始めたばかりの初心者として、
Claude Codeでとりあえずやったことをこの記事で残していこうと思います。

事前情報

僕は、MAXプラン($100) でClaude Codeを利用しています。
元々Proプランを利用していたのですが、Claude Codeの登場でMAXプランへの移行を決断しました。
どうせ毎日使用するので、MAXプラン($100)即決でした。 MAXプラン($200)は保留です。

https://support.anthropic.com/ja/articles/11145838-proまたはmaxプランでclaude-codeを使用する?q=プラン

結論

まずは、公式ドキュメント を読もう📖
Claude Codeは、公式ドキュメントが丁寧にまとめられていて読むのが苦痛ではありません!
LLMにdocsのurlを投げて解説してもらったり、NotebookLMなどを活用するのもアリだと思います!(便利な時代です)

公式:Claude Code概要

https://docs.anthropic.com/ja/docs/claude-code/overview

公式チュートリアル

https://docs.anthropic.com/ja/docs/claude-code/tutorials#gitワークツリーで並列claude-codeセッションを実行する

公式が出してるエージェントコーディングのベストプラクティス

https://www.anthropic.com/engineering/claude-code-best-practices

セットアップ

  1. Claude Codeをインストール
npm install -g @anthropic-ai/claude-code
  1. Claude Codeを利用したいプロジェクトに移動
cd your-project-directory
  1. Claude Codeを起動
claude
  1. 認証を完了

基本的なセットアップは以上です!
https://docs.anthropic.com/ja/docs/claude-code/setup

セキュリティ設計

Claude系は 暴れん坊 なとこがあるので、、、

LLMがどんだけ賢くても "過信" のしすぎは危ないです。

全部任せるのではなく、必要な箇所は人間がちゃんと見守ってあげましょう😀

https://docs.anthropic.com/ja/docs/claude-code/settings
https://docs.anthropic.com/ja/docs/claude-code/security

~/.claude/settings.local.json に以下のように書く。

{
  "permissions": {
    "allow": [],
    "deny": [
      "Bash(sudo:*)",
      "Bash(rm:*)",
      "Bash(rm -rf:*)",
      "Bash(git push:*)",
      "Bash(git commit:*)",
      "Bash(git reset:*)",
      "Bash(git rebase:*)",
      "Bash(git checkout:*)",
      "Bash(git switch:*)",
      "Read(.env.*)",
      "Read(id_rsa)",
      "Read(id_ed25519)",
      "Read(**/*token*)",
      "Read(**/*key*)",
      "Write(.env*)",
      "Write(**/secrets/**)",
      "Bash(curl:*)",
      "Bash(wget:*)",
      "Bash(nc:*)",
      "Bash(npm uninstall:*)",
      "Bash(npm remove:*)",
      "Bash(psql:*)",
      "Bash(mysql:*)",
      "Bash(mongod:*)",
      "mcp__supabase__execute_sql"
    ]
  }
}

permissions.allowとpermissions.denyは権限ルールのリストです。

permissions.allow:ツール呼び出しの 許可設定
permissions.deny:ツール呼び出しの 拒否設定

参考にさせていただいた記事

https://izanami.dev/post/d6f25eec-71aa-4746-8c0d-80c67a1459be

スラッシュコマンド

Claude Codeではデフォルトで様々なスラッシュコマンドが用意されています。

コマンド 目的
/bug バグを報告(会話をAnthropicに送信)
/clear 会話履歴をクリア
/compact [instructions] オプションのフォーカス指示で会話をコンパクト化
/config 設定の表示/変更
/cost トークン使用統計を表示
/doctor Claude Code インストールの健全性をチェック
/help 使用方法のヘルプを取得
/init CLAUDE.md ガイドでプロジェクトを初期化
/login Anthropic アカウントを切り替え
/logout Anthropic アカウントからサインアウト
/mcp MCP サーバー接続と OAuth 認証を管理
/memory CLAUDE.md メモリファイルを編集
/model AI モデルを選択または変更
/permissions 権限を表示または更新
/pr_comments プルリクエストコメントを表示
/review コードレビューをリクエスト
/status アカウントとシステムのステータスを表示
/terminal-setup 改行用の Shift+Enter キーバインドをインストール(iTerm2 と VSCode のみ)
/vim 挿入モードとコマンドモードを交互に切り替える vim モードに入る

また、Claude Codeでは カスタムスラッシュコマンド 機能が用意されています。
上記で紹介したデフォルトコマンドの指示以外に、カスタムスラッシュコマンドを使用することで、カスタマイズした指示をClaude Codeに与えることが出来ます。

カスタムスラッシュコマンドの作成方法

カスタムスラッシュコマンドの作成は以下のようにします。
****.mdがカスタムスラッシュコマンドのファイルになります。

.claude/commands/****.md

例えば、技術ブログ記事を自動生成するカスタムスラッシュコマンド の場合、以下のようなファイル名が考えられます。

.claude/commands/blog-writing.md

カスタムスラッシュコマンドでMCPサーバーを呼び出す

Claude CodeにMCPサーバーを確実に利用してもらうために、以下のような簡易的なカスタムスラッシュコマンドを作成してみました。

mcp-context7.md
# /mcp-context7 - Context7 MCPサーバーを使用したタスク実行コマンド

タスクを "Context7 MCPサーバー" を使用して実行するためのコマンドです。

## 使用方法

このコマンドをユーザーが実行した場合、まずユーザーに対して、"Context7 MCPサーバーを使用してタスク進行します!" と叫び、Context7 MCPサーバーでユーザーから指示されたタスクを完了するようにしてください。

Claude CodeがMCPサーバーをちゃんと利用してくれるかテストします。

ちゃんとMCPサーバーを利用して回答してくれました!
※最新安定版:v15.3.5は正しいですが、最新Canary版はv15.4.0-canary.127(2025/07/12時点)なので、この辺はファクトチェックするといいかもです。それかプロンプトに日時を加えたりして工夫したら多分答えてくれます。

https://github.com/vercel/next.js

公式

https://docs.anthropic.com/ja/docs/claude-code/slash-commands#カスタムスラッシュコマンド

Claude Codeとの会話ログを可視化

以下のツールを利用すると、Claude Codeとの会話ログを上記のように可視化できるようになります!
https://github.com/daaain/claude-code-log

Claude Codeとの実装ログを管理する

開発中の実装ログを残すことで、Claude Codeは過去のやり取りや設計意図を常に参照でき、あたかも記憶しているかのように振る舞います。

CLAUDE.md に以下のように書いてみました!

CLAUDE.md
## 実装ログ運用ルール

- このプロジェクトでは、全ての実装ログが `_docs/templates/``yyyy-mm-dd_機能名.md` という形式で保存されています。起動時には必ず必ず必ず `_docs/` 配下をコンテキストとして全て読み込んでおき、前回の設計意図や副作用を踏まえた上で提案するようにしてください。(起動時にまだ `_docs/templates/` が存在しなかったら `_docs/templates/` を作成してから実装を開始して、 `_docs/templates/yyyy-mm-dd_機能名.md` というファイル名で実装ログが必ず必ず必ず残るようにすること)
- 実装が完了したら、`_docs/templates/yyyy-mm-dd_機能名.md` というファイル名で実装ログを残すこと。機能名が複数単語の場合はケバブケースを使用するように。(例:yyyy-mm-dd_product-name.md)
- 実装ログの「日付」欄は **TIME MCP Server** で取得した日時、またはユーザ環境の `now` エイリアス(`date "+%Y-%m-%d %H:%M:%S"`)の出力を使用すること。エイリアスが未設定の場合は `.zshrc` 等に `alias now='date "+%Y-%m-%d %H:%M:%S"'` を追加しておく。
  - 実装ログに含める項目: 実装の目的・背景 / 主な実装内容 / 設計意図 / 副作用 / 関連ファイル

### 実装ログのテンプレート例:

```md
機能名: <ここに機能名>

- 日付: yyyy-mm-dd HH:MM:SS
- 概要: <実装の目的・背景>
- 実装内容: <主な実装内容>
- 設計意図: <なぜこの設計にしたのか>
- 副作用: <懸念事項があれば明記>
- 関連ファイル: <ファイルの場所>
```

参考にさせていただいた記事

https://izanami.dev/post/c63cadd1-5e1a-4eca-a0e9-29c2bc39932c

"think", "ultrathink"

Claude Codeは use think, use ultrathink といった指示をすることで、通常より長く考えるモード(拡張思考モード)を起動し、より綿密に代替案を評価してくれるようになります。

拡張思考モードには以下の段階があります。
think < think hard < think harder < ultrathink

公式が出してる "Claude Code: Best practices for agentic coding" に記載があります!

常に ultrathink させる方法も面白そうです!
https://zenn.dev/oikon/articles/0281640eae5aed

公式

https://www.anthropic.com/engineering/claude-code-best-practices

Hooks

Hooksとは?

  • Claude Code(CC)に任意のシェルコマンドを紐づけて実行できる仕組みのこと

つまり、特定の条件でコマンドを確実に実行できる機能です。
CLAUDE.md に書いていた指示を、必要に応じてHooksに登録すると良さそうですね!

公式引用(翻訳)

Claude Code フックは、Claude Code のライフサイクルのさまざまなタイミングで実行されるユーザー定義のシェルコマンドです。フックを使うと、LLM がコマンドを実行するかどうかに依存せず、必ず実行される確定的な制御を Claude Code に与えられます。

例としては次のようなものがあります。

  • 通知: Claude Code が入力待ちやコマンド実行の許可を求めているときに、独自の通知方法を実装する
  • 自動フォーマット: すべてのファイル編集後に .ts は prettier、.go は gofmt のように実行する
  • ログ取得: コンプライアンスやデバッグのため、実行されたすべてのコマンドを追跡・集計する
  • フィードバック: Claude Code がコードベースの規約に従わないコードを生成した場合に自動でフィードバックを返す
  • カスタム権限: 本番ファイルや機密ディレクトリの変更をブロックする

これらのルールをプロンプト指示ではなくフックとしてコード化することで、「提案」ではなく「アプリレベルのコード」として毎回確実に実行させることができます。

公式

https://docs.anthropic.com/en/docs/claude-code/hooks

Claude CodeにMCPサーバーを設定する

Claude Codeは、MCPサーバーを設定できます。
https://docs.anthropic.com/ja/docs/claude-code/mcp

とりあえず設定してみたMCPサーバーは以下です。

Context7(最新の公式ドキュメント情報を取得)

OSSライブラリのバージョンが上がることで、LLMが持っているドキュメントやライブラリ情報は古いものになっていきます。この問題を解決するために有効なのが Context7 です。
Context7は、最新の公式ドキュメント情報を提供してくれるため、LLMは最新のドキュメントやライブラリ情報に基づいてタスク実行をしてくれるようになります。

https://github.com/upstash/context7

Brave-Search(Web検索)

Brave-Searchは「Web検索(= 外部のBrave Search APIを用いた検索リクエスト)」専用のMCPサーバーとして機能します。
要するに Web検索用のMCPサーバー です。

https://github.com/modelcontextprotocol/servers-archived/tree/main/src/brave-search

GitMCP

GitMCPは、publicなGitHubリポジトリのMCPサーバーを自動で作成するサービスです。AIアシスタントがリポジトリのコードやドキュメントを深く理解するのを助け、より文脈に沿った正確な応答を生成できるようになります。

https://github.com/idosal/git-mcp

DeepWiki MCP

DeepWiki MCPは、DeepWikiに索引付けされたGitHubリポジトリのドキュメントに対して、質問応答やコンテンツの読み取りといった機能を提供します。リポジトリに関する情報を対話的に取得するのに役立ちます。

https://mcp.deepwiki.com/

https://x.com/itsandrewgao/status/1925222552546517397

他にも便利なMCPサーバーは沢山存在すると思うので、見つけ次第設定して試したりしたいと思います!

https://zenn.dev/sun_asterisk/articles/mcp_security_risk

CC使用量解析ツール

ccusage というツールを使用することで、Claude Codeのトークン使用量とコストを可視化できます。

npx ccusage@latest というコマンド一発で確認出来ます。

https://github.com/ryoppippi/ccusage

Puppeteer MCPサーバー(ブラウザ自動化)

Puppeteer MCPサーバーを使用することで、Claude Codeがブラウザ操作ツールを使用してくれるようになります。

  • Webページの自動操作
  • ページのスクショ
  • UI検証

などに活用できます!また、MAXプランなら定額でやれます。

公式のベストプラクティスにもPuppetter MCPの使い方について記載されています!
https://www.anthropic.com/engineering/claude-code-best-practices

参考にさせていただいたポスト

https://x.com/riku720720/status/1928336193823068196

Git worktree

"Git worktree" とは、
1つのGitリポジトリから、複数の作業ディレクトリを作成できる機能 です。

複数のブランチで並行開発したい時に便利な機能です。

主な特徴:

  • 同じリポジトリの異なるブランチを同時に開ける
  • ブランチ切り替えなしで複数の作業が可能
  • .gitディレクトリは共有される

公式でも、Git Worktreeを使用した並列セッションが推奨されています。

https://docs.anthropic.com/ja/docs/claude-code/common-workflows#git-worktreeで並列claude-codeセッションを実行する

以下の記事が分かりやすく解説されているのでオススメです!
https://zenn.dev/siu_issiki/articles/git_worktree

まとめ

Claude Codeの理解を深めるため、とりあえずやったことを記事にしました!
CC(Claude Code)関連で何かやって便利だなと思ったことなど、またこちらの記事に追記したいと思います!

脚注
  1. ツールポイズニング(tool poisoning):AIが外部ツール(MCPサーバーなど)を呼び出す際、そのツール側(MCPサーバー)が 意図的または偶発的に不正・誤情報・悪意あるコードを返し、AIの出力やユーザー環境に悪影響を与えてしまうリスク全般のこと。 ↩︎

Discussion