Claude Code定期実行で開発効率10倍:cronジョブ+バッチ処理の実践パターン¶
この記事の対象者
- Claude Codeで定期実行環境を構築したい中級者開発者・DevOpsエンジニア
この記事のポイント¶
- Claude Codeによる安全なcronジョブ設定の実装
- エラーハンドリング付きバッチスクリプトの作成
- ログ監視とアラート通知の自動化設定
なぜこの問題が今重要か¶
手動の定期作業(ログ解析、データ更新、レポート生成)が開発チームの30%の時間を圧迫している。Claude Codeの自動化機能を活用すれば、これらの作業を無人化し、開発者は創造的な作業に集中できる。
解決ステップ概要¶
| ステップ | 内容 | 到達指標 |
|---|---|---|
| 1 | Claude Code自動実行環境構築 | cronジョブが正常起動 |
| 2 | エラーハンドリング付きスクリプト作成 | 障害時の自動復旧 |
| 3 | 監視・アラート設定 | 実行状況の可視化 |
ステップ1: Claude Code自動実行環境構築¶
最も重要なのは実行コンテキストの準備とcronジョブの安全な設定です。
# 1. 専用ディレクトリ作成と権限設定
mkdir -p ~/claude-automation/{scripts,logs,config}
chmod 755 ~/claude-automation/scripts
# 2. 環境変数ファイル作成
cat << 'EOF' > ~/claude-automation/config/env.sh
#!/bin/bash
export CLAUDE_API_KEY="your-api-key"
export LOG_LEVEL="INFO"
export WORKSPACE_PATH="/path/to/your/project"
export NOTIFICATION_EMAIL="your-email@domain.com"
EOF
chmod 600 ~/claude-automation/config/env.sh
ステップ2: エラーハンドリング付きバッチスクリプト作成¶
実運用で必須となる障害対応とロバストな処理を実装します。
#!/bin/bash
# ~/claude-automation/scripts/claude-batch-runner.sh
set -euo pipefail
source ~/claude-automation/config/env.sh
LOGFILE="~/claude-automation/logs/batch-$(date +%Y%m%d).log"
LOCKFILE="/tmp/claude-batch.lock"
# ロック機能(重複実行防止)
exec 200>"$LOCKFILE"
if ! flock -n 200; then
echo "$(date): Already running" >> "$LOGFILE"
exit 1
fi
function cleanup() {
rm -f "$LOCKFILE"
}
trap cleanup EXIT
# メイン処理(例:データ分析とレポート生成)
function main() {
echo "$(date): Starting Claude Code automation" >> "$LOGFILE"
cd "$WORKSPACE_PATH" || exit 1
# Claude Code実行(エラー時リトライ付き)
for i in {1..3}; do
if claude-code --batch analyze-logs --output-format json; then
echo "$(date): Success on attempt $i" >> "$LOGFILE"
break
else
echo "$(date): Failed attempt $i, retrying..." >> "$LOGFILE"
sleep 30
fi
done
}
main "$@" 2>&1 | tee -a "$LOGFILE"
ステップ3: 監視・アラート設定¶
実行状況の可視化と障害時の即座な通知体制を構築します。
# crontab設定(毎日午前2時に実行)
0 2 * * * /home/user/claude-automation/scripts/claude-batch-runner.sh >/dev/null 2>&1
# 実行結果監視スクリプト
0 8 * * * /home/user/claude-automation/scripts/check-batch-status.sh
よくある落とし穴と対処¶
| 症状 | 原因 | 即時対処 |
|---|---|---|
| cronが動かない | PATH環境変数未設定 | スクリプト内でフルパス指定 |
| 重複実行エラー | ロック機能なし | flockによる排他制御実装 |
| ログが膨張 | ローテーション未設定 | logrotateで自動削除設定 |