読むのがホネな技術書やビジネス書を取り上げて2週間の読書期限を課して読んでアウトプットする仮想読書会「デッドライン読書会」の第75回。同僚と読書期限を約束することによって積読が確実に減るという仕組み。過去記事はこちら。
さて、今回読む本は「Tidy First? ―個人で実践する経験主義的ソフトウェア設計」だ。 著者のケント・ベックは現代ソフトウェア開発における巨匠・カリスマであり、その巨匠の16年ぶりの著作ということだが……
全般的な感想:ソフトウェア開発の素朴理論を是正する本
良い本である。ただこの良い本といういいかたは微妙で、内容が素晴らしいかと言われると正直なところわからない(悪い本ではない)。では何が良いかというと
- 短いので比較的読み切りやすい。おすすめしやすい
- 話題になっているので、チームや同僚との議論のきっかけにしやすい
- 難しいと思われるパートもあるが短いので理解できなくても罪悪感が少ない
あたりが、良いと思った理由だ。
本書は、ソフトウェア開発の素朴理論を是正しようとしているところがとくに良いと感じた。素朴理論とは個人が自分の経験をもとに信じている理論である。ソフトウェアは物理的実体がないので、誤った素朴理論がいろいろとあって、うまく学ばないと是正しにくいと私は常々考えている。本書はある種のソフトウェアの素朴理論を是正することを目的とした本だというのが、私の理解である。
完成品に囲まれた世の中で、不完全なソフトウェア
本書の中では30章で、この素朴理論の誤りについて触れている。
ソフトウェアは「モノ」であり、一度作られたら変更されず永久機関のように動き続けるものだというメンタルモデルは、ソフトウェアの実際の姿や、あるべき姿とは正反対であることがわかっている。
Tidy First? ―個人で実践する経験主義的ソフトウェア設計、30章 コンスタンチンの等価性
世の中は完成品にあふれている。誰の手元にもツルツルのスマートフォンがあって、部品が完璧に組み合わさって継ぎ目がなく、製品を購入したら飽きるまで使って捨てる。しかし(ある種の)ソフトウェアはそういった完成品とは異なっているということだ。
(ある種の)ソフトウェアは何度も何度も分解して、修理して、継ぎ足して、部品を追加して、また組み立てなおして使うものなのだ。うまく不完全に作られた状態が、素晴らしいソフトウェアなのだ。
ある程度(ある種の)ソフトウェアを開発し続けて、喜んだり悲しんだりするとこの境地(真理)に至るのだけれども、そうではない場合も多い。この理解が促進されるという意味で、本書はとても良い本だろう。
うまく不完全に作られた状態
個人的な話で恐縮だが、若いころに舞台設営のバイトをしていたことがある。劇場でやるお芝居や演芸の舞台装置を搬入して組み立て、解体して搬出するのが主な仕事内容だ。客席から見たらかなりしっかりとした舞台装置(例えば階段のある2階建ての建物)であっても、実際には「うまく不完全に作られ」ていて最初は驚いた。
なぜ「うまく不完全に作られ」ているのかというと、劇場を利用できる期間が限られているので、あらかじめモジュール化した部品を持ち込んで半日程度で組み立てなければいけないし、公演が終わったら数時間で解体して撤収しなければならないからだ。完全な舞台装置は簡単に組み立てられないし、バラせない。それでは困るのだ。有名な話かもしれないが、例えば木でできた装置を釘打ちで固定する際に、釘は最後まで打ち込まない(釘のアタマが出っ張った状態で打ち止める)。なぜなら釘はあとで抜かなければならないからだ(分解するために)。
これが「うまく不完全に作られた状態」だ。バラせなければならないのだ。舞台装置も、ソフトウェアも。
しかしこの「うまく不完全に作られたもの」に触れることは残念ながら現代では少なくなってしまった。そして「ソフトウェアは高品質なものを一度完成させてずっと使う」という素朴理論が誕生する。でもしょうがないね、自然に考えたらそうなるよね。
整頓第一
「うまく不完全に作られた状態」を実現する一歩が、本書で繰り返し言及される「整頓」である。本書は三部作の第一部ということで個人レベルで実施できる整頓が語られていて興味深い。次作はチームで行う整頓すなわちリファクタリングについて語られ、最終作では進化的アーキテクチャが語られるらしい。楽しみである。
というわけで本書の読書は終わり。さて次は何を読みますかね
現在気になっている本は以下の通り。流行を最近追えていないような気もする