コードコンプリート(上)読んでみた

code_complete

はじめに

技術系のブログやスライドなどを読んでいると、コードコンプリートはいいぞ(大意)』的な言説を目にすることが、しばしばあります。
そのたび、「これだけあちこちで評判なんだから、実際良い本なんだろうなー。けれどいったい、なにがどんなふうに良いんだろう」と気になっていました。

ところで最近、日々の開発の中で「むむむ」となることが結構ありまして。
ゲーム内イベントなどのまとまった機能をつくる際に、設計をうまく整理できずに詰まったり、いざ実装するときに「あ、これ別の構造にしておけばよかった……」となって手戻ったりが続いたので、そのあたりの知見が得られたりするんじゃなかろうか、と(紙の本派なので)一路書店へ。

 

code_complete

対面

分厚ゥゥゥいッ! 説明不要!
といいつつ説明しますが、目の前にすると、ちょっとなかなかの厚さ。オライリーにもそうそう負けない、怒涛の全 628 ページ。
当然、お高い。
技術書に支払う金額って、個人的にはだいだい 3000 円前後くらいなイメージだったのですが、本書はその倍。かつ、上下巻なので更に倍してドン。
尻込みするには十分な条件が揃っています。
が、

 

購入の理由

せっかく来たのだし、と手にとってみました。
ぱらぱら読んでいくと、こんな言葉が目に留まります。

本書は、ソフトウェアのライフサイクルにおいて最もなじみ深い部分である、「コンストラクション」に主眼を置いている。

その隣には、「コンストラクション、というのは、システム開発における詳細設計からテストまでの部分を指し、その中心はコーディングとデバッグである」という訳注がついています。
多くのエンジニアにとってもそうではないかと思うのですが、ここを読んで、「あ、これまさに、自分がやってるところだ」と思いました。

筆者の方いわく、コンストラクションは「焦点が当てられていないにもかかわらず、実行されることが保障されている唯一のアクティビティ」なのだそうです。
要件定義も、アーキテクチャの設計も、結合テストとかも、状況次第ではあいまいだったりすっとばされることがある(一般論ですよ、一般論)けれど、プログラムが存在する限りにおいて、コンストラクションは必ず実行されるのだ、と。
ナイスエンジニアジョーク。
でも、だからこそ、開発作業を改善する上でじつに実り多い領域なのだ、とも。

とりあえず、上巻を買って帰ることにしました。

 

内容は?

コードコンプリートの上巻は、全4部、19章からなります。

第1部は、コンストラクションと、その重要性についての説明。
第2部は、実際にコードを書く前の段階、いわゆる詳細設計についての話。
次からはプログラミングについての内容になり、第3部は変数、第4部は条件文やループ文、制御構造などのステートメントについて述べられています。
2巻に収録された第5部以降は、デバッグやリファクタリング等について書かれていくようです。

こう書くと、基礎編、入門書のような印象ですね。
ただ、それぞれの項目についての記述は、自分にとってはかなりディープなものでした。
ループについてだけで、いったい何ページ語るというのか。しかもいちいち納得したりしてしまう。

いつも、あたりまえのようにやっている設計、使っている変数、制御構文が、本書であらためて説明されてみると、意外と理解が及んでいなかったり、半端なところがいくつも見えてきました。

普段、多分に我流でやっているところを、コンストラクションという体系的な視点で見直すことで、気づくこと、深まる理解があるというか。
まだ読んだばかりですが、日々の開発の中で「これ、コードコンプリートで読んだところだ……!」的な、進研ゼミ式照らし合わせ現象が発生しそうな予感が、ひしひしとしてきます。

 

とはいえ

一度通読しただけでは、すべてを理解して自分のものにするのは難しいというか、ちょっと無理。
分量膨大ですしね。
むしろ、開発につまったときや、折に触れて読み返してみることで、よりより手段を見つける糸口にできる本なのでは、と思いました。

あと、余談ですが、ところどころにはさまれるエンジニアジョークがわりとツボ。
けっこうダークなネタを飄々と語っていたり、”coding horror” と題された(いわゆる悪い見本な)コードの事例もあったりして、ついにやにやしてしまうところも多く、読み物としてもじつに面白かったです。

 

というわけで

コードコンプリートはいいぞ。
下巻も近々ゲットして、よりよりコンストラクションを目指していこうと思います。