AIコーディング 2026.04.21

Claude Codeで繰り返し作業を自動化する5つの方法【スラッシュコマンド・Hooks・CLAUDE.md】

タグ:Claude Code / 自動化 / ワークフロー

Claude Codeの自動化機能を活用する

Claude Codeには、繰り返し作業を自動化するための仕組みが3つあります。

機能用途設定場所
カスタムスラッシュコマンド定型プロンプトをワンコマンド化.claude/commands/*.md
Hooksツール実行前後に自動処理~/.claude.json or プロジェクト設定
CLAUDE.mdプロジェクトのルール・制約を常時適用CLAUDE.md

これらを組み合わせることで「毎回同じ指示を入力する」無駄がなくなります。

方法1:カスタムスラッシュコマンド

プロジェクト内の .claude/commands/ ディレクトリにMarkdownファイルを置くと、/project:ファイル名 で呼び出せる定型コマンドになります。

設定例:コードレビューコマンド

# .claude/commands/review.md
変更されたファイルを確認して、以下の観点でコードレビューをしてください:

1. **バグリスク**: NullPointerException、型ミス、境界値エラー
2. **セキュリティ**: SQLインジェクション、XSS、認証漏れ
3. **パフォーマンス**: N+1クエリ、不要なループ、メモリリーク
4. **可読性**: 変数名、関数の責務、コメントの必要性

問題点があれば深刻度(高/中/低)を付けて、修正案も提示してください。
問題なければ「LGTM」と一言添えてください。

呼び出し方:

/project:review

設定例:テスト生成コマンド

# .claude/commands/test.md
$ARGUMENTS で指定されたファイルのユニットテストを生成してください。

要件:
- テストフレームワーク: Vitest(TypeScript)
- カバレッジ目標: 主要なロジックとエッジケースをカバー
- モック: 外部依存はvi.mock()で差し替え
- テスト名: 日本語でわかりやすく記述

生成後は `npx vitest run` で動作確認してください。

呼び出し方($ARGUMENTS にファイルパスが渡る):

/project:test src/utils/formatDate.ts

よく使うカスタムコマンドの例

コマンド用途
/project:review変更ファイルのコードレビュー
/project:testユニットテスト自動生成
/project:commit変更内容からコミットメッセージ生成
/project:doc関数・クラスのJSDocコメント生成
/project:migrateDBマイグレーションファイル生成

方法2:Hooksで自動処理

Hooksは、Claude Codeがファイルを保存したりコマンドを実行した前後に自動でシェルスクリプトを走らせる機能です。

設定ファイルの場所

グローバル設定(全プロジェクト共通)は ~/.claude.json、プロジェクト固有は .claude/settings.json に記述します。

Hook の種類

Hookタイミング
PreToolUseツール実行前
PostToolUseツール実行後
StopClaude の応答完了後

設定例:ファイル保存後に自動lint

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "npx eslint --fix $CLAUDE_FILE_PATHS && npx tsc --noEmit"
          }
        ]
      }
    ]
  }
}

Claudeがファイルを書き込むたびにESLintとTypeScriptの型チェックが自動実行されます。エラーがあればClaude Codeの次の応答に反映されます。

設定例:危険なコマンドの実行前確認

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"$CLAUDE_TOOL_INPUT\" | grep -E '(rm -rf|DROP|DELETE FROM)' && echo 'DANGEROUS_COMMAND_DETECTED' || true"
          }
        ]
      }
    ]
  }
}

設定例:タスク完了時にSlack通知

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "curl -s -X POST $SLACK_WEBHOOK_URL -d '{\"text\":\"Claude Codeのタスクが完了しました\"}'"
          }
        ]
      }
    ]
  }
}

長時間のバッチ処理を実行中に離席し、完了したらSlackで通知を受け取る使い方が便利です。

方法3:CLAUDE.mdでルールを常時適用

CLAUDE.md はClaude Codeがセッション開始時に自動で読み込むルールファイルです。毎回同じ制約・前提を伝える手間がなくなります。

効果的なCLAUDE.mdの書き方

# プロジェクト設定

## 技術スタック
- Next.js 15 App Router / TypeScript strict mode
- Prisma + PostgreSQL
- Tailwind CSS + shadcn/ui

## コーディングルール
- `any` 型は禁止。不明な型は `unknown` を使う
- Server Componentをデフォルトにする。`"use client"` は最小限に
- 全入力はZodでバリデーション

## 禁止事項
- ファイル削除・移動は実行前にユーザーに確認
- `git push --force` は禁止
- 本番DBへの直接操作は禁止

## よく使うコマンド
- 開発サーバー: `npm run dev`
- 型チェック: `npx tsc --noEmit`
- テスト: `npm run test`

プロジェクト別とグローバルの使い分け

ファイル適用範囲
./CLAUDE.mdそのプロジェクトのみ
~/.claude/CLAUDE.md全プロジェクト共通

グローバルには「常に日本語で答える」「コミットメッセージはConventional Commitsで」などの個人の作業スタイルを書き、プロジェクト固有のルールはローカルの CLAUDE.md に分けるのがおすすめです。

方法4:定期実行(GitHub Actions連携)

Claude Codeをサーバーで定期実行する場合、GitHub ActionsのCronと組み合わせると完全自動化できます。

# .github/workflows/daily-review.yml
name: 毎日コードレビュー
on:
  schedule:
    - cron: '0 1 * * *'  # 毎日UTC 01:00(JST 10:00)
  workflow_dispatch:

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Claude Codeでレビュー実行
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          npm install -g @anthropic-ai/claude-code
          claude -p "昨日のコミットをレビューして、問題点があればIssueを作成して" --allowedTools "Bash,Read,Write"

方法5:スクリプトファイル化(再利用可能なワークフロー)

よく実行する一連の作業をシェルスクリプトにまとめ、Claude Codeに渡すと一貫した品質で実行できます。

#!/bin/bash
# scripts/review-pr.sh
# プルリクエストの自動レビュースクリプト

PR_DIFF=$(git diff main...HEAD)

claude -p "以下のPR差分をレビューしてください。
問題点は深刻度(高/中/低)をつけて箇条書きで。
${PR_DIFF}" \
  --allowedTools "Read,Bash" \
  --output-format json > review-result.json

cat review-result.json | jq '.result'

Before/After:自動化の効果

Before(自動化なし)

  • 毎回「TypeScriptの型チェックをして」と入力
  • コミットのたびに「コミットメッセージを考えて」と指示
  • 新ファイルを作るたびに「テストを書いて」と依頼

After(自動化あり)

  • ファイル保存後にHooksが自動でtsc実行
  • /project:commit 一発でコミットメッセージ生成
  • /project:test ファイル名 でテスト即生成

繰り返しの指示入力がなくなり、思考リソースを本質的な作業に集中できます。


あわせて読みたい

参考ソース