投稿・相談のヒント

一回の質問で聞きたいことを講師から聞ける上手な質問投稿の方法等を書いてみました。
おいおい、具体例も追加していこうと思っています。


効率的な質問のコツ

  1. 同様の質問がすでにされていないか調べる。
    まずは、同様の質問がすでにされていないか調べてみましょう。
    他の受講生の方と講師とのやりとりを確認してみます。
    そこでズバリあなたが聞きたいことに関するやりとりがあったならば、質問する手間が省けます。

  2. 用語は正しく使う。
    用語は正しく使いましょう。用語の定義を確認して、定義にそった用語を使用しましょう。
    あなたが作った言葉は相手には通じません。定義の定まった言葉を使うことで、あなたの言いたいことが相手に伝わりやすくなります。 また、「正しい用語を調べているうちに、理解が進んで、自己解決してしまった」ということもよくあります。

  3. 事前に資料をあたって自分なりに調べてみる。
    動画ではどう説明されているか?レジュメにはどう記載されているか?確認しましょう。

  4. 自分が試したことをより具体的に書く。
    どんなことを試したのか?どんな関連調査をしたのか?あなた自身が試したことを具体的に記載しましょう。
    そうすれば、「あなたが調べ済のことについての返事が来て、あなたが『それはもう調べました』と返事する」といったあなたにとって非効率なやりとりを省略できます。
    また、あなたが行った調査についての記載が具体的ならば、その調査に漏れがあったり調査結果の解釈に間違いがあったりといった問題があった際に回答者がそれに気づきやすくなります。また、指摘もより具体的なものになります。

  5. 文章は簡潔に。長い一文よりも、複数の短い文で。
    長い一文より、複数の短い文で。
    この原則に従って文章を書くことは、問題をシンプルにします。
    また、プログラムを書くときの思考法を鍛えることにもなるのでおすすめです。


上手な質問文の作り方

質問文の、添削事例を紹介します。

読みやすく伝わりやすい文章を書くためのコツをご覧ください。
この記事では、何が言いたいのか分かりにくい質問文を、読みやすくて聞きたいことが明確な質問文に手直ししていています。
その過程を、コツをお伝えしつつ紹介しています。


プログラムの添削を依頼するときのコツ

動作しないプログラムについて

あなたが書いたプログラムが思うように動作しないという場合の質問のコツは以下のとおりです。

  1. まずは、直前まで動いていたコードと比較する。
    たいてい、プログラムが期待どおりに動かなくなって困るときというのは、あなたにとってややハードルの高いチャレンジをしているときです。

  2. 問題を再現できる最低限のコード量のプログラムを作る。
    プログラムに生じた問題を解決するには、余計なコードをひたすら削る等すると良いです。

  3. エラーメッセージが表示された場合は、投稿時にそのエラーメッセージも記載する。
    エラーメッセージが表示された場合は、投稿時にそのエラーメッセージも記載しましょう。 回答者が、どんなエラーが出たのか?ということを判断する材料になります。

動作するプログラムについて

プログラムの書き方が複数考えられる場合は多々あります。 「お手本とあなたが書いたプログラムでは書き方が違う」という場合、あなたは、あなたが書いたプログラムについて意見を求めたくなるかもしれません。
そういうときの質問のコツは以下のとおりです。

  1. お手本とあなたが書いたプログラムを比較し、メリット・デメリットをリストしてみる
    お手本の書き方と、あなたが書いた書き方とでの、メリット・デメリットを比較してみましょう。

  2. 上記の比較を行ったうえでの、あなた自身の見解を記載する 上記のとおりにメリット・デメリットを比較したうえで、それでも自分の意見を採用したいと考えるようでしたら、そう考える理由を明記してください。
    「一長一短」と考えるのであれば、どういう状況下ではお手本の書き方のほうが優れていると言えるか、どういう状況下ではあなた自身の考えた書き方のほうが優れていると言えるか、比較考察して意見をまとめましょう。

そのほか

  1. 聞きたいことをより明確に。
    あなた自身が何を聞きたいのかをはっきり意識していることが大切です。

  2. いきなり直接フォームに記入しない。
    直接フォームに文章を書いていると、よい質問文を作るのに苦慮することがあります。
    自分が書いていることの全体像も見えにくくなるからです。
    ひと手間かけて、テキストエディタでドラフトしましょう。

  3. ひととおり文章を書き上げたら音読してみる。
    質問文を書いたら音読してみましょう。 誤字脱字、論理の矛盾に気づきやすくなります。

プログラムをコードハイライト表示するには?

プログラムをコードハイライト表示するには、プログラムの前後を以下のいずれかのブロックで囲んでください。
Visual Basic, Python, JavaScript のいずれかの文法に従ってコードがハイライト表示されます。
  • [code] ... [/code]
  • [code vb] ... [/code]
  • [code python] ... [/code]
  • [code js] ... [/code]

例えば、投稿欄から以下のとおりに投稿したとします。
こんにちは!
以下で、コードブロックを使ってプログラムをハイライト表示します。
[code]Sub SampleCode()
    Range("A1").value = 1
    Range("A2").value = 2
    Range("A3").value = 3
End Sub[/code]
無事に、表示されました!
すると、以下のように表示されます。
こんにちは!
以下で、コードブロックを使ってプログラムをハイライト表示します。
Sub SampleCode()
    Range("A1").value = 1
    Range("A2").value = 2
    Range("A3").value = 3
End Sub

無事に、表示されました!

[code] [/code] という記号は、ひとつの投稿内で複数回使用できます。

例えば、投稿欄から以下のとおりに投稿したとします。
こんにちは!以下に、サンプルコードを2つ用意しました。
まずは、1つ目です。
[code]Sub SampleCode()
    Range("A1").value = 1
    Range("A2").value = 2
    Range("A3").value = 3
End Sub[/code]

続けて、2つ目です!
[code]Sub SampleCode()
    Range("B1").value = 1
    Range("B2").value = 2
    Range("B3").value = 3
End Sub[/code]

以上。
2つに分けてコードを記載しました!
すると、以下のように表示されます。
こんにちは!以下に、サンプルコードを2つ用意しました。
まずは、1つ目です。
Sub SampleCode()
    Range("A1").value = 1
    Range("A2").value = 2
    Range("A3").value = 3
End Sub

続けて、2つ目です!
Sub SampleCode()
    Range("B1").value = 1
    Range("B2").value = 2
    Range("B3").value = 3
End Sub

以上。
2つに分けてコードを記載しました!
以下は、 Python のコードを入力した場合の例です。
以下は、Pythonの場合のサンプルコードです。
[code python]def get_media_id_types(medias):
    """
    再帰的に medias をキーに持つ辞書を探し、その内部にある media のリストで、以下を満たす辞書を見つける。
        media['_type'] == "Callout"
    見つけたものについては、必要な情報を取得して辞書とする。
    そして、グローバルで宣言されたリスト  dic_list に格納する。

    :param medias:
    :return:
    """
    for media in medias:
        print(media['id'], media['_type'])

        if media['_type'] == "Callout":
            dic_list.append(get_callout_info(media))

        sub_medias = media.get('medias')
        if sub_medias:
            get_media_id_types(sub_medias)
[/code]
Pythonの場合のサンプルコードここまで。
すると、以下のように表示されます。

以下は、Pythonの場合のサンプルコードです。
def get_media_id_types(medias):
    """
    再帰的に medias をキーに持つ辞書を探し、その内部にある media のリストで、以下を満たす辞書を見つける。
        media['_type'] == "Callout"
    見つけたものについては、必要な情報を取得して辞書とする。
    そして、グローバルで宣言されたリスト  dic_list に格納する。

    :param medias:
    :return:
    """
    for media in medias:
        print(media['id'], media['_type'])

        if media['_type'] == "Callout":
            dic_list.append(get_callout_info(media))

        sub_medias = media.get('medias')
        if sub_medias:
            get_media_id_types(sub_medias)

Pythonの場合のサンプルコードここまで。