AIを使い始めて1年。最初は適当に質問してたんですけど、だんだん聞き方のコツがわかってきたんですよね。で、作業時間が3分の1になりました。
この記事では、実際に使ってみて効果があった5つの質問方法をシェアします。
▶ この記事を読むとできること
- AIから欲しい答えをちゃんと引き出せる
- コーディングがめっちゃ速くなる
- すぐ使えるテンプレートが手に入る
- 難しい問題もサクッと解決できる
- チーム全体のコードの質が上がる
■ 5つのテクニック一覧
| テクニック | いつ使う? | 何ができる? |
|---|---|---|
| 1. 質問してもらう | 何を作るか曖昧な時 | 考えるべきことが明確になる |
| 2. 比較して選ぶ | 技術を選ぶ時 | 最適な判断ができる |
| 3. 少しずつ進める | 複雑な作業をする時 | ミスを防げる |
| 4. 専門家になってもらう | 詳しくない分野の時 | 高度な知識が得られる |
| 5. テンプレートを使う | 同じ作業を繰り返す時 | 速く・正確にできる |
それでは、一つずつ見ていきましょう!
テクニック1:質問してもらう
● ポイント:AIに先に質問してもらう
なぜ大事なのか
普通は「これ作って」って指示しますよね。でも実は、自分でも気づいてない必要なことって結構あるんです。
AIに質問してもらうと、考えるべきポイントがハッキリします。優秀なコンサルに相談するのと同じ感じですね。
【例】ECサイトの検索機能
[NG] よくある聞き方(曖昧)
ECサイトに商品検索機能を追加したい。React と TypeScript で実装方法を教えて。
問題: どんな検索機能か全然わからない。AIも具体的に答えられません。
[推奨] 質問してもらう方法
ECサイトに商品検索機能を作ります。いきなり答えを出す前に、以下について質問してください:
【技術のこと】
- 使う技術
- 今のシステムとの相性
- 速度の要求
【機能のこと】
- 何を検索する?(商品名だけ?カテゴリも?)
- リアルタイム検索は必要?
- フィルターやソート機能
- 検索結果のページ分け
【画面のこと】
- 検索バーをどこに置く?
- 検索結果の表示方法
- スマホ対応は必要?
これらを確認してから、最適な方法を提案してください。
■ AIの返事例
承知しました。実装の前に、確認させてください:
【技術】
- バックエンドは何を使っていますか?(Node.js、Django、Laravel等)
- データベースは?(MySQL、MongoDB、Elasticsearch等)
- 状態管理は?(Redux、Zustand、Context API等)
【データの量】
- 商品数はどのくらいですか?(100件 / 10,000件 / 100万件以上)
- 同時にアクセスする人数は?
【検索の細かい仕様】
- どの情報を検索しますか?
- 商品名のみ
- 説明文も含む
- タグやカテゴリも含む
- 検索の精度は?(完全一致 / 部分一致 / あいまい検索)
- 検索候補の自動表示は必要ですか?
※ これらが分かれば、最適な方法を提案できます。
▼ 効果の比較
| 項目 | 普通のやり方 | 質問してもらう方法 |
|---|---|---|
| 作業開始 | すぐ | 30分後 |
| やり直し | 3回 | 0回 |
| 完成まで | 5日 | 2日 |
| 満足度 | 60% | 95% |
【ヒント】うまく使うコツ
- 質問項目を準備する: 事前に聞いてほしいことメモっておく
- 優先順位をつける: 絶対必要なことと、あったらいいなってこと分ける
- 具体的に答える: 「適当に」じゃなくて、数字や具体例で答える
- コーディングエージェントのPlan機能を活用: Cursor の Composer、Windsurf の Cascade、GitHub Copilot Edits など、最近のAIコーディングツールには実装前に要件を整理・掘り下げてくれる機能があります。特にCursorのComposerやWindsurfのCascadeは、複数ファイルにまたがる変更を計画的に進められるんでめっちゃ便利です
テクニック2:比較して選ぶ
ポイント:選択肢を並べて比較する
なぜ大事なのか
技術選びで失敗すると、後から直すのめちゃくちゃ大変です。比較する方法使うと、それぞれの良い点・悪い点を数字で見れるから、後悔しない判断ができます。
【例】データベース選び
[NG] よくある聞き方
リアルタイムチャットアプリに最適なデータベースは何ですか?
問題: 一つの答えしか返ってこない。他の選択肢と比べられないんですよね。
[推奨] 比較して選ぶ方法
リアルタイムチャットアプリのデータベースを選んでます。以下の候補について、比較表を作ってください:
【候補】
- MongoDB
- PostgreSQL
- Redis + MySQL
- Firebase Realtime Database
【評価項目】(各10点満点)
- リアルタイム性能
- 規模の拡大しやすさ
- 開発スピード
- 運用コスト
- チームの慣れ(PostgreSQL経験者が多い)
- 将来の拡張性
【前提】
- 最初のユーザー:1,000人
- 1年後の想定:10,000人
- メッセージ保存:無期限
- 添付ファイル:画像・動画に対応
各候補の点数と理由、おすすめを教えてください。
■ AIの返事例(比較表)
リアルタイムチャットアプリのデータベース比較
| 評価項目 | MongoDB | PostgreSQL | Redis+MySQL | Firebase |
|---|---|---|---|---|
| リアルタイム性能 | 7/10 | 6/10 | 9/10 | 10/10 |
| 規模の拡大 | 9/10 | 7/10 | 8/10 | 9/10 |
| 開発スピード | 8/10 | 7/10 | 6/10 | 10/10 |
| 運用コスト | 7/10 | 9/10 | 7/10 | 6/10 |
| チームの慣れ | 5/10 | 9/10 | 7/10 | 4/10 |
| 将来の拡張性 | 9/10 | 9/10 | 8/10 | 7/10 |
| 合計 | 45/60 | 47/60 ★ | 45/60 | 46/60 |
★ おすすめ:PostgreSQL + WebSocket
理由:
- チームの強み活用: PostgreSQL経験者が多いから、学習コスト最小
- コスト: 自社サーバーで運用できて長期的にめっちゃ安い
- 将来性: JSON型が使えて柔軟性バッチリ
- 実装: リアルタイム通信はWebSocket、データ保存はPostgreSQLで分ける感じ
※ 次の候補: 予算に余裕があればFirebase(開発スピード重視の場合)
【ヒント】うまく使うコツ
- 数字で評価: 「良い/悪い」じゃなくて点数で評価する
- 重要度をつける: 大事な項目には係数かける
- 具体例を示す: 「○○くらいの規模」って具体的に伝える
- チームの状況も伝える: 経験とか予算の制約も全部含める
- 【重要】Web検索を有効にする: Claude (with search)、ChatGPT (with Bing/browsing)、Perplexity、GitHub Copilot (with Bing) などのWeb検索機能を必ずONにしてください。特に技術比較では、フレームワークのバージョンや最新のベンチマーク結果が重要なので、検索なしだと2023年以前の古い情報で判断してしまう可能性があります
テクニック3:少しずつ進める
● ポイント:小さく進めて、その都度確認する
なぜ大事なのか
複雑な機能を一気に作ると、途中で方向ズレてても気づきにくいんですよね。少しずつ進める方法だと、各ステップで立ち止まって確認できるから、修正がめっちゃ楽です。
【例】認証システムの改善
[NG] よくある聞き方
このauth.jsファイルを改善して、もっと保守しやすいコードにしてください。
問題: AIが全部一度に変更しちゃう。途中で方向合わなくても修正難しい。
[推奨] 少しずつ進める方法
auth.jsの改善をサポートしてください。
【重要なルール】
- 作業を小さなステップに分けてね
- 1ステップ終わるごとに止まって、私の確認を待ってね
- 私が「OK、次へ」って言うまで次に進まないでね
- 各ステップで「何を」「なぜ」「どうやって」を説明してね
【現状】
- 600行の auth.js ファイル
- 複数の役割がごちゃ混ぜ(認証、権限管理、セッション管理)
- テストが書けない構造
【ゴール】
- 役割ごとにファイルを分ける
- テストしやすい構造にする
- TypeScript化
まず全体の計画を教えてください。その後、私のOKもらってからステップ1に進んでください。
■ AIの返事例(段階的なプラン)
改善の全体計画(6ステップ)
| ステップ | 作業内容 | 成果物 | リスク |
|---|---|---|---|
| Step 1 | 現状分析と関係性の確認 | 関係図 | 低 |
| Step 2 | 共通関数の抽出 | utils.ts | 低 |
| Step 3 | 認証ロジックの分離 | authService.ts | 中 |
| Step 4 | 権限管理ロジックの分離 | authzService.ts | 中 |
| Step 5 | セッション管理の分離 | sessionService.ts | 高 |
| Step 6 | ユニットテスト追加 | *.test.ts | 低 |
□ この計画で進めてよろしいですか?
問題なければ「OK、次へ」ってコメントしてください。修正が必要なら、具体的に教えてください。
「OK、次へ」と返信すると…
▶ Step 1:現状分析と関係性の確認
作業内容:
auth.jsファイルを分析して、以下を明確にします:
- どの関数がどの関数を呼んでるか
- 外部への依存(データベース、Redis、外部API)
- グローバル変数の使い方
分析結果:
auth.js の構造
├── 認証関連(200行)
│ ├── login() → validateCredentials() → generateToken()
│ ├── logout() → invalidateToken()
│ └── refreshToken() → validateRefreshToken() → generateToken()
│
├── 権限管理関連(150行)
│ ├── checkPermission() → getUserRoles() → hasPermission()
│ └── requireAdmin() → checkPermission()
│
├── セッション管理(180行)
│ ├── createSession() → Redis.set()
│ ├── getSession() → Redis.get()
│ └── destroySession() → Redis.del()
│
└── 共通関数(70行)
├── hashPassword() → bcrypt
├── comparePassword() → bcrypt
└── generateTokenId() → uuid
【問題点】
× 全ての関数が auth.js に集中してる
× テストする時に Redis と DB の実体が必要
× 1つの変更が全体に影響しちゃう可能性
【完了】Step 1 完了
この分析で問題なければ「OK、次へ」ってコメントしてください。次は Step 2(共通関数の抽出)に進みます。
▼ 効果の比較
| 項目 | 一度に全部 | 少しずつ進める |
|---|---|---|
| 作業時間 | 5時間 | 4時間 |
| やり直し | 3回 | 0回 |
| バグ発見 | 完成後 | 各ステップで発見 |
| 理解度 | 50% | 90% |
【ヒント】うまく使うコツ
- 「次へ」の合図を決める: チームで同じキーワード使う
- 各ステップの時間を確認: 1ステップ30分以内が目安
- 戻れるようにする: 各ステップでコミットして巻き戻せるようにしとく
- 疑問があればすぐ止める: わからないまま進めない
テクニック4:専門家になってもらう
● ポイント:AIに役割を与える
なぜ大事なのか
詳しくない分野のコード書くとき、普通に聞くとざっくりした答えしか返ってこないんですよね。でも、「あなたは○○の専門家です」って役割を与えると、答えの質が全然違います。
これ、ロールプレイって呼ばれてて、めっちゃ効果あります。
【例】セキュリティレビュー
[NG] よくある聞き方
このAPIコードのセキュリティ問題を教えて。
問題: 一般的な指摘しか来ない。深い問題に気づけない。
[推奨] 専門家になってもらう方法
あなたは10年以上の経験を持つWebセキュリティの専門家です。
以下のAPIコードをレビューしてください:
【確認してほしいこと】
- SQLインジェクション対策
- 認証・認可の実装
- 機密情報の扱い
- レート制限の有無
- エラーハンドリング
【レビュー形式】
- 深刻度(高/中/低)
- 具体的な問題点
- 攻撃シナリオ
- 修正方法
■ AIの返事例
セキュリティ専門家として、以下の問題を発見しました:
【深刻度:高】SQLインジェクションの脆弱性
- 問題: ユーザー入力を直接SQLクエリに埋め込んでる
- 攻撃例: `’ OR ‘1’=’1` を入力されると全データ取得される
- 修正: プリペアドステートメント使う
【深刻度:中】JWTトークンの検証不足
- 問題: トークンの署名検証してない
- 攻撃例: 偽造トークンで他人になりすまし可能
- 修正: jwt.verify()で署名検証を追加
▼ 効果の比較
| 項目 | 普通の聞き方 | 専門家になってもらう |
|---|---|---|
| 発見できる問題 | 3個 | 8個 |
| 深刻度の分類 | なし | あり |
| 攻撃シナリオ | なし | 具体的 |
| 修正の質 | 抽象的 | すぐ使える |
【ヒント】うまく使うコツ
- 役割を具体的に: 「専門家」じゃなくて「10年経験のセキュリティ専門家」
- 出力形式を指定: 「リスト形式で」「表形式で」って明確に
- 視点を変える: 「攻撃者の視点で」「レビュアーの視点で」とか
- 複数の役割を試す: 同じコードを「パフォーマンス専門家」「保守性専門家」で見てもらう
- GitHubの既存コードを参考にブラッシュアップ: ゼロから書くより、GitHubで似たような実装を探して、それを参考にAIに改善してもらう方が効率的です。例えば:
- 「GitHubで人気のある認証ライブラリ(PassportJS、Auth0など)の実装を参考に、うちの認証コードを改善して」
- 「OWASPのセキュリティチェックリストに沿って、うちのAPIを見直して脆弱性を修正して」
- 「Airbnb JavaScript Style Guideの基準で、このコードをリファクタリングして」
テクニック5:テンプレートを使う
● ポイント:よく使う質問はテンプレート化
なぜ大事なのか
毎回ゼロから質問文考えるの、めんどくさいですよね。よく使う質問をテンプレート化しとくと、速いし漏れもなくなります。
実際、僕は10個くらいテンプレート持ってて、めっちゃ使い回してます。
【例】コードレビューテンプレート
【テンプレート例】
【基本テンプレート】
以下のコードをレビューしてください。
【確認項目】
- ▢ 可読性:変数名、関数名は適切か
- ▢ パフォーマンス:無駄な処理はないか
- ▢ エラーハンドリング:エラー処理は十分か
- ▢ テスト:テストは書きやすいか
- ▢ セキュリティ:脆弱性はないか
【出力形式】
- 良い点を3つ
- 改善点を優先度順に
- 改善後のコード例
コード:
[ここにコードを貼る]
▼ よく使うテンプレート集
| 用途 | テンプレート名 | 使う場面 |
|---|---|---|
| コードレビュー | レビューテンプレート | プルリク前 |
| バグ調査 | デバッグテンプレート | エラー発生時 |
| リファクタリング | 改善提案テンプレート | コード整理時 |
| API設計 | 設計レビューテンプレート | 新機能開発時 |
| ドキュメント | README生成テンプレート | ドキュメント作成時 |
【ヒント】うまく使うコツ
- 自分用のテンプレート集を作る: NotionとかGistに保存しとく
- チームで共有: みんなで使えば質が揃う
- 定期的に更新: 使ってみて改善点があったら追加
- プロジェクト別に: React用、Python用みたいに分ける
- カスタム指示機能を活用: 最近のAIコーディングツールにはテンプレートを再利用しやすい機能があります:
- Cursor: `.cursorrules` ファイルでプロジェクト全体のルールを定義
- GitHub Copilot: Custom Instructions で個人用の指示を設定
- Windsurf: Cascade Rules で段階的な作業フローを保存
- Cline (旧Claude Dev): Custom Instructions でタスク固有の指示を保存
まとめ
この記事では、AIで開発を3倍速くする5つのテクニックをシェアしました:
- 質問してもらう – AIに先に質問してもらう
- 比較して選ぶ – 選択肢を並べて比較する
- 少しずつ進める – 小さく進めて、その都度確認する
- 専門家になってもらう – 詳しくない分野でも高度な知識を得る
- テンプレートを使う – 同じ作業を効率化する
これらのテクニックを使うと、AIとの対話がめっちゃ生産的になって、作業時間を大幅に短縮できます。ぜひ明日から使ってみてください!








