なぜこう書くのか
コーディング問題のヒントを得るためにAIへ問題を投げると、大抵はいきなり完成した解答コードが出力されます。そのコードはほぼ正しく、提出すればAC(正解)になります。しかしそれでは本質を理解しないまま進んでしまい、似た問題に出会ったときにまた同じところで手が止まります。このプロンプトは、あえて「答えをすぐに出させない」ための仕掛けです。
役割を「勉強会のメンター」に設定したのは、口調を整えるためだけではありません。メンターという役割には「学習者を自力で到達させる」という目的が組み込まれているため、後続の制約が自然に守られやすくなります。同じ指示を「シニアエンジニア」に与えると、リファクタリングされたコードから出力されがちです。
ヒントを3段階に分けた点が最大の要点です。アルゴリズム学習で必要なサポートの度合いは人によって異なります。条件を1行見落としていただけの人には第1段階で十分であり、それ以上の情報は単なるネタバレになってしまいます。段階を分けて途中で止めさせることで、必要な分だけヒントを受け取ることができます。
制約にある「正解に近いコードスニペットも書かないでください」という指示は、1行コードなどで答えが漏れてしまうのを防ぎます。さらに「どこからズレているのかをまず指摘してください」を加えることで、アプローチが間違っていた場合にAIが勝手に新解法へ乗り換えてしまい、自分がなぜ間違えたのか分からないままになる事態を防ぎます。
用語が分からなければAha AIで: role-prompting, chain-of-thought
悪い例との比較
この問題どう解けばいい? 実行時間オーバーになる
(問題とコードを貼り付け)
ハッシュマップを使うべきという解説とともに、完成したコードが即座に出力されます。貼り付ければ通過するため、学習はそこで終わってしまいます。「なぜ二重ループを減らす必要があるのか」「自分のコードはどこで同じ値を再探索しているのか」という本質に気づけないため、次回以降も自力で解く力が身につきません。
バリエーション
コードは動くがなぜ動くのか理解できないとき
以下のコードは他人の解答を参考にして書いたもので、テストは通過しますが、なぜこれでうまくいくのか論理的に説明できません。コードを修正するのではなく、核となる処理の行を3箇所だけ選び、その行がないと何が破綻するのかを説明してください。最後に、私が自分の理解を確かめるための確認用の問いを2つ提示してください。
""" {{私のコード}} """
答えはすでに分かっていて、理解を深めたいときに使います。「ないと何が破綻するか」を尋ねることで、各行の表面的な解説ではなく、その処理が必要な根本理由を引き出せます。
問題文の意味自体が理解できないとき
以下の問題を、解法には触れずに分かりやすく噛み砕いて説明してください。問題が求めている入力と出力を表形式で整理し、条件の中形で見落としやすいポイントを2つ挙げて教えてください。サンプル入力を1つ手動でトレースし、なぜその出力になるのかを示してください。ただし、アルゴリズムやコードには一切言及しないでください。
""" {{問題の説明}} """
問題文が長かったり翻訳が不自然で、前提条件の把握で迷っているときに使います。解法への言及を禁止することで、問題文の読解と要件定義のみに焦点を絞れます。
モデル別の注意
答えを見たくなったら「第3段階のヒントまでください」のように段階を指定して依頼してください。最初からコードを要求すると、ヒントの制限が簡単に解除されてしまいます。
AIモデルは親切に教えようとする傾向が強いため、対話が長くなるとヒントの制限が緩みがちです。回答にコードが混ざり始めたら、「コードは書かずに、次の段階のヒントだけください」と改めて念押ししてください。また、問題文を画像キャプチャで渡すと制約条件や入力範囲を読み間違えることがあるため、テキストとして貼り付けることを推奨します。
関連プロンプト
最終更新 2026-09-02 · 誤りがありますか? 知らせる