質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.84%

  • プログラミング言語

    643questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

  • アルゴリズム

    369questions

    アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

何故かうまくいったことをスルーするべきか

解決済

回答 11

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 671

Alberta_Fagni

score 16

プログラミングにおいて、あるエラーに引っかかっている際にこうすればうまくいくかもしれないという曖昧な方法でそのエラーを対処することに成功した場合、そのうまくいった理由を考察するべきでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 11

+12

「あるエラー」は解消されたかもしれませんが、あなたが気が付いていないだけで、「別の問題」が発生しているかもしれません
リスクを軽減するには、考察を進める必要があると考えます。

視点を変えると、たとえエラーが起きていなくても動作原理の分かっていないコードを使うべきではありません。
今回、エラーがあることが調査する契機になっていますが、エラーがなくてうまく動作しているように見えても同じです。
「あなたが知らないコード」は、「あなたが予想できない動作を発生させる可能性があるコード」です。

「予想できない動作」をバグといいます。
バグをなくす為には、あなたが書いたコードを、あなた自身が良く理解している必要があります。

Re: Alberta_Fagni さん

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+6

こんにちは。

あるエラーに引っかかっている際にこうすればうまくいくかもしれないという曖昧な方法でそのエラーを対処することに成功した場合、

これってよくありますよね。仮説を立てて「実証」できたということですね。まずはほっとする瞬間です。

そのうまくいった理由を考察するべきでしょうか。

忙しい時、ついついサボりたくなりますようね。まじさぼっちゃうことも...でも、結構高い確率でしっぺ返しがきます。早めに顕在化してくれれば良いのですが、客先で顕在化するとなかなか嫌なものです。
私自身はできるだけ、その対処が正しいことの確信が持てる程度まで確認するよう心がけてます。

必要部分を十分に把握できていないケースでは頭痛いです。可能な範囲で努力して、それでもダメならその状況を上司へ報告したり同僚と共有したりしておいた方が良いと思います。自分一人で抱えていると誰もフォローできませんから。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+4

理解できてないまま、コピペのツギハギや、
場当たり的なデバッグや修正をガチャガチャやってても、
運良く動いてしまうことも、現実にはあるでしょう。

しかし、正しく理解して、正しく動かすのが、プログラミングの正攻法です。


目の前の面倒ごとを早く片付けたいという気持ちは分かります。
teratailでも、エラーメッセージを読まないような質問者は多いですし。

しかし、理解することで次回以降のデバッグが早くなっていって、
結果的に早く作れるようになるんです。
デバッグや不具合対応が一番時間かかるから。

一方、「たまたま動いたからいいや」とか表面的な解決だと、
いつまで経っても同じミスを繰り返してしまうわけです。


もう少し深く掘り下げます。

たんなるタイポ(タイピングミス)とかではなく、
難度の高いバグ、レアケースのバグに遭遇した場合は、
バグが容易に理解できない、動いても理解できないかもしれません。

理解するのが正攻法ですが、時間が取れず、完成を優先させたい場合もあるでしょう。
そういうとき、コメントに「なぜか動いた」とか書いて済ますのではなく、
全体のコードを保存しておいて(そもそもバージョン管理で履歴を取るのが良い)、
バグレポート(バグ票、不具合票とか、いろいろな呼び方がある)を書きます。
そこには、バグの発生条件、または再現方法と、本来の仕様、想定した動作を書きます。

バグレポートが溜まっていくと、バグ発生の条件を絞り込めます。
また、時間が取れたときには、そのレアなバグを再現させる
テストを書いたりして、原因追求を進めていきます。

非常に面倒ですが、こうしてバグの原因を特定していくと、
システム全体が安定してきます。やらないと不安定なまま。
開発規模が大きくなるほど、そういう地味なバグ管理が重要です。


そういう技術的資産と負債の差が、何年か経つと大差になるわけです。
ここら辺の話は、以前にも回答したので、リンクを貼っておきます。

知るべきことはなんですか?|teratail

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+3

そのうまくいった理由を考察するべきでしょうか。

考察するのはうまくいった理由ではなくなぜエラーになるのかではないでしょうか。
原因がわかっていないのにうまくいった理由だけ考えても意味がないです。
例えばある計算処理の結果がなぜか1多いから、とりあえず1引きました、って言ってるようなもんです。
なぜ1多いかを解明しないといけません。
まあ、うまくいった理由を考察すれば自ずとエラーの原因も見えると思いますが、スタート地点を改めた方が良いと思いますと言う回答です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/19 17:27

    うまくいった理由とエラーの原因両方を考察するようにします
    ありがとうございます

    キャンセル

  • 2017/12/19 19:45

    > 例えばある計算処理の結果がなぜか1多いから、とりあえず1引きました
    耳に痛い話は必要な話ですね o_0 +1

    キャンセル

+3

根拠のないブラックボックスを経由する形での結果的な成功は危険です。いつどこで、結果が変わるかわかりません。

以下、参考
ちなみに、ブラックボックスの過信はクラッカーの格好の的となります。便利ツールに見せかけた(便利機能自体も搭載している)ウイルスというのはいくらでもありえます。手口も進歩しており、現存の正規ソフトに不正処理を加えるようなウイルス作成ツールも実在します。

ソフトウェアに限らず例えばキーボードにロガーが仕込まれていたり、偽サイトを作って正規サイトとデータ通信を中継ぎながら入力パスワードを盗み取るというような事例もよくあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

そりゃそうです。
もし、成長したい場合は、ですが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

説明できないコードは一行たりとも書いてはならない。
困るのはコードを読む/メンテする誰かであり、それは多くの場合自分自身である。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

あるエラーに引っかかっている際にこうすればうまくいくかもしれないという曖昧な方法でそのエラーを対処することに成功した場合

ユーザーが最も恐怖を感じることのひとつは、作り手が理解できていないものを使わされていた事実を知ったとき

・・・と、私は思います

「わからないですけど、うまくいってるし、何か問題ありますか?」なんて言われたら二度と発注しません

何らかの緊急性をともなう事態に直面している(人命にかかわる、大きな損失を出してしまう、etc)のであれば一時的にそれで走らせることがあるかもしれませんが、「後で何もしない」というのは考えられません

たとえ自分で利用するツールレベルの話しだとしても、隠れている真の問題にまたぶつかることもあるでしょうから、放っておいてよいことはなさそうです

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

こうすればうまくいくかもしれないという曖昧な方法

程度によるんじゃないですかね。
曖昧だった方法論が実証によって検証されたのであれば、それは放置で良いと思います。プログラミングなんて、突き詰めれば突き詰めるほど、ブラックボックスの存在に気が付かされるわけで^^;

ただ、その場合、安心できるまで検証することが必要かと。
漏れのないテストを実施することで、安心したいです!w

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

なぜきちんと動いているように見えるかは、
チームで開発しているなら、他のメンバーに見てもらうのも良いでしょう。
差支えない範囲でここでコードを公開して調べてもらう方法もあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

一度痛い目に合わないと人間は楽な方を選択するものです。
ちょうどよい機会です。不具合が起きた場合、自分自身が痛い目をみるだけで、他人に不幸が降りかからないのであれば、そのまま放置して経過を見守ってみてはいかがでしょうか。
万が一何かよからぬことが発生すれば、対処するために貴方は膨大な時間を費やすはずです。
それは貴重な体験となり、後輩を育てるうえで抜群の説得力を発揮します。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.84%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • プログラミング言語

    643questions

    プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

  • アルゴリズム

    369questions

    アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。