satetsu888のブログ

アラサーwebエンジニアのブログ

僕はなぜエラーメッセージを読むのか

すっかり春になったので、フレッシュな気持ちを思い出そうと少し前のQiitaの記事 ペアプログラミングして気がついた新人プログラマの成長を阻害する悪習 - Qiita を再読した感想と考えたこと。


前述の記事のコアな部分を本当にざっくり一言にしてしまうなら、問題を解決するための”切り分け”と”情報収集”をする習慣をつけましょう、くらいになると思う。

プログラミング以外も含めた種々の問題も視野に入れはじめると、切り分け手法はというのはいろいろと考えられて複雑な分野だけど、情報収集手法に関しては人間についてる感覚器の数もたかが知れてるし、そもそも情報はそこにあってそれを読み取るか読み取らないかみたいな部分が論点なので、切り分けに比べるとずいぶん簡単な話だと思う。

自信をもって僕は問題の切り分けができると言い切るのは難しいけど、情報収集に関してはそこそこの自信をもって言えるので、この文章はそれをテーマにする。僕はエラーメッセージを読む*1ことができる人間だ。

情報収集をしない人

人類が表示されたエラーメッセージを読む人だけで構成されていれば世界はもっと平和だろうけど、そうじゃないのは自明だ。 記事の中で述べられているのは開発者向けのエラーメッセージについてだが、話をソフトウェア利用者向けのメッセージにも広げて考えてみると、これを読んでくれている人の頭の中にも1人や2人はコンピュータの訴えを完全無視する人物が思い当たるだろうと思う。僕は典型的なエラーメッセージを読まないタイプの人物をよく知っている。うちの母親だ。

彼女はコンピュータが親切に画面に表示したメッセージを本当に全く読まない。 もちろんメッセージにもヒューマンフレンドリーなものもあればそうでないものもあるし、「ファイル名に使えない文字が含まれています」とか「すでに別のプログラムによって開かれています」みたいなファイルシステム都合のエラーを適切に理解するのは彼女にはやや難しい可能性はある。 ただ、「プリンタが接続されていません」くらい現実世界とリンクしている問題はさすがに読み取って欲しいと思う気持ちが強い。

コンピュータがなにかしらの問題にぶつかって、エラーメッセージを出力したとき、彼女はいつもかの有名な台詞を繰り返しながら僕に報告する。「なにもしてないのに壊れた」そうだ。

コンピュータと人間の役割についての認識

しかし一つ興味深いのは、画面に表示されている「プリンタが接続されていません」というメッセージを"僕"がそのまま読み上げると、彼女にも問題が認識できる(ように見える)ことだ。 どうやらコンピュータの処理フローにおいて問題が発生するとは露程も思っていない、というわけではなくて、コンピュータが発生した問題についての情報を提供しているとは思っていない、状態なのではないかと思われる。 それが人間である"僕"が同じ情報を提供することで、問題の糸口をつかむように見える。

思えば、エラーメッセージを読むタイプの人間はエラーに対して、「怒っている」というような表現をすることが多い気がする。 コンピュータは投げられた例外を拾ったり処理が失敗した場合の分岐に入ったりした場合に、単に指定されたメッセージを描画しているだけで、そこにはなんらかの感情という物は一切存在していない*2にも関わらず、変なことをしたからコンピュータに怒られてしまった、というような感覚はわりと多くの人にもたれていると思う。

コンピュータに対してなんらかの人間性、コミュニケーション可能性を感じている人は彼らの訴えを読み取ることができ、そうでない人には見えないものがエラーメッセージなのではないかと思う。 つまり、エラーメッセージを読むか読まないかというタイプの違いの根源的な部分には、コンピュータを対話と協働が可能なパートナーと見ているか、単に仕事をしてくれるモノと見ているかの違いがあるような気がする。

僕はなぜエラーメッセージを読むのか

結局のところ、エラーメッセージを読む人間というのは、コンピュータとコミュニケーションしながら協働する意思のある人間で、 エラーメッセージを読まない人間というのは、コンピュータが命じられた仕事ができたかできていないかの2値で判断をするような*3人間だというふうに考えられると思う。

じっくりまじめに考えていたはずなのに、僕はコンピュータと友達だからエラーメッセージを読む!というキャプテン翼ばりのロジックで結論を導きだそうとしている。 本当に世の中は友情・努力・勝利だし、今後エラーメッセージを読まない人を見かけるたびに コンピュータはともだち こわくないよ とさわやかな笑顔で叫んだり、エラーメッセージを顔面で止めて見せたりしないといけないというのは気が重いが、今後も引き続きプログラマとして成長していくにはそれも必要なことなのかもしれない。

*1:日本語か英語なら読む。タガログ語だったら読まないかもしれないけどそれは勘弁して

*2:メッセージの文字が赤いと人間がそこに怒りを感じる可能性はある

*3:2値で判断をするタイプの代表例はヒーロー物の悪役のボスだと思う。ヒーロー抹殺に失敗した四天王を順番に殺していくようじゃそりゃ勝てるわけがない。情報収集して欲しい。