Pete Goodliffe : ベタープログラマ

作成日 : 2021-03-19
最終更新日 :

概要

副題は「優れたプログラマになるための 38 の考え方とテクニック」。 本書の内容・目次・正誤表は下記からたどれる。
https://www.oreilly.co.jp/books/9784873118208/

感想

こういう本は役に立つと思う。しかし、無批判に受け入れることも著者の本意ではないと思う。

1章

p.3 の「やってみる」はこうだ。

この本で読む内容に取り組み、質問に答え、「やってみる」の挑戦をすべて試みると決心してください。

こういうことばには用心する。やってみようにもできないことがある。しかし、まずはやってみよう。

2章

p.16 の「やってみる」はこうだ。

あなたの《レイアウトの》好みは、イデオム的で、形式張ることなく、明瞭で首尾一貫していますか。 どのように改善できますか。表現に関してチームのメンバーと意見が異なっていますか。 それらの差異をどのように解決できますか。

イデオム的とはどういうことだろうか。2章全体を見ても、イデオムとは何かという説明がない。 これは本の構成としては好ましいとはいえない。ただ、本書の索引をみると、イデオムは何かについて p.44 に説明があるようだ。 見てみると、「時間と経過と共に研ぎすまされ、好ましくなった使い方」だそうだ。

私の好みは、イデオム的ではない。形式ばっているかもしれない。明瞭ではないし、首尾一貫もしていない。 改善できるとは思えない。ただ、チームのメンバーと意見が異なることはない。チームで開発していないからである。

それはともかく、p.11 を読んで、1995 年ころ、チームで開発していた頃を思い出した。チームの相棒は優秀で、 C++ のコード規約として「すべての public の情報は private の情報の前に書きます。」ということを、 すでに決めていたのだった。

3章

p.16 の「やってみる」はこうだ。

これからの数日間、冗長で重複したコード、 あるいは長ったらしいコード部分を特定するために批判的な視点で自分のコードを見てください。 その不要なコードを取り除くように取り組んでください。

自分が書いたコードがあっただろうか。忘れてしまったが、いくつか残っているはずだから見てみよう。

4章

p.38 の「やってみる」はこうだ。

今取り組んでいるファイル内で、死んでいて不必要なコードを探してください。 そしてそれを取り除いてください。

前の章と重複しているような気がする。まあいい、やってみよう。

5章

p.47 の「やってみる」はこうだ。

あなたの古いコードにざっと目を通してください。自分がかつて書いたプログラムの書き方が好きですか。 それ以降、あなたはどれだけのことを学んできましたか。

古いコードを探したら出てきた。1990年代前半に書いた C 言語のプログラムだ。今から見ると、 この書き方は嫌いだ。当時は、関数引数を 旧 K & R で書いていたが、 今なら当然、新しい ANSI で書く。またスペースをもう少し多く入れる。

6章

p.59 の「やってみる」はこうだ。

次に新たなコードに取り組むときには、心を込めて計画を立ててください。 深く理解するために、この章の技法を使ってください。

私は、計画を立てるのが大の苦手である。心を込めて、といわれても困る。それでもというなら、心をこめよう。 ところで、この章の技法には、どんなものがあるのだろう。


7章

p.68 の「やってみる」はこうだ。

ボーイスカウトルールを用いてください。ほんの少しであっても、あなたが触れたすべてのコードを改善してください。

ここでボーイスカウトルールとは、「キャンプ場を、来た時よりきれいにして変えること」である。 そういえば、若くして亡くなった S くんの職場を見てみる機会があった。その職場はきれいに片付いていた。 そしてこんな標語が掲げてあった:「帰るときは来たときよりも美しく」


8章

p.73 の「やってみる」はこうだ。

あなたのシステムで最も頻繁に手が加えられているコードをレビューしてください。 何個のエラー状態が処理されないままになっているかを調べてください。 次に、めったに手を加えられていないコードをレビューして、 結果を比較してください。

そんなに頻繁に手を加えているコードがない。これは、質がいいからではなくて、 単にコードを書いたことを忘れているからだ。


9章

p.77 の「やってみる」はこうだ。

あなたが最後に取り組んだコードを調べてみてください。 エラー処理と可能性のある異常なやり取りに関してどれだけ注意を払っているかを調べてください。 コードをどのように改善できますか。

最後に取り組んだコードを調べてみた。ファイルを入力してファイルを出力するコードである。 このコードでは、入力ファイルが存在しないときや入力ファイルがサイズゼロのとき、出力ファイルのサイズがゼロになる。 ところが、入力ファイルが存在しても出力ファイルのサイズがゼロになる場面があり、このエラー処理はしていなかった。 今はそのエラー処理をしたので、ましになっているはずだ。


16章

p.159 の「やってみる」はこうだ。

あなたが行っているコードの修正が、そのコードの単純さへ寄与しているかを調べてみてください。 複雑さを追加することを避けてください。 コードのエントロピーが増加しないように戦ってください。

私が行っていたコードの修正は、明らかに複雑になるものだった。しかし、その修正はやむを得ないものだった。 修正をしないと、表記にムダな字が出てしまうものだった。


26章

p.247 の「やってみる」はこうだ。

今すぐに取り組みたいことを検討してください。 それは今の仕事ですか。そうならば、あなたは幸運です。そうでなければ、 どうしたらそれに取り組むことができますか。 「ペットプロジェクト」を始めるべきですか。仕事を変えるべきですか。

今すぐに取り組みたいことはある。それは、今の仕事ではない。どうすべきだろうか。


結び

p.345 の「やってみる」はこうだ。

数か月後にこの本を読み直してください。 テーマを再考すると、何があなたに訴えかけてきますか。 改めて質問に答えてみてください。 そして、あなたの視点、経験、理解がどのように変化したかを認識してください。 あなたが勤勉で、よく考えて実践することに集中したなら、 自分の成長に驚くことでしょう。

この本は借り物なので、数か月後にこの本を読めるかどうかはわからない。


ペットプロジェクト

本書の p.244, p.247 などで「ペットプロジェクト」ということばが出てきている。

さて、「ペットプロジェクト」とは何だろうか。p.244に、あなたが興味を持つものは何ですか。 記事で読んだ新たな言語かもしれません。 (中略)しばらく前に考えたペットプロジェクトを始めることかもしれません。(中略) この種の個人的なチャレンジは、副プロジェクトで行えます。とある。 ペットに関する個人的なプロジェクトなのだろうか。

調べてみると、「追求している目標・企画」、「特に興味があるプロジェクト」ということのようだ。 この場合ペットは「特別な、思い入れのある」という意味になっている。英英辞典で調べてみると、 形容詞としての pet は、"liked more than anything else" という意味だと書かれていた。 この英英辞典には、 a pet project の他に、 a pet (theory|subject) という用例が載っている。

このことばを見て、私は「トイプロブレム」を思い出した。これは「おもちゃに関する問題」ではなく、 「ルールとゴールが決まっている、おもちゃのように作られた小さく、閉じた世界に関する問題」のことをいう。 私はペットということばに敏感になりすぎていたようだ。

本書に関して言えば、複数のページで出ていることもあり、索引に「ペットプロジェクト」を載せるのがよかったと思う。

カウボーイコーダー

25章に、何も考えずに「衝動的に行動する」やり方は、カウボーイコーダーの兆候ですがとある。 では、カウボーイコーダーとはどういう意味だろうか。http://wiki.c2.com/?CowboyCoder によれば、次の通り:

Cowboy Coders are programmers who write code according to their own rules. They may be very good at writing code, but it doesn't generally follow the standards, processes, policies, or anything else derived from the group.

訳はつけないでおく。

誤植

『ベタープログラマ』正誤表 (yoshikishibata.github.io)になかった誤植がある。

99 ページ、本文の1行目、「実装が正しくて要求を満たしてることをテストによって証明しながら」とあるが、 口語的なので「実装が正しくて要求を満たしてることをテストによって証明しながら」 としたい。

285 ページ下から3行目から2行目、「Open Office は洗練さていませんが」とあるが、 正しくは、「Open Office は洗練さていませんが」だろう。

書誌情報

書名ベタープログラマ
著者Pete Goodliffe
訳者柴田 芳樹
発行日2017 年 12 月 14 日(初版第1刷)
発行所オライリー・ジャパン
発売元オーム社
定価3000 円(税別)
サイズA5 変形判
ISBN978-4-87311-820-8
その他越谷市立図書館で借りて読む

まりんきょ学問所コンピュータの部屋コンピュータの本プログラミング > Pete Goodliffe:ベタープログラマ


MARUYAMA Satosi