こんにちは!
Algomatic ネオセールスカンパニーで営業 AI エージェント 「アポドリ」 を開発している 只野 です。
以前、Vercel v0からReact+Hono環境への移行戦略──Cursor活用で進める段階的マイグレーション では、Cursorを活用していることをお伝えしました。
今回は、Cursorを使った開発体験をより良くするための「問いかけ型プロンプト」についてお話しします。
はじめに:Cursorが思い通りに動かない理由
「Cursorを使ってみたけど、思った通りに動かない」
そんな経験、ありませんか?
コーディングエージェントに「〇〇を実装して」と命じたのに、返ってきたのは表面的で粗いコード。思わず「いや、そうじゃなくて……」とモヤモヤしながら、結局自分で書き直す。
そんなことを繰り返していませんか?
実はその原因、AIの性能ではなく“問い方” にあるかもしれません。
スタンフォード大学の研究では、ソクラテス式の問いかけがAIの応答の正確性や創造性を高めることが示されています。 arxiv.org
Cursorのようなコーディングエージェントは、命令に従うロボットではなく、考える“パートナー” として活用することで本領を発揮します。
鍵となるのは、「命令」ではなく、問いかけをベースにしたプロンプト設計です。
本記事では、実際の開発シーンをもとに「命令型」と「問いかけ型」の違いを掘り下げ、以下のようなポイントを解説します:
- なぜ“問い”がより深い出力を引き出すのか?
- 効果的な問いの立て方とは?
- 実際どれだけ違いが出るのか?
これらをコード付きの事例とともにご紹介します。
Cursorを「コードを吐くだけのツール」から、「共に考えるパートナー」へと進化させるヒントを、ぜひ持ち帰ってください。
命令と問いかけ:何がどう違うのか?
実例で比較:命令型 vs 問いかけ型プロンプト
命令型プロンプト
入力: 「ホバー時に色が変わるボタンを実装して」
返ってくるコード例:
<button className="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded"> ボタン </button>
一見動くが、課題も…
- デザインシステムに非対応
- アクセシビリティ非考慮
- 状態管理なし
問いかけ型プロンプト
入力: 「ユーザーがホバー時に視覚的なフィードバックを得られるボタンコンポーネントは、どのように実装すべきですか?既存のデザインシステムとの整合性も考慮したいです。」
返ってきた内容(一部):
- shadcn/uiに準拠したButtonコンポーネント
- 色・フォーカス・状態のバリアント対応
- ダークモードやレスポンシブ対応
- アクセシビリティ基準に準拠した設計
命令型 vs 問いかけ型 比較表
観点 | 命令型 | 問いかけ型 |
---|---|---|
意図の明確さ | 「何をやるか」に集中 | 「なぜやるか」を踏まえる |
出力の質 | 表面的・単機能 | 文脈に沿った本質的な提案 |
提案の深さ | 指示通りに即処理 | 前提と背景を踏まえた最適解を提示 |
対話の質 | 一方通行 | 相互理解・学びが生まれる対話 |
ケーススタディ:問いかけがもたらす具体的な違い
ケース1:売上グラフの設計を再考する
シナリオ: 営業チームが月次売上を直感的に把握できるダッシュボードを構築したい。
命令型プロンプト
「売上データを棒グラフで表示して。Rechartsを使い、データは/api/sales/monthly
から取得」
結果:
- 最低限の表示は可能
- ローディング・エラー処理なし
- デザインやUXが一貫していない
問いかけ型プロンプト
「営業チーム向けに売上傾向を視覚化するには、どのようなグラフUIを設計すべきですか?UXや保守性も考慮したいです。」
提案された内容:
- 折れ線・棒・複合グラフの選択肢と使い分け
- React Query による状態管理
- スケルトン表示・エラーハンドリング
- UIライブラリに準拠したスタイリング
改善後のコード例(抜粋):
const { data, isLoading, error } = useQuery('monthlySales', fetchMonthlySales); if (isLoading) return <Skeleton className="w-full h-[300px]" />; if (error) return <Alert message="売上データの取得に失敗しました" />; return ( <Card> <CardHeader> <CardTitle>月次売上推移</CardTitle> </CardHeader> <CardContent> <ResponsiveContainer height={300}> <BarChart data={data}> <XAxis dataKey="month" /> <YAxis tickFormatter={formatCurrency} /> <Tooltip formatter={(v) => formatCurrency(v)} /> <Bar dataKey="amount" fill="var(--primary)" /> </BarChart> </ResponsiveContainer> </CardContent> </Card> );
ケース2:ユーザーリストのパフォーマンス改善
シナリオ: 500件以上のユーザーを表示するリストでUXが劣化。描画パフォーマンスを改善したい。
命令型プロンプト
「React.memoとuseCallbackでパフォーマンスを改善して」
結果:
- 部分的な最適化にとどまり、構造的な改善には至らない
問いかけ型プロンプト
「ユーザーリストの描画が遅いです。原因として考えられる要因と、効果的な最適化方法は何ですか?」
提案された内容:
- 仮想スクロール(react-window)導入
- ページネーション設計
- Lazy Loadや画像最適化戦略
実装例(抜粋):
<InfiniteLoader isItemLoaded={isItemLoaded} itemCount={itemCount} loadMoreItems={loadMoreItems} > {({ onItemsRendered, ref }) => ( <FixedSizeList ref={ref} height={600} width="100%" itemCount={itemCount} itemSize={ROW_HEIGHT} onItemsRendered={onItemsRendered} > {Item} </FixedSizeList> )} </InfiniteLoader>
実践Tips:「命令」を「問い」に変えてみよう
命令型→問いかけ型の変換例
命令型 | 問いかけ型 |
---|---|
ログイン画面を作って | セキュリティとUXを両立するログイン画面は、どう設計すべき? |
このバグを修正して | この問題の根本原因は何か?どう直すのが最適か? |
コードをリファクタして | 可読性と保守性を高めるには、どんな改善が有効か? |
良い問いをつくる4つのコツ
- 目的を明確にする:「なぜそれをやりたいのか?」
- 文脈を伝える:「誰のための、どんなユースケースか?」
- 制約条件を明示する:「使用ライブラリや仕様は?」
- 思考を開く問いにする:「他に方法は?」「最適な選択肢は?」
問いかけ型プロンプトがもたらす構造的優位性
「実装方法(How)」をAIに委ねる価値
命令型プロンプトでは、What(何を)とHow(どうやって)を人間が担い、AIは「決められた処理」を実行するだけでした。
問いかけ型では、WhatとWhyを人間が提示し、HowをAIに委ねるという役割分担が生まれます。これがAIの知的能力(文脈理解・構造設計・代替案の提示など)を最大限に引き出す鍵となります。
委ねることの効果:
観点 | 委ねる価値 |
---|---|
多様性 | 人間が思いつかない解法が生まれる |
柔軟性 | 状況や制約に応じた判断が可能になる |
学習効果 | AIの提案から人間が学べる |
保守性 | 設計レベルでの持続可能な対応ができる |
AIを「指示の受け手」から「思考パートナー」へ
命令型ではAIは“指示待ち”。問いかけ型では“設計パートナー”へと進化します。
項目 | 命令型 | 問いかけ型 |
---|---|---|
発想力 | 人間に依存 | AIも発案に参加 |
学習効果 | 一方的 | 人間の思考も深まる |
意図共有 | 不明瞭 | 背景・目的が伝わる |
保守性 | 応急処置的 | 設計レベルでの改善につながる |
まとめ:問いが引き出すAIの真価
優れたエンジニアは、良い問いを持っています。
Cursorが思い通りに動かない…と感じたとき、それは命令の精度ではなく、問いの質が鍵になっているかもしれません。
明日からできること
- 命令を1つ「問い」に変えてみる
- 設計意図を言語化する習慣を持つ
- 良い問いの履歴を残し、ナレッジとして蓄積する
AIとの対話の質は、問いの質に比例します。
まずは、たったひとつの「なぜ?」から始めてみませんか?
問いかけ型プロンプトを通じて、AIと共に考える力を育てていきましょう。
エンジニアのみなさん、カジュアル面談させてください
AI駆動開発で異次元に開発速度を加速させたいエンジニアの方、ぜひ弊カンパニーCTOの菊池とカジュアル面談しましょう!