1. Home
  2. /
  3. プログラミング
  4. /
  5. プログラミングに関する問題はここにきいてみよう

プログラミングに関する問題はここにきいてみよう

QA プログラミング

#プログラム #問題 #調査 #原因 #わからない #不明

本記事中のプログラム例を示すところでは、主としてpythonで記述します。
pythonは現在人気の言語であるということも理由ですが、小生は他の言語との類似性やAIなどにも活用できるという長所など、総合的に他の言語に比べてpythonを推奨しているためです。
また、Windows上でShift-JISコードで利用することを前提にしています。
スポンサーリンク

エラーメッセージが分からない

3つの道筋を活用してプログラムの問題から早く開放されましょう!“では、エラーメッセージの意味が分からなかった場合は、その後にプログラムを修正してみるなどして、別の角度で調査を進めていく方法を説明しています。

しかし、以下のような場合で通常の流れで進められないことがあるかと思います。

・ 何度も修正したり試行錯誤しても分からない
・ 時間がかかるなどの理由でプログラムにprint()のようなデバッグ用の修正ができない
・ 『なぜか直りました』ではなく、説明のためにエラーの原因を理解する必要がある

このような場合は、時間も差し迫っているでしょうから、もはやきくべき人にきくしかありません。楽をするということではなく、知恵を借りて自分も理解して早く解決に導くということです。

プログラム自身が出しているエラーではないか確認する

まず、誰かにきく前に、実はエラーメッセージを出していたのが、自分のプログラム自身だということがないか確認します。
特に、自分ひとりが作成しているプログラムならば、まだ気づくかもしれませんが、他の人が作ったプログラムを自分が修正したりしていた場合、このケースになることは良くあります。
自分のプログラムが出していないかを調べるには、ソースコード内をgrepコマンドや開発ツールの検索機能で調べましょう。

grepコマンドの場合

WindowsでUNIX疑似環境やサブシステム(Cygwin,MinGW,MSYS2,WSLなど)をインストールして使っていれば、この方法を使うことができます。
grepコマンドの生み元であるLinux, SolarisなどUNIX系OSでは、言うまでもなく同様に使うことができます。
下記は、-i (大文字小文字区別なし=ignore case), -r (ディレクトリ配下を再帰的に検索=recursive)で検索する指定です。

grep -ir <エラーメッセージ> <ディレクトリ>
小生はMac使用経験なしですが、MacでもMacターミナルで使えるようです、初めから同梱されているgrepは遅いので、HomebrewでGNU版のgrepを入れたほうが速いという情報があります。

開発ツールの場合

以下はMicrosoft Visual Studio Codeで検索した例です。
見ての通り、簡単に検索できて結果がわかりやすく表示されます。
Microsoft Visual Studio Code以外にも、最近の開発ツールでは同じような検索の機能が備わっています。

Q&Aサイトに質問する

では、プログラミング専門のQ&Aサイトに質問しましょう。

おすすめのQ&Aサイト

Q&Aサイトの中でも、以下のサイトがお勧めです。

・ stackoverflow(スタックオーバーフロー)
  URL(日本版): https://ja.stackoverflow.com
  URL(海外版): https://stackoverflow.com
  日本語で質問する場合は、日本版が質問しやすいですが、海外版のほうが回答者
  が圧倒的に多いため、回答が速いです。
  Weblio翻訳、Google翻訳などを別ウィンドウで開きながら翻訳して海外版に質問
  するのがおすすめです。

・ teratail (テラテイル)
  URL: https://teratail.com
  小生は使用経験がありませんが、どんな質問でも簡単にできるという手軽さが良い
  ようです。

小生は長年、stackoverflow(海外版)を利用しており、通常は英語で検索するだけで見つかります。
一度、質問をしたことがあり、そのときは『絶対に回答が帰ってこなさそうな狭い範囲(そんなにユーザ多くないSolaris)で難しい質問』でしたが、なんと2日もせずに的確な回答が返って来ました。

質問時にこれだけはいれとこ!

質問する人は早く解決したいので、回答者が知らないといけない情報をあまり伝えられていないことに気づいていないことが良くあります。
回答者側も、できるだけ今ある情報から言ってあげられることはないかと考えてしまうことがあり、双方が消耗することになります。
そのため、せっかく回答してくれる回答者が悩まずに回答できるよう、以下のことだけは質問に盛り込んであげてください。

使っているプログラミング言語とそのバージョン

言語によって、それぞれ以下の方法で表示できます。
小生も全ては知りませんが、書ける範囲で記載していますので、ご容赦ください。

pythonpython –version
Javajava -version
Rubyruby -v
PHPWebサーバ(自PC含む)にログインしてPHPプログラムを実行している場合
 php -v
Webサーバにログインできない状態で確認する場合
 ブログのレンタルサーバなどでは、レンタルサーバの管理パネルを見る
 と出てくると思いますが、ない場合は下記へ

 下記の~.phpファイルを作成しWebサーバに配置してhttp://…./~.phpに
 アクセスして実行。うまく動作しないときは .htaccessのリダイレクトや
 phpファイルの実行権を疑う。

  <?php
phpinfo();
?>
JavascriptWebブラウザの種類とバージョンで決まる。
ここには記載できないので調べてください
perlperl -v
C使っているCコンパイラによる。

GNU-C の場合 gcc –version

Microsoft Visual Stdioの場合
 アプリ検索ボックス(Win10), チャームバー(Win8)から”vs”とするか、
 スタートメニューから
  ”Microsoft Visual Studio XX”を見つける。
  大抵はこのバージョンが分かれば十分。
C++GNU-C++ の場合 g++ –version

Microsoft Visual Stdioの場合は、Cと同様
C#.NET Frameworkのバージョンで決まるため、それを伝えます
gogo version
kotlinkotlin -version
小生は現時点でMac(iOS)系のswiftや他にもなどには特に触れていないため、何も書けません。ごめんなさい。 😥 

使っているOSとバージョン

 Windows– [コントロールパネル]-[システムとセキュリティ]-[システム]で表示
– コマンドプロンプトから winver コマンドを実行
 UNIX/Linux cat /etc/*release と uname -a を実行
iOSについては小生は使っていないため、わかりません。ごめんなさい。 🙁 

プログラムのソースコード

全てでなくても、ソースコードの一部を見せてあげましょう。
そして、どこを変えたときに問題が発生するようになったかが分かっている場合は、そのことも伝えましょう。

エラーメッセージ

肝心のエラーメッセージを伝えます。
エラーメッセージが複数出ている場合は、それも伝えましょう。

最後の回答時にはお礼を言いましょう!

最後の回答があったときにはお礼を言って、いいねやチップ、ベストアンサーが付けられる場合は付けてあげてください。
回答者はそれが欲しくて活動されているのですから。

識者を探し出して教えてもらう

最終手段です。そして最も安易な方法です。
使っている言語の識者を

・ 周囲から探す
・ Webで検索する
・ SNSなどを通じて探し出す

ようにして教えてもらいます。

小生のほうでも受け付けていますので、ホームページからメールでご連絡いただきますと、ご相談に乗ります。お気軽にご連絡ください。

まとめ

エラーメッセージはどうしても見逃してしまってプログラミングを先に進めたいという衝動に駆られます
しかし、焦らずにエラーメッセージが訴えている内容に耳を傾け、理解しようとされることをお勧めします。
やることは、

・ プログラム自身が出しているエラーではないことを確認する
・ Q&Aサイトに質問する
・ 識者を探し出して教えてもらう

だけです。
このQ&Aへの質問は、意外と他人にご自身がしてもらいたいことを上手く伝える練習になりますので、ここは一つじっくりと聞き方を考え、取り組んではいかがでしょうか。

コメント

タイトルとURLをコピーしました