🤖

LLMを処理系として動かせる時代になった

に公開

ClaudeCodeはターミナルからコード生成するために使われる場面が多いですが、非インタラクティブモードも用意されています。これを利用すると、自然文をプログラムとして動作させることができます。

主要なタスクとワークフロー - Anthropic

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