はじめに
こんにちは!物流開発部 USED開発ブロックの益田です。
本記事ではClaude CodeのAskUserQuestionツールについて紹介します。
AskUserQuestionとは
ReadやBashなどと同様にClaude Codeに組み込まれたツールのひとつで、ユーザーに選択肢形式の質問を提示してくれる機能です。2025年11月時点では公式ドキュメントにこちらに関する記載はありませんが、Claude Codeにツール定義を確認すると以下のような回答が返ってきます。
活用例
以下はガイドラインに沿ってデータベース設計のレビューを行ってくれるカスタムスラッシュコマンドのmdファイルの一部です。mdファイルに定義を記述することでClaude CodeがAskUserQuestionツールを起動してくれるようになります。
mdファイルに記述がなくても、Claude Codeが自動でAskUserQuestionツールを起動してくれる場合がありますが、確実に使用したい場合はmdファイルに明示的に定義することをおすすめします。
4. **確認対象がある場合は必須**: `AskUserQuestion` ツールで「過去のみ」か「未来を含む」かをユーザーに質問する
- **重要**: 複数のカラムがある場合でも、**1回の `AskUserQuestion` ツール呼び出しで複数の質問(questions配列)を使用**する
- 質問形式:「カラム `{カラム名}` は過去のみですか、未来も含みますか?」
- 選択肢:
- 「過去のみ(過去分詞形推奨)」:そのカラムは常に過去の日時のみを指します。過去分詞形(例: `paid_at`、`started_on`)を推奨します。
- 「未来を含む(現在形推奨)」:そのカラムに未来の日時が含まれる可能性があります。現在形(例: `pays_at`、`starts_on`)を推奨します。
5. 回答に基づき判定:
- 過去のみ → 過去分詞形(例: `payment_at` → `paid_at`、`start_date` → `started_on`)
- 未来を含む → 現在形(例: `payment_at` → `pays_at`、`start_date` → `starts_on`)
実際にカスタムスラッシュコマンドを実行すると、AskUserQuestionツールが起動してインタラクティブな選択肢を表示してくれました。
選択肢の最後のType something.はデフォルトで用意されている入力欄になっています。

全て選択すると最後にSubmitを行うか確認があります。SubmitするとClaude Codeが回答を受け取って処理を続行してくれます。

まとめ
AskUserQuestionツールを使えば、Claude Codeがユーザーに質問しながら進めるようになります。
これまでテキストベースでやりとりしていた内容を、事前に選択肢として組み込むことで、
よりインタラクティブでスムーズなワークフローを実現できます。
ぜひ、皆さんのカスタムスラッシュコマンドやサブエージェントにも取り入れてみてください。

