💬

Claude Code の AskUserQuestion で対話型開発を実現する

に公開

はじめに

Claude Code を使っていて、「もっと詳細な仕様を確認したい」「このまま進めていいか不安」と感じたことはありませんか?

Claude Code には AskUserQuestion という強力な機能があり、AI が自動的にユーザーに質問を投げかけ、対話しながら要件を明確化していくことができます。これにより、曖昧な指示からでも高品質な成果物を生み出すことが可能になります。

この記事を読むことで、以下のことができるようになります:

  • AskUserQuestion の基本的な仕組みを理解する
  • 実際の開発シーンでの活用方法を学ぶ
  • スペック駆動開発への応用方法を習得する
  • カスタマイズとベストプラクティスを知る

AskUserQuestion とは

AskUserQuestion は、Claude Code に組み込まれた対話型のツールで、AI が実行を一時停止してユーザーに質問を投げかけ、回答を得てから処理を続行する機能です。

主な特徴

1. 選択式と自由記述の質問

Claude は、状況に応じて選択肢を提示したり、自由記述での回答を求めたりします。

例:認証方式を選択してください
- OAuth 2.0
- JWT トークン
- パスワードベース認証
- その他(自由記述)

2. 段階的な深掘り

一度の質問で終わらず、回答に基づいてさらに詳細な質問を重ねていきます。これにより、最初は曖昧だった要件が徐々に具体化されていきます。

3. 承認フロー

危険な操作(ファイル削除、本番環境へのデプロイなど)を実行する前に、明示的な承認を求めることができます。

なぜ AskUserQuestion が重要なのか

従来の AI コーディング支援ツールは、ユーザーの指示をそのまま解釈して実行するため、曖昧な指示では期待と異なる結果になることがありました。

AskUserQuestion を使うことで:

  • 要件の明確化: 曖昧な指示でも対話を通じて詳細化できる
  • エラーの削減: 誤解による実装ミスを事前に防げる
  • 安全性の向上: 危険な操作の前に確認できる
  • スペック品質の向上: 対話を通じて見落としがちな要件を洗い出せる

基本的な使い方

1. 自動起動

Claude Code は、必要に応じて自動的に AskUserQuestion を起動します。

# Claude Code セッションを開始
claude

# 曖昧な指示を出すと、自動的に質問が始まる
> ユーザー認証機能を追加してください

Claude の応答例:

いくつか確認させてください:

Q1: どのような認証方式を想定していますか?
□ OAuth 2.0(Google、GitHub などの外部サービス連携)
□ JWT トークンベース
□ 従来のパスワード認証
□ その他

2. 明示的な指定

AGENTS.md や カスタムコマンドで明示的に AskUserQuestion の使用を指定できます。

AGENTS.md の例:

要件定義フェーズ

新機能の実装前に、必ず AskUserQuestion を使用して以下を確認してください:

- 機能の目的と想定ユーザー
- 技術スタック
- セキュリティ要件
- パフォーマンス要件

3. 回答方法

選択式の場合:

  • CLI では番号で選択
  • GUI では選択肢をクリック

自由記述の場合:

  • テキストボックスに詳細を記入
  • 必要に応じてコード例も含められる

カスタマイズ方法

プロジェクト固有のルールを AGENTS.md に記載することで、 AskUserQuestion を活用できます。

AGENTS.md の設定例:

新機能実装時のルール

新機能を実装する前に、必ず以下の項目を AskUserQuestion で確認してください:

技術的要件:
- 使用する言語/フレームワークのバージョン
- 依存ライブラリの選定理由
- テスト戦略(単体テスト、統合テスト等)

非機能要件:
- 想定される負荷
- セキュリティ要件
- アクセシビリティ要件

ビジネス要件:
- 対象ユーザー
- 成功指標(KPI)
- リリース時期

危険な操作の承認フロー:

以下の操作は必ず AskUserQuestion で承認を得てから実行してください:
- 本番環境へのデプロイ
- データベースの変更
- 重要なファイルの削除
- 外部サービスへの課金が発生する操作

まとめ

Claude Code の AskUserQuestion は、対話を通じて要件を明確化し、より高品質な成果物を生み出すための強力な機能です。

主なポイント:

  • 対話型開発: AI が質問を投げかけ、段階的に要件を明確化
  • スペック駆動開発: 簡単な要件から詳細な仕様書を生成
  • 安全性の向上: 危険な操作前に明示的な承認を取得
  • カスタマイズ可能: システムプロンプトや AGENTS.md で動作を調整

AskUserQuestion を活用することで、曖昧な指示からでも期待通りの結果を得られるようになります。ぜひプロジェクトで試してみてください。

参考リンク

日本語記事

公式ドキュメント・英語記事

Discussion