第3章 エラー と警告
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
「PC Load Letter?」一体全体、どういう意味だ?
マイケル・ボルトン
故障したプリンターを睨みつけながら「 」と呟いたのは、1999年の映画『オフィス・スペース』のマイケル・ボルトンだ。彼はこの一言で、技術業界の貧弱なエラーメッセージを痛烈に批判した。 公平性を期すなら、当時のHPレーザージェットプリンターの画面は表示文字数が限られていた。現代では石器時代を脱し、高解像度画面でより多くのテキストを表示できる。どれほど有益な言葉が表示できるか考えてみろ!
コンシューマは理解できない診断エラーや警告に頻繁に直面し、専門家は混乱するメッセージに時間を浪費して本来のタスクを遂行できない。ユーザはしばしば「離脱リスク」を抱えており、些細な摩擦で製品から離れる可能性がある。
それでも我々技術者は、エラーやエラーメッセージを「エッジケース」として、できるだけ早く実装すべきものとしか扱わない。それは我々の技術の核心であり、製品の差別化の手段であるにもかかわらずだ。
プログラミングに特有の面白いエラーは、テキストマークアップシステムであるLaTeXに由来する。LaTeXは文書組版言語およびシステムであり、数学や科学論文を美しく表現するのに役立つ。
LaTeXで、以下のように入力すると(\\は改行を表す):
This is some text.\\This is at the end of a block of text.\\This is the start of a new paragraph
こんな警告が表示されるんだ:
段落の2行目で未充填の\hbox(深刻度10000)が発生。
この謎を解いてみるか?実はLaTeXは、空白行の前にある2行目の冗長な改行(\\)を除去してほしいと言っているのだ。
このメッセージは不可解だが、エラーが発生したコードを「下から上」に追って見れば、おそらく完全に理にかなっている。コードの組織化上、修正も難しいだろう。二つのスキルを紹介した後で、この例を再検討しよう:
-
実装者である自分にとって理にかなっていることと、ユーザにとって理にかなっていることのギャップを、どう埋めるのか?
-
これを達成するために、コードの組織化を効果的に行うにはどうすればよいか?
重要な点:LaTeXは現在人気プログラミング言語ランキングで40位だが、それでもtex.stackexchange.comで最も閲覧された「underfull hbox」関連質問は35万回以上閲覧されている。 閲覧ごとに読者が3分間原因を推測すると仮定すると、LaTeXの開発者はより良い警告メッセージ、あるいは単にこの余分な改行を黙認するだけで、人類のこの層に約2万時間(現在も増加中)を節約できたはずだ。
診断メッセージは楽しいものにもなり得る。古典的な例を挙げよう:Google検索の「お探しの言葉は」機能だ。ユーザが「compture」という誤字で検索した場合、Googleは検索結果の上部に検索語句と便利なリンクを表示する:
compture.
「コンピュータ」のことか?
このメッセージは二つの重要な役割を果たしている。
-
ユーザが何をしようとしたのかを示す——彼らは「compture」を検索したのだ。
-
最も一般的なスペル修正への便利なリンクを提供することで、何をすべきかを提案する。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access