🤖
LLMを処理系として動かせる時代になった
ClaudeCodeはターミナルからコード生成するために使われる場面が多いですが、非インタラクティブモードも用意されています。これを利用すると、自然文をプログラムとして動作させることができます。
Claude Codeには、ヘッドレス実行のための非インタラクティブモードが付属しています。これは、スクリプト、パイプライン、Github Actionsなどの非インタラクティブなコンテキストでClaude Codeを実行する場合に特に便利です。
サンプル
このサンプルは、Microsoft提供のmgcコマンドを使って、MSTodoの情報を引っ張ってこようとしたものです。
Microsoft Graph コマンド ライン インターフェイス (CLI) をインストールする - Microsoft Graph | Microsoft Learn
途中まではshスクリプトをClaudeCodeで生成させようとしてました。
ただ途中で、ClaudeCodeそのものに処理をさせたらどうか?と思って試したら、うまくできたのです。
~/bin/MSTodo_get.sh
#!/bin/bash
claude --allowedTools "Bash(~/bin/mgc :*)" "Read" -p "~/bin/MSTodo_get.shのコメント部分を読み取って、内容を実行してください"
: '
ここから、LLMに体する指示です。
# MS Todo タスク管理プロンプト
以下のステップを実行して、MS Todoのタスクを表示します:
1. `~/bin/mgc me todo lists list` コマンドを実行してタスクリスト一覧を取得します
2. `~/bin/mgc me todo lists tasks list --todo-task-list-id "<リストID>"` コマンドで特定のリストのタスクを取得します
3. タスクの状態(status)に基づいて、未完了タスク(notStarted)と完了済みタスク(completed)を分類して表示します
## 表示形式
各タスクは以下の形式で表示します:
- 「タスク名」(作成日付)
## オプション
- 未完了タスクのみを表示: `未完了のものだけを表示して` と指示することで、status が "notStarted" のタスクのみを表示します
- 特定のリストのタスクを表示: リスト名を指定することで、そのリストに含まれるタスクのみを表示します
## 例
MS Todoの未完了タスク一覧です:
### デフォルトリスト「タスク」の未完了タスク
- 「シャンプー」(2025/06/22作成)
- 「サンダル」(2025/06/20作成)
- 「半ズボン」(2025/06/20作成)
...
'
shスクリプトの本体でやっているのは、以下のような点です。
- claude codeを非インタラクティブモードで起動する
- 使うツールの権限を設定
動作はコメント部分に、LLMに向けて書いてMarkdown的に書いています
これの実行結果:
% MSTodo_get.sh
## MS Todoの未完了タスク一覧です:
### デフォルトリスト「タスク」の未完了タスク
- 「シャンプー」(2025/06/22作成)
- 「サンダル」(2025/06/20作成)
- 「半ズボン」(2025/06/20作成)
- 「帽子」(2025/06/20作成)
- 「半ズボン買う」(2025/06/18作成)
- 「サンダル、修理するか買いなおすか」(2025/05/31作成)
- 「冬物の片付け」(2025/05/31作成)
- 「揚げ物惣菜」(2025/05/21作成)
- 「うどん」(2025/05/21作成)
- 「上着類をクリーニングに出す」(2025/05/08作成)
%
やってみて
ハマりポイント
- ClaudeCodeが利用できるツールのパーミッション設定をする必要がある
- この辺があまり資料がなく、またClaudeCode自体に聞いても知らない様子
- パス指定を明示的にしておかないと、迷子になりがち
- 当たり前ですが、実行速度は劇遅
- お金がかかる
- プラン設定ができてないと実行する都度お金も飛んできます。
ただ、「LLMを処理系として実行できる」というのがとても良いです。
現状ではCLIにうまくハマりそうです。
今後これがサーバやwebといった部分にもはみ出していくと、、と思うと面白い時代だなと思います。
サンプルもう1つ 「LLMを処理系として動かせる時代になった」の続き
Discussion