0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code で定型タスクを自動化する — ヘッドレスモード(-p)で「人が見ていなくても回る」作業を作る

0
Posted at

Claude Codeを「対話しながら使うもの」と思っていると、見落としがちな使い方があります。ヘッドレス(非対話)モードです。これを使うと、スクリプトやcronから呼び出して、人が画面を見ていなくても定型タスクを回せます。

  • 毎回手で頼んでいる定型作業(要約・整形・チェック)を自動化したい
  • cronで定期的に同じ処理を走らせたい
  • 結果を別のスクリプトに渡して、パイプラインの一部として使いたい

この記事では、ヘッドレスモードの基本と、定型タスクを自動化する実用パターンをまとめます。

注意: CLIフラグ(-p--output-format--allowedTools など)は変わることがあります。本記事は執筆時点(2026年6月)の公式ドキュメントを参照していますが、利用時は手元の claude --help や最新ドキュメントで確認してください。自動実行はAPI利用料が発生する点にも注意してください。


基本: -p で非対話モードにする

対話セッションを開かず、一回の指示に対して応答だけ返すのが -p(print)モードです。公式ドキュメントの例です。

claude -p "query"

claude -p "..." と書くと、対話画面に入らず、結果を標準出力に返して終了します。これがスクリプトから呼べる形の基本です。


結果を機械的に扱う: --output-format json

スクリプトの中で結果を使うなら、テキストよりJSONのほうが扱いやすいです。公式ドキュメントの例です。

# スクリプト用に構造化出力を得る
claude -p "List all API endpoints" --output-format json

--output-format には text / json / stream-json が指定できます(執筆時点)。後続の処理で結果をパースしたいときは json、ログにそのまま流したいときは text、逐次受け取りたいときは stream-json、という使い分けです。


権限を先に決めておく: 非対話では確認できない

ヘッドレスモードでは、対話のように「実行していいですか?」と聞いて待つことができません。そのため、何を許可するかを起動時に決めておく必要があります。方法は2つあります。

方法1: 許可するツールを明示する

公式ドキュメントによると、--allowedTools で確認なしに実行できるツールを指定できます。記法は権限ルールと同じです。

# 例: 特定の読み取り系コマンドとReadだけ許可
"Bash(git log *)" "Bash(git diff *)" "Read"

方法2: 権限モードを指定する

公式ドキュメントには、--permission-mode でベースの権限モードを設定する例があります。

claude -p "Apply the lint fixes" --permission-mode acceptEdits

acceptEdits を指定すると、ファイル書き込みや一般的なファイル操作を、個別の --allowedTools 指定なしで通せます。

注意: 自動実行では人間の確認が入りません。許可範囲を広げすぎると、想定外の操作まで通ってしまいます。自動化で許可するのは、その作業に必要な最小限のツールだけにするのが安全です。


実用パターン1: cronで定期実行する

-p モードはcronと相性がよいです。たとえば「毎朝、前日の変更点を要約してファイルに書き出す」をcronに登録するイメージです。

# 擬似例: 毎朝のサマリ生成(実際のパスや権限は環境に合わせる)
claude -p "git log の直近1日分を要約して docs/daily-summary.md に追記して" \
  --permission-mode acceptEdits

これをcron(Windowsならタスクスケジューラ)に登録すれば、人が起動しなくても定期的に走ります。実行頻度と内容は、API料金とのバランスで決めてください。

注意: cron実行ではAPIキーの扱いと作業ディレクトリに気をつけてください。キーは環境変数などで安全に渡し、想定したディレクトリで実行されるようパスを明示します。


実用パターン2: 他のスクリプトのパイプラインに組み込む

--output-format json で結果を構造化すれば、後続処理に渡せます。

# 擬似例: 結果をJSONで受け取り、後続のスクリプトで処理する
result=$(claude -p "このログから重大なエラー行だけ抽出してJSONで返して" --output-format json)
# result を別のスクリプトやツールに渡す

「Claudeに判断・整形させて、その結果を既存の処理に流し込む」という、パイプラインの一工程としての使い方です。


自動化を組むときのチェックリスト

人が見ていない状態で動かすぶん、事前の設計が効きます。

観点 確認すること
権限 必要最小限のツールだけ許可しているか(広げすぎていないか)
べき等性 同じ処理を2回走らせても壊れないか(重複追記・重複作成に注意)
失敗時 失敗したときに気づける仕組み(ログ・通知)があるか
コスト 実行頻度 × 1回あたりの消費が、許容できる料金か
検証 自動化する前に、手動で -p を1回流して期待どおりか確認したか

特に**「自動化する前に手動で一度流して確認する」**は外さないでください。非対話で動くということは、間違った指示もそのまま実行されるということです。


まとめ

  • claude -p "..." で非対話(ヘッドレス)モードになり、スクリプトやcronから呼べる
  • --output-format json で結果を構造化し、後続処理に渡せる
  • 非対話では確認待ちができないので、--allowedTools--permission-mode で許可を先に決める
  • 自動化は権限を最小限にし、べき等性・失敗検知・コスト・事前検証を必ず押さえる

まずは**「手元で claude -p を一回流して、期待どおりの結果が返るか」**を確認するところから始め、安定したらcronやパイプラインに載せていくのが安全な順序です。


補足: 自動化に載せる前の土台になる無料リポジトリ

自動で回す処理ほど、CLAUDE.md で前提とルールを固め、進め方を型にしておくと、人が見ていなくても安定します。私が使っているスキルを無料で公開しています。

無料スターター(GitHub・CC BY 4.0):
https://github.com/noguso245-jpg/claude-code-skills-starter

CLAUDE.md設計・計画ファースト開発(PIV)・AIコミット戦略・アジャイルなプロンプト設計の4本のスキルが日本語・英語で入っています。自動化する前に、対話で型を固めておくと、ヘッドレス実行の安定度が上がります。まずは無料リポジトリから試してみてください。


最新のTipsはXでも発信しています: @k___n___t_1125

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?