コンテンツにスキップ

Claude Code 完全ガイド

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

TL;DR: Cronで Claude Code を定期実行すると、ログ監視・テスト実行・定期レポート生成を完全自動化できる。本記事では */30 * * * * claude -p "..." の基本形から始めて、エラーハンドリング・ログ管理まで解説する。

対象読者: cron の基本を知っている Linux/macOS ユーザー。Claude Code がインストール済みであることを前提とする。

この記事は2025年8月時点の情報です

CLIコマンド(claude auth loginclaude config set 等)は現行バージョンで変更されている場合があります。最新のCron自動化ガイドは Claude Code × Cron完全自動化ガイド(2025年版) をご参照ください。

🎯 概要

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

この記事のポイント

🚀 効率化効果

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

🛠️ 基本セットアップ

1. Claude Code環境の準備

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

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

# 自動承認設定(重要)
claude config set auto_approve true

2. Cronジョブ設定

# crontab編集
crontab -e

# 基本的な定期実行例
# 毎日午前9時にコード品質チェック
0 9 * * * cd /path/to/project && claude "コード品質をチェックしてレポートを作成"

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

# 平日毎朝(レビュー自動化)
0 8 * * 1-5 cd /path/to/project && claude "昨日の変更をレビューして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で品質チェック実行
claude << 'EOF' > "$REPORT_PATH" 2>&1
プロジェクト全体のコード品質をチェックして以下を分析してください:
1. ESLintエラーと警告の修正
2. TypeScriptの型エラー解決  
3. セキュリティ脆弱性チェック
4. パフォーマンス改善提案
5. コードの重複検出

結果をMarkdown形式でレポートとして作成してください。
EOF

# 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 << 'EOF' >> "$LOG_FILE" 2>&1
以下の手順で自動テスト・デプロイを実行してください:

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

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

# 結果をメール送信(オプション)
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 << 'EOF' > "$REPORT_DIR/report-$WEEK.md"
先週の開発活動について包括的なレポートを作成してください:

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

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

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

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

Markdownテーブルとグラフを使用して視覚的に分かりやすくしてください。
EOF

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 "セキュアな処理を実行"

📋 高度な設定例

条件分岐付き実行

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

ロードバランシング対応

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

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

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

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

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

📊 監視とログ管理

ログローテーション設定

# /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 "タスク実行"

2. Claude Code認証問題

# 認証情報の確認
claude auth status

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

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

3. メモリ不足エラー

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

# Claude実行
claude "軽量なタスクに分割して実行"

デバッグ用設定

#!/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 "デバッグ用タスク"

echo "$(date): Claude automation completed"

📈 パフォーマンス最適化

バッチ処理の効率化

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

# 複数タスクを1回のClaude呼び出しで実行
claude << 'EOF'
以下のタスクを効率的にバッチ実行してください:

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

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

リソース使用量の最適化

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

# メモリ使用量を監視
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の組み合わせにより、開発ワークフローを完全自動化できます。適切な設定とトラブルシューティング知識により、安定した自動化環境を構築し、開発効率を大幅に向上させることができます。

🎯 次のステップ

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