何事もうまくいかないのは大きなストレスです。そのストレスのためにプログラマーとしての道まで諦めてしまうのは非常にもったいないことです。そんな方のために使えるのがコミュニティであったり、Q&Aサービスがあります。しかし、そこでの質問の仕方をしらなければ質問を無視されたり、きつい反応を返されてしまったりします。
今回はそうした経験をしないために、いい質問の仕方について紹介します。
まずは調べよう
分からないことがあったらすぐに聞く、というのでは質問する癖はついても、自己解決する技術が身につきません。まずは自己解決すべく、調べてみましょう。コードを見直してもいいですし、エラーメッセージが出ているなら、その内容をきちんと読んでみましょう。多くの実行環境ではエラーが出た行数を教えてくれますので、その前後の行で何かおかしな記述がないか確認しましょう。
この調べるという行動は後で質問する際にも有効になります。
何かを変更しよう
プログラミングというのは書いた通りにしか動きません。そのため、一度出たエラーは何もコードを変更しなければ解決しません(データを変更する場合はこの限りではありません)。コードをただ見ているだけではダメで、ここじゃないかと思うポイントを変更して再実行するというのを繰り返しましょう。自分の書いたコードが完璧であればちゃんと動きます。思い通りに動かないということはコードに何らかのミスがあるのです。
この変更して試すというのも質問する際に役立ちます。
質問しよう
では自分で調べて、変更してみても解決しなかったなら、質問してみましょう。
レギュレーションを確認しよう
メーリングリストであったり、GitHubのIssue、Q&Aサービスなど質問する方法は様々にありますが、各サービスで質問の仕方を提示している場合があります。それらがある場合には、まずその内容をきちんと読んでおきましょう。質問の仕方や、質問する場所などが特定されている場合があります。
コミュニティでは質問する人も、回答する人もボランティアです。あなたの質問に回答しなければならない義務はありません。そのため、まずはあなたがきちんとルールに沿って行動しなければなりません。それを守らないと、相手もまたあなたをサポートしたいと思わないでしょう。
テンプレートに従おう
例えばフレームワークのバージョン、プログラミング言語のバージョンなどを明記する場合には、きちんと書きましょう。これを書くことによって回答する側もやりやすくなります(原因が特定される情報になります)。関係ないんじゃないだろうか…と思うかも知れませんが、それはあなたの判断でしかありません。相手にとっては情報が適切であるに越したことはありません。
自分が行ったことを書きましょう
どんなエラーが出て、どんな修正を行ってみたか、自分の取った行動について書きましょう。エラーが出ました、分かりませんでは相手もサポートしてあげたいと思えないでしょう。どんな解決策を試みて、それでもダメだったのかをきちんと書くようにしましょう。
再現できる状態にしましょう
エラーが出ているごく一部だけを提示されても相手は何もしようがありません。エラーが出る環境を持っておらず、そのような環境を作るのも大きな手間暇がかかります。回答してくれる人たちにそんな手間を強いるのは難しいでしょう。
エラーが再現できる状態、プロジェクトやコードを提示できると相手も試しやすく、また解決しやすくなります。
時々、プロジェクト全体を送りつける人がいますが、それもよくありません。問題の箇所がどこか分かりませんし、全体を見たいと思う人は多くないからです。問題がある場所だけに限って提出すべきでしょう。
ログも提出しましょう
多くのプログラミング言語では実行ログがあります。その結果を追加するようにしましょう。同様にコマンドを打っているなら、その履歴(historyコマンドで取れます)も追加しましょう。情報不足で回答できないというケースが一番勿体ないです。多すぎても混乱を招くのでよくありませんが、それでも少ないよりはいいでしょう。
問題点と解決したいことをきちんと書こう
意外と多いのが、解決状態を書かない人です。自分の中では現状がどういった問題なのか分かっているのですが、それをきちんと書かないと相手には伝わりません。察して欲しいと思うのは自由ですが、それを他の人に強いるのは無理があります。丁寧に文章を書く必要があります。
まとめ
筆者もQ&Aサイトなどでよく質問に答えていますが、答えやすい質問と答えづらい質問というのは確かに存在します。情報量が適切で、問題点と何を行いたいかがはっきりしていると答えやすいです。また、大量のプログラミングコードを送りつけて「何も分かりません!」と投げられてしまうと困ってしまいます。まず自己解決を前提として、その上で何が分からないのかをはっきりさせなければならないでしょう。
皆さんのプログラミング学習や、プロジェクトが滞りなく進むためにも質問の仕方を学ぶのは大事なことです。ぜひ今回挙げた点に注意してみてください。
]]>