コンテンツにスキップ

Claude Code 完全ガイド

⏰ Claude Code × Cron完全自動化ガイド - 定期実行でタスクを効率化

🎯 概要

Claude Codeとcronを組み合わせることで、開発タスクを完全自動化できます。本ガイドでは、cronによる定期実行設定から実際の運用まで、実践的な実装方法を解説します。

2026年2月時点の最新環境

  • Claude Code v2.0+: Compaction機能により長時間cronセッションでもコンテキスト溢れを防止
  • Claude Opus 4.6: エージェントチーム機能・1Mコンテキストベータ・適応的思考を搭載
  • Hooks統合: 14種類のHookイベントで、cronエラー時の通知やログ処理を自動化可能
  • 非対話実行: --dangerously-skip-permissions フラグまたは .claude/settings.json のAllowlistで権限制御

この記事のポイント

🚀 効率化効果

  • 開発速度: 3-5倍向上
  • 手作業削減: 80%以上削減
  • 品質向上: 一貫した処理による品質安定化
  • 運用負荷: 大幅軽減

🛠️ 基本セットアップ

1. Claude Code環境の準備

# Claude Code インストール確認
claude --version

# 認証設定(未設定の場合)
claude auth login

# 非対話実行の権限設定(以下のいずれかを使用)

# 方法1: --dangerously-skip-permissions フラグ(スクリプト実行時に指定)
# cron実行時に全ての権限確認をスキップする
claude --dangerously-skip-permissions -p "タスクを実行"

# 方法2: .claude/settings.json でAllowlistを設定(推奨)
# 許可するツール/コマンドを明示的に指定できるため、より安全
cat << 'SETTINGS' > .claude/settings.json
{
  "permissions": {
    "allow": [
      "Bash(npm test*)",
      "Bash(npx eslint*)",
      "Bash(npx tsc*)",
      "Read",
      "Write"
    ]
  }
}
SETTINGS

非推奨: claude config set auto_approve true

旧バージョンで使用されていた claude config set auto_approve true は廃止されました。上記の方法に移行してください。

2. Cronジョブ設定

# crontab編集
crontab -e

# 基本的な定期実行例
# 毎日午前9時にコード品質チェック(-p でプロンプトを直接渡す)
0 9 * * * cd /path/to/project && claude --dangerously-skip-permissions -p "コード品質をチェックしてレポートを作成"

# 毎時実行(テスト自動化)
0 * * * * cd /path/to/project && claude --dangerously-skip-permissions -p "テストを実行して結果をSlackに通知"

# 平日毎朝(レビュー自動化)
0 8 * * 1-5 cd /path/to/project && claude --dangerously-skip-permissions -p "昨日の変更をレビューしてPRコメントを作成"

🔧 実践的な自動化パターン

パターン1: コード品質管理

#!/bin/bash
# ~/scripts/claude-quality-check.sh

PROJECT_PATH="/path/to/your/project"
REPORT_PATH="/tmp/quality-report-$(date +%Y%m%d).txt"

cd "$PROJECT_PATH"

# Claude Codeで品質チェック実行(--dangerously-skip-permissions で非対話モード)
claude --dangerously-skip-permissions -p "
プロジェクト全体のコード品質をチェックして以下を分析してください:
1. ESLintエラーと警告の修正
2. TypeScriptの型エラー解決
3. セキュリティ脆弱性チェック
4. パフォーマンス改善提案
5. コードの重複検出

結果をMarkdown形式でレポートとして作成してください。
" > "$REPORT_PATH" 2>&1

# Slack通知(オプション)
if command -v slack-cli &> /dev/null; then
    slack-cli -t "daily-reports" -m "コード品質レポートが完了しました: $REPORT_PATH"
fi

Cron設定

# 毎日午前9時に品質チェック実行
0 9 * * * /home/user/scripts/claude-quality-check.sh

パターン2: 自動テスト & デプロイ

#!/bin/bash
# ~/scripts/claude-test-deploy.sh

PROJECT_PATH="/path/to/your/project"
LOG_FILE="/var/log/claude-deploy-$(date +%Y%m%d-%H%M).log"

cd "$PROJECT_PATH"

# Git変更確認
if git diff-index --quiet HEAD --; then
    echo "変更なし - スキップ" >> "$LOG_FILE"
    exit 0
fi

# Claude Codeでテスト自動実行
claude --dangerously-skip-permissions -p "
以下の手順で自動テスト・デプロイを実行してください:

1. 全テストスイートの実行
2. テスト失敗時の原因分析と修正
3. lint/typecheck の実行と修正
4. ビルドの実行と検証
5. 成功時のみデプロイ実行

各ステップの結果を詳細にログ出力してください。
エラーが発生した場合は処理を停止し、詳細な原因を報告してください。
" >> "$LOG_FILE" 2>&1

# 結果をメール送信(オプション)
if [ $? -eq 0 ]; then
    echo "デプロイ成功: $(date)" | mail -s "Deploy Success" admin@example.com
else
    echo "デプロイ失敗: $(date)" | mail -s "Deploy Failed" admin@example.com
fi

Cron設定

# 平日夜間に自動デプロイ
0 22 * * 1-5 /home/user/scripts/claude-test-deploy.sh

パターン3: 定期レポート生成

#!/bin/bash
# ~/scripts/claude-weekly-report.sh

PROJECT_PATH="/path/to/your/project"
REPORT_DIR="/reports/weekly"
WEEK=$(date +%Y-W%U)

mkdir -p "$REPORT_DIR"
cd "$PROJECT_PATH"

# 週次レポート生成
claude --dangerously-skip-permissions -p "
先週の開発活動について包括的なレポートを作成してください:

## 📊 開発統計
- コミット数とコントリビューター分析
- コード変更量(追加・削除行数)
- ファイル変更頻度分析

## 🐛 品質分析
- 新規バグとその修正状況
- テストカバレッジの変化
- パフォーマンスメトリクス

## 🚀 機能開発
- 新機能の実装状況
- 進行中の機能と完了予定
- 技術的課題と解決策

## 📋 次週の計画
- 優先タスクの提案
- 技術的改善項目
- リソース配分の提案

Markdownテーブルとグラフを使用して視覚的に分かりやすくしてください。
" > "$REPORT_DIR/report-$WEEK.md"

Cron設定

# 毎週月曜日午前8時にレポート生成
0 8 * * 1 /home/user/scripts/claude-weekly-report.sh

🔒 セキュリティ設定

環境変数の安全な管理

# ~/.claude-env
export CLAUDE_API_KEY="your_api_key_here"
export PROJECT_PATH="/secure/path/to/project"
export NOTIFICATION_WEBHOOK="your_webhook_url"

# 権限設定
chmod 600 ~/.claude-env

Cronスクリプトでの環境読み込み

#!/bin/bash
# セキュアな環境設定読み込み
source ~/.claude-env

# Claude Code実行
cd "$PROJECT_PATH"
claude --dangerously-skip-permissions -p "セキュアな処理を実行"

📋 高度な設定例

条件分岐付き実行

#!/bin/bash
# ~/scripts/claude-smart-automation.sh

PROJECT_PATH="/path/to/project"
cd "$PROJECT_PATH"

# Git変更の確認
CHANGES=$(git diff --name-only HEAD~1 HEAD | wc -l)

if [ "$CHANGES" -gt 10 ]; then
    # 大きな変更時は詳細チェック
    claude --dangerously-skip-permissions -p "
    大規模な変更が検出されました。以下を実行してください:
    1. 全テストスイートの実行
    2. セキュリティ監査
    3. パフォーマンステスト
    4. 詳細なコードレビュー
    "
elif [ "$CHANGES" -gt 0 ]; then
    # 小さな変更時は軽量チェック
    claude --dangerously-skip-permissions -p "
    軽微な変更を検出。以下を実行してください:
    1. 関連テストの実行
    2. Lint チェック
    3. 基本的なコードレビュー
    "
else
    echo "変更なし - スキップ"
fi

ロードバランシング対応

#!/bin/bash
# 複数プロジェクトの並列処理

PROJECTS=("/project1" "/project2" "/project3")
MAX_PARALLEL=3

process_project() {
    local project_path=$1
    cd "$project_path"

    claude --dangerously-skip-permissions -p "
    プロジェクトの健全性チェックを実行:
    1. 依存関係の更新確認
    2. セキュリティアップデート
    3. パフォーマンス最適化提案
    "
}

# 並列実行
for project in "${PROJECTS[@]}"; do
    ((i=i%MAX_PARALLEL)); ((i++==0)) && wait
    process_project "$project" &
done
wait

Hooks連携: cronエラー時の自動通知

v2.0 Hooks統合

Claude Code v2.0のHooks機能を使えば、cron実行中のエラーを自動検知してSlackやメールに通知できます。

# .claude/settings.json にHook設定を追加
cat << 'SETTINGS' > .claude/settings.json
{
  "permissions": {
    "allow": [
      "Bash(npm test*)",
      "Bash(npx eslint*)",
      "Read",
      "Write"
    ]
  },
  "hooks": {
    "on_error": {
      "command": "/home/user/scripts/notify-error.sh"
    }
  }
}
SETTINGS
#!/bin/bash
# ~/scripts/notify-error.sh - Hookから呼び出されるエラー通知スクリプト

ERROR_MSG="${1:-Unknown error}"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

# Slack Webhook通知
curl -s -X POST "$NOTIFICATION_WEBHOOK" \
  -H 'Content-Type: application/json' \
  -d "{\"text\": \"[CRON ERROR] ${TIMESTAMP}: ${ERROR_MSG}\"}"

📊 監視とログ管理

ログローテーション設定

# /etc/logrotate.d/claude-automation
/var/log/claude-*.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    sharedscripts
    postrotate
        # ログローテーション後の処理
        systemctl reload rsyslog > /dev/null 2>&1 || true
    endscript
}

実行状況監視

#!/bin/bash
# ~/scripts/claude-health-check.sh

HEALTH_LOG="/var/log/claude-health.log"
ALERT_THRESHOLD=5

# 失敗回数カウント
FAILURES=$(grep -c "ERROR\|FAILED" "$HEALTH_LOG" | tail -1)

if [ "$FAILURES" -gt "$ALERT_THRESHOLD" ]; then
    # アラート送信
    echo "Claude automation failures: $FAILURES" | \
    mail -s "Claude Automation Alert" admin@example.com
fi

🚨 トラブルシューティング

よくある問題と解決法

1. 権限エラー

# Cronで実行時にPATHが異なる問題
# crontabで環境変数を明示的に設定
PATH=/usr/local/bin:/usr/bin:/bin
SHELL=/bin/bash

0 9 * * * cd /project && /usr/local/bin/claude --dangerously-skip-permissions -p "タスク実行"

2. Claude Code認証問題

# 認証情報の確認
claude auth status

# 再認証(必要に応じて)
claude auth login --force

# 設定ファイルの確認
cat ~/.claude/config.json

3. メモリ不足エラー

# メモリ使用量制限
ulimit -v 2097152  # 2GB制限

# Claude実行
claude --dangerously-skip-permissions -p "軽量なタスクに分割して実行"

v2.0 Compactionによるメモリ効率化

Claude Code v2.0のCompaction機能は、長時間実行されるcronタスクに最適です。コンテキストウィンドウが一杯になると自動的に要約・圧縮されるため、以前のように途中でコンテキスト超過エラーが発生する問題が大幅に軽減されます。大規模なコードベース分析やレポート生成など、長時間かかるタスクも安定して実行できます。

デバッグ用設定

#!/bin/bash
# デバッグモード付きスクリプト

set -euo pipefail  # エラー時停止
set -x             # コマンド実行表示

# ログ出力設定
exec 1> >(tee -a /var/log/claude-debug.log)
exec 2> >(tee -a /var/log/claude-debug.log >&2)

echo "$(date): Claude automation starting"

# Claude実行
claude --dangerously-skip-permissions -p "デバッグ用タスク"

echo "$(date): Claude automation completed"

📈 パフォーマンス最適化

バッチ処理の効率化

#!/bin/bash
# バッチ処理最適化

# 複数タスクを1回のClaude呼び出しで実行
claude --dangerously-skip-permissions -p "
以下のタスクを効率的にバッチ実行してください:

## タスクリスト
1. ESLintの実行と修正
2. TypeScriptエラーの解決
3. テストの実行
4. ドキュメントの更新
5. パッケージ依存関係の更新

各タスクの結果を段階的に報告し、
エラーが発生した場合は詳細な解決方法を提示してください。
"

リソース使用量の最適化

# CPU使用率を制限
nice -n 10 claude --dangerously-skip-permissions -p "重い処理タスク"

# メモリ使用量を監視
while true; do
    MEM_USAGE=$(ps aux | grep claude | awk '{sum+=$6} END {print sum/1024}')
    if (( $(echo "$MEM_USAGE > 1000" | bc -l) )); then
        echo "Memory usage high: ${MEM_USAGE}MB"
        # 必要に応じて処理を調整
    fi
    sleep 30
done &

🔗 関連リンク

💡 まとめ

Claude Code × Cronの組み合わせにより、開発ワークフローを完全自動化できます。v2.0のCompaction機能により長時間タスクの安定性が向上し、Hooks統合でエラー通知も自動化できるようになりました。適切な設定とトラブルシューティング知識により、安定した自動化環境を構築し、開発効率を大幅に向上させることができます。

🎯 次のステップ

  1. 基本的なcronジョブから開始
  2. 段階的に複雑な自動化を追加
  3. 監視・ログ体制の整備
  4. セキュリティ設定の強化
  5. Hooks連携によるエラー通知の自動化