エラーに関する質問のテンプレート
MENTAで多くのサポートをさせていただく中で、非常に多くの良い質問をいただいてきました。その中でエラーに関する質問について良い質問のパターンが見えてきたので少し整理しました。そして、それは以下のようにテンプレート化できると考えています。
テンプレート
Aという機能を実現しようとしています。
Bという方針で
Cというコードを実装しましたが、
Dというエラーがでてしまいました。
これに対して
Eという方法で解決を試みましたが、
Fというエラーがでてしまいました。
どのように解決すればよいでしょうか。
順に説明します。
A. そもそも実現したいことを記載する
長期的なお付き合いや契約の前提として共有できている場合を除き、まずは実現したいことを共有すると良いです。もっと良いアプローチを提案してもらえるかもしれません。
B. どういう方針をとっているか
Aに関連するのですが、目的の実現に向けてアプローチは複数存在しえます。その中には不適切なものや難しいもの(エラーを踏みやすい)が含まれています。この点についてもメンターさんの経験に基づいてチェックしてもらったほうが良いでしょう。
C. どういうコードを実装したか
様々なところで指摘されているないようなので守れている方も多いかもしれません。メンターさんは魔法使いではないので、基本的にはエラー内容だけではエラーの解消方法が判断できません。必須の内容といえます。
また、エラーを再現したい場合が多いので、日本語で説明したりスクリーンショットを渡すのではなく、コードをコピペで渡すようにすると良いです。
再現性という観点ではコードの一部ではなくコード全体、コード全体よりもプロジェクト全体を渡すのが懸命です。メンターさんの方がスキルが高いことを考えると、メンティーさんが下手に絞り込みをするより、メンターさんに多くの情報を渡してしまったほうが良いです。(現代のプログラミング学習でインターネットの通信量などを気にする必要はないでしょう)
D. エラーに関する情報
原因が明らかなエラーでない場合、メンターさんはCのコードなどを実行してエラーが再現するかを確認します。この結果によって解析の方向が変わってくるわけですが、「エラーが再現できない」「違うエラーが発生する」ということがよくあるので、メンティーさんの環境でどのようなエラーが発生しているかがとても重要です。
また、人間は最後に悩んでいたことの印象が強いせいか、ご質問の中で後述のFに対してDの情報が少ない、または抜け落ちているケースがあります。今、メンティーさんはFで悩んでいるかもしれませんが、そこまでの道のりが正しい保証はありません。より手前であるDの情報もきちんと整理して伝えるようにすると良いです。
E. 解決のために試みたこと
Eは前提として「エラーに対して何らかの方法で解決にチャレンジ」していることになります。エラーが発生したときは、ぜひすぐにメンターさんに丸投げせずに少しでも良いので自分で解決する癖をつけると良いと思います。そうしなければ、いつまでたっても自分で解決できるようにはなりません。
F. エラーに関する情報
Eに対するエラー内容です。この項目が抜け落ちてしまっている方は結構多いと思います。
「(略)そこでEのようなことも試してみたのですが、うまくいきませんでした」というご質問は結構多いです。たいてい、Fについて聞き返すことになってしまいます。Dに対するEという方針が正しい場合、解くべきエラーはDではなくFになっているのでDと同じように情報を記載してください。
さいごに
プログラミング中にエラーが発生してしまい、なかなか解決できないときはこの記事の内容を参考にメンターさんに相談すると良い関係が続きやすいかもしれません。
このナレッジで扱った内容はあくまで理想の話です。質問をためらってしまうようでは元も子もありませんので、難しけれもう少しハードルをさげて質問してしまっても大丈夫だと思います。(MENTAのメンターさんは優しい方ばかりです。)
それでは、皆さん勉強頑張ってください!