「エンジニアの人生=エンジニアライフ」に役立つ本を紹介します。

『良いコードを書く技術』――親父の小言と冷酒は、すぐには効かずに後で効く

»
良いコードを書く技術 良いコードを書く技術 
読みやすく保守しやすいプログラミング作法


縣俊貴(著)
技術評論社
2011年4月
ISBN-10: 4774145963
ISBN-13: 978-4774145969
2394円(税込)

■「親父の小言」

 「親父の小言」というものを見たことがあるだろうか。ガンコ親父の口癖や短いフレーズを集めた格言集みたいなものだ。そして、なぜか居酒屋のトイレで見かけることが多い。こちらのブログ記事に画像がある。見覚えがある方もいらっしゃるだろうか。

 「大酒は飲むな」「ばくちは打つな」など、若いうちは「うるさい小言」としか思えないが、人生経験を積んでくると徐々に納得できてくる、というフレーズが並んでいる。元ネタはこの本だそうで、なるほど「小言親父、暁仙和尚」なら言いそうな内容だ。

 親父とは言ってみれば人生の師匠であり、師匠が言うことは大体うるさいものである。若者は経験を積むにつれて、だんだん師匠の真意が分かってくる。

■プログラマにとっての「親父の小言」

 本書『良いコードを書く技術』は、プログラマにとっての「親父の小言」である。

 職業プログラマの皆さんは、コードレビューの場やちょっとしたミーティング、あるいは相談や質問をしたとき、先輩や師匠に「親父の小言」的なことを言われたことはないだろうか。「ここは抽象化できるよね」だったり、「この名前は分かりづらい」だったり、もしくは「ユニットテスト書けよ!」と怒られたり。

 ツッコミを受けると大抵、耳が痛いような気持ちになる。「親父の小言」は、正しいと分かっていても、ちょっとやかましいのである。しかし、いろんなツッコミを受け、何がまずかったのかを学び、吸収していく。そういった体験は、プログラマとしての実力を磨いていくのに必要不可欠だ。

 本書にはそんな、プログラマを育てるための「親父の小言」がまとめられている。目次から大見出しだけ引用してみよう。

  • 第1章 良いコードとは何か
  • 第2章 良いコードを書くための5つの習慣
  • 第3章 名前付け
  • 第4章 スコープ
  • 第5章 コードの分割
  • 第6章 コードの集約
  • 第7章 コードのパフォーマンス
  • 第8章 ユニットテスト
  • 第9章 抽象化
  • 第10章 メタプログラミング
  • 第11章 フレームワークを作ろう

 第3章以降が、本書に収録された「親父の小言」だ。「最適な名前をつけろ」「スコープは必要最小限にせよ」「ユニットテストを書け」など命令形で書くと、より親父の小言っぽさが増してくる。職業プログラマなら、先輩や師匠にこんなことを言われた経験が少なからずあるだろう。

 もしそんな経験がないのであれば、それは達人プログラマであるか、もしくは先輩や師匠が身近にいないかのどちらかだろう。自分が達人プログラマであると自負している人以外はぜひ本書を読んで、本文中に登場する「達人プログラマ」のツッコミを受けてほしい。プログラマが成長するためには、ちょっと耳に痛い「親父の小言」を吸収しなくてはならないのだから。

■普通から中級へ、中級から達人へ

 本書には「普通」「中級」「達人」と3人のプログラマが登場する。3人の掛け合いから本題に入っていくことが多いのだが、「第9章 抽象化」は特に印象的なパートだ。「普通」と「中級」の2人が、達人の指導を受けながらペアでリファクタリングをしていく、という構成になっている。

 プログラマを成長させるためにとても有効な体験が、会話文とコードで書籍に収録されている、というのは素晴らしいことだと感じている。意外と身近な環境で経験することは貴重だったりするので、ぜひ本書で仮想経験してもらいたいと思う。

 また、本書は先輩や師匠など「親父」にもお勧めできる。弟子が書いたコードにその場でツッコミを入れることはさほど難しくないが、きちんと「教える」ためのポイントが網羅されている資料はあまり見当たらない。新人教育のネタとしても本書は役立つだろう。

■ただの小言で終わらないために

 身近に「親父」がいて、自分のために小言を言ってくれるのは、とても幸せなことである。そして、プログラマにとっての「親父」は意外と数が少ない、ということを最近実感している。すぐ近くに小言を言ってくれる先輩や師匠がいない人には特に、本書を強くお勧めしたい。

 また、本書の内容は「親父の小言」同様、良いコードを書くための「指針」である。きちんと「良いコードを書く」技術を身に付けたいのであれば、各章とも専門書や勉強会、あるいは先輩や師匠から、しっかりと深く学ぶ必要がある。本書をインデックスとして活用し、「達人プログラマ」を目指してほしい。

■Links

『Wife Hacks ~仕事と家族とコミュニティと~』
コラムニスト kwappa)

Comment(0)