AskUserQuestion は「AIが逆に質問してくるためのツール」
Claude Code を使っていると、こちらが指示を出したあとにAIが作業を始めるのではなく、「この部分はAとBのどちらで進めますか?」といった選択肢を提示してくることがあります。この「AIからユーザーに質問を投げる」という動きを担っているのが AskUserQuestion です。
名前をそのまま読めば「ユーザーに質問する」。まさにその通りの機能で、Claude がファイルを読む・コマンドを実行するといった作業と同じ扱いで「人間に聞く」という行動を取れるようにしたもの、と考えると分かりやすいと思います。
リフォーム業者に例えると
家のリフォームを業者にお願いする場面を想像してみてください。「キッチンをきれいにしておいて」とだけ伝えて出かけたとします。良くない業者は、勝手に自分の好みで壁紙の色も蛇口の形も決めてしまい、帰ってきたら想像と全然違う部屋になっている。一方で腕のいい職人さんは、作業の途中で電話をかけてきて「壁紙、白とベージュどちらにしますか?」と聞いてくれます。
AskUserQuestion は、この「途中で電話をかけてくる」に当たる仕組みです。曖昧なまま突き進んで大量のコードを書き上げてしまう前に、判断の分かれ目でこちらに確認を取ってくれる。結果として、やり直しの手間が減ります。
どういう場面で出てくるか
典型的なのは、こちらの指示に複数の解釈が成り立つときです。
- 「認証機能を追加して」と言ったが、どの認証方式を使うか決めていない
- 設計の方針が複数あり、どれを選んでも成立してしまう
- 既存のコードに似た実装が複数あり、どれに合わせるべきか判断がつかない
こういうときに、Claude が勝手に決めてしまうと後で「そうじゃないんだよな」となりがちです。AskUserQuestion はその手前で立ち止まるためのものだと思ってください。
普通のやり取りと何が違うのか
「質問するだけなら、普通に文章で聞けばいいのでは?」と思うかもしれません。実際その通りで、Claude は文章でも質問してきます。ただ、ツールという形になっていることで、質問が選択肢つきの分かりやすい形で提示され、こちらは選ぶだけで答えられる、という違いがあります。
文章で聞かれる場合
会話の流れの中に質問が混ざる。読み飛ばすと、そのまま曖昧な前提で作業が進んでしまうこともある。
AskUserQuestion の場合
「質問である」ことが明示され、選択肢が示される。回答するまで作業が進まないので、見落としにくい。
質問されたらどうすればいい?
提示された選択肢の中に希望のものがあれば、それを選べば作業が再開します。どれもピンとこないときは、無理に選ばず自分の言葉で「実はCの方針でやりたい」と書いてしまって構いません。AIとの対話なので、選択肢は「たたき台」くらいに考えておくのが気楽です。
個人的には、ここで面倒くさがって適当に答えるのが一番もったいないと感じます。AskUserQuestion が出てくるということは、Claude が「ここは勝手に決めるとまずい」と判断した場所なので、一番判断の影響が大きいポイントであることが多いんです。30秒考えて答えるだけで、その後の書き直しが丸ごと消えることもあります。
質問を減らしたいとき
逆に、いちいち聞かれるのが煩わしいという状況もあります。その場合は、最初の指示の時点で前提条件を書き込んでおくのが効きます。「認証はメール+パスワードで」「既存の○○.tsのスタイルに合わせて」といった具合に、判断材料を先に渡しておけば、Claude は質問せずに進めます。
つまり、質問の数は「指示の具体度」とだいたい反比例します。ざっくり投げて対話で詰めるのか、最初に細かく決めて一気に走らせるのか。どちらが良いということはなく、作業の性質で使い分けるものだと思います。
このページは役に立ちましたか?