【ちゃんなるぶろぐ】社会人1年生が日々の学びをアウトプット!

>>> 読書・遊び・プログラミング・アプリ開発などを通して学んだことを、文章という形で出力 <<<

3分でわかる!「プログラマが知るべき97のこと」その⑨

読み終えるまで約3分

 

 

どうも、ちゃんなるです! 

今日も”デキる”プログラマになるべく勉強していきましょう!

 

今回は、次の書籍の一部を要約します。

プログラマが知るべき97のこと』

 

下の記事の続編です↓↓

chan-naru.hatenablog.com

 

 

 

今回選択した3つのテーマ

本書はタイトル通り97のことについて書かれています。

今回は、25~27番目の項目についてまとめます。

  1. 見られて恥ずかしいデータは使わないこと(No. 25)
  2. 言語だけでなく文化も学ぶ(No. 26)
  3. 死ぬはずのプログラムを無理に生かしておいてはいけない(No. 27)

 

①見られて恥ずかしいデータは使わないこと

このテーマで述べられていたことは、

「コメントであれ、あるいはログ、ダイアログ、テストデータであれ常に「これがもし公になったら問題にならないか」と自問せよ。」

ということです。

 

以下、要約です。

 

プログラミング中の「いたずら」や「武勇伝」は珍しい話ではありません。

「誰も見ないから」と言ってコメントやログにしょうもないことを書き込んでしまうのです。

 

しかし、油断していると思わぬタイミングで多くの人の目に触れてしまうことがあります。

本書ではいくつか例が示されていましたが、どれも面白かったので載せます。笑

  • 進捗会議中、まだ機能が実装されてないボタンを顧客がクリックしてしまう。すると「二度とクリックすんじゃねーぞ、バーカ!」と言うメッセージが表示される。
  • レガシーシステムの保守を担当するプログラマが、エラーダイアログの追加を指示される。そこで彼は、既存のログ機能の出力を利用しようと考える。しかし、元々は裏で動いていて出力がユーザの目に触れることはなかったログ機能だったために、保守作業によって「おい、バットマン、データベースのクソ野郎がヘマをしやがったぜ!」と言ったメッセージが画面に表示され、ユーザから見えるようになってしまう。
  • 誰かが、テスト用の管理インタフェースと、製品版の管理インタフェースを混同してしまい、ふざけたデータを入力してしまう。その結果、オンラインストアの顧客が、「等身大ビル・ゲイツ型マッサージロボット、価格100万ドル」と言った商品が売られているのを目にすることになる。

(本書50, 51ページより)

 

一人で黙々と実装をしていると、ふとした瞬間にふざけたくなってしまうでしょう。

しかし、コードに何かテキストを入力する際は、くれぐれも注意してください…!笑

 

 

②言語だけでなく文化も学ぶ

このテーマで述べられていたことは、

「新たな言語とその文化を学ぶことで、従来から使っていた言語でも、より美しいコードが書けるようになる。」

ということです。

 

以下、要約です。

 

ジェームズ・ジョイスの大作『フィネガンズ・ウェイク』は、40ヶ国語を超える言語を駆使した言葉遊びの連続であり、文体という点でも言語という点でも驚異的な作品です。

彼は、外国語の単語やフレーズを多数織り交ぜることにより、自分の表現の幅を広げているとも言えます。

 

これは、プログラマにも言えます。

Andy HuntとDave Thomasは、名著『達人プログラマー』の中で「毎年新たな言語を1つ以上学ぶこと」を勧めています。

 

多くの言語を学ぶ中で、「言語を学ぶと言うのは、ただ文法や構文を覚えるのではなく、その背景にある文化も学ぶこと」であると気づきました。

Rubyを学ぶとC#delegateがうまく使えるようになったり、.NETのGenericsの潜在力を理解することでJavaGenericsを活かせるようになったり、LINQを学んだおかげでScalaを楽に理解できるようになったり…

 

フィネガンズ・ウェイク』を真似て、1つのプロジェクトにPythonJavaErlangC#などを持ち込めば大変なことになるでしょう。

そうではなく、新たな言語から新たな発想を得ること、それにより同じ問題に対して違った解決策を見つけられるようになることが重要なのです。

 

 

③死ぬはずのプログラムを無理に生かしておいてはいけない

このテーマで述べられていたことは、

「「例外が起きたら握りつぶす」は危険。問題が跡形もなく消えてしまうだけである。」

ということです。

 

以下、要約です。

try-catchブロックをコードベースに大量に入れれば、「例外が発生しても絶対に止まらない」と言うアプリケーションを作ることが可能なはずです。 

ただ、これは、もう死んでいる人の体を釘か何かで固定し、無理やり立った状態にしているようなものですが……。

(本書54ページより)

不謹慎ですが、これは一種の風刺です。

 

あるアプリケーションの基底クラスを開発している時のことです。

そのクラスには、発生後どこでも処理されない例外を一手に引き受けるコードが含まれていました。

そこであらゆる例外を処理し、このクラスのインスタンスは自らの意思で死なない限り、永遠に生き続けられるようにしました。

何か予期せぬ事態が起きた時は、何度でも同様のパラメータが渡され、例外処理のコードが繰り返し呼び出されるようにしました。

すると…

この規定クラスを継承したアプリケーションで何か問題が起きても、その問題は跡形もなく姿を消してしまいます。

どんなことが起きたのか、そのわずかな手がかりも残りません。

 

後々改修が困難になって大変な状況になったことは想像に難くないでしょう。。。

 

そしてその以上なメカニズムを破棄し、代わりに最小限の例外処理と通をするだけの堅牢なメカニズムを組み込みました。

もちろん、そうするとクラッシュが頻繁に起きるようになってその対策をしました。

 

例外を握りつぶすことは危険です。

その時はアプリケーションがクラッシュせず問題ないように思えるかもしれませんが、後々改修不能になってしまう場合があります。

エラーが出た時にそれがどこで、何が問題で出たエラーなのかわからなくなり、手のつけようがなくなってしまうのです。

 

まとめ

「誰も見ないから」と言ってテキストで遊んでしまうと、それが公になった時に大変困ります。気をつけましょう!笑

②複数の言語を学ぶことで、いつも使っている言語の表現力が磨かれることがあります!一つの言語に固執せずたくさんの言語、またその背景を学んでいきましょう!

③例外処理を多用してアプリケーションを延命させてはいけない。エラーが起きてクラッシュするのは普通であり、そのクラッシュを元にエラーを対処していくべきである。

 

*より深く知りたい方は、ぜひ本書を手にとってみてください!

書籍情報

プログラマが知るべき97のこと [ ケブリン・ヘニー ]

価格:2,090円
(2021/5/13 11:12時点)
感想(1件)

 

【中古】 プログラマが知るべき97のこと /ケブリンヘニー【編】,和田卓人【監修】,夏目大【訳】 【中古】afb

価格:825円
(2021/5/13 11:12時点)
感想(0件)

【書籍名】プログラマが知るべき97のこと

【著者名】ケブリン・へニー、夏目大(訳)

【出版社】オーム社

【出版日】2010年12月

【ページ数】243ページ