AIToday
大規模言語モデルAIコーディングZenn AI/ML掲載日時: 2026年10月18日 10:00

Claude Codeを自作アプリから操作する方法

LINEで送る
Claude Codeを自作アプリから操作する方法

3つのポイント

  1. 何が起きたか

    非公式macOSアプリtanacodeの開発者がstream-json経由でClaude Codeを操作する方法を公開。

  2. なぜ重要か

    1回答で終了し--resumeが必要なclaude -pと違い、stream-jsonは1プロセスを保ったまま多数ターンを処理でき、社内チャットボットやエディタ拡張、CIスクリプトに使える。

わからないところ、AIに聞けます

質問と回答はこのページに公開されます。

こういう要約が、毎朝あなたのメールに届きます。

背景と解説

stream-jsonは、Claude Codeを動かす他の2方式、対話型ターミナル画面と単発のclaude -pコマンドの中間策と位置づけられる。単発モードでは1回答でプロセスが終わるため、会話を続けるには--resumeで再起動が必要で、ターン途中の許可確認に答える手段もない。これに対しstream-jsonは標準入力が閉じられるまでCLIプロセスを開いたままにし、プログラムはターンの進行に合わせてユーザー行を続けて送り、assistant・result・control_requestの各行を受け取れる。

開発者自身のアプリtanacodeは、これが実務でなぜ重要かを示す。バージョン1.xは対話型画面をバックグラウンドで動かしてテキストを読み取り、チャットと許可カードを組み立てていたため、Claude Codeの画面が少し変わるたびに壊れた。バージョン2.0.0はチャットをstream-jsonで作り直して画面読み取りコードを削除し、許可プロンプトや質問はcan_use_tool要求から作るカードになり、回答はcontrol_response行として返る。

運用上の注意点も挙げられている。プログラムは使わない要求にもすべて応答すべきで、中断したメッセージは会話に残り、stream-jsonセッションはclaude --resumeの一覧に表示されないため再開にはinit行のsession_idが必要だ。開発者はstream-jsonの行形式がClaude Codeの更新で変わりうるとし、tanacodeは新たな行種別を検知するため毎日モックAPIに対して最新のClaude Codeを動かしているという。

よくある質問
Claude Codeのstream-jsonとは何か?
アプリとClaude Code CLIが標準入出力で1行につき1つのJSONオブジェクトをやり取りするモード。1プロセスで多数ターンを処理でき、許可要求にもJSONで応答できる。
プログラムからClaudeの許可要求にどう答えるか?
CLIがsubtype can_use_toolのcontrol_requestを送り、アプリは同じrequest_idとbehavior「allow」または「deny」を持つcontrol_responseで応答する。
AskUserQuestionのプロンプトにはどう答えるか?
質問は同じcan_use_tool要求のinput内のquestionsとして届く。アプリは元のinputに、質問から選択肢ラベルへのanswersマップを加えて返す。
LINEで送る

あなたの仕事に関係するAIニュースを、毎朝お届けします。

業界と使っているAIツールを選ぶと、仕事に関係するニュースが毎朝届きます。

登録無料・Googleアカウントなら30秒・いつでも解除できますAITodayについて →

AIに質問

この記事についてわからないことをAIに質問できます。AIはこの記事・AIToday の過去記事・Wikipedia を読み、出典を付けて答えます。Q&Aはこのページに公開され、他の読者も読めます。

質問と回答はこのページに公開されます。

関連記事

次の記事へMeta、AI学習懸念の規約条項を削除