
『Tidy First?』の感想
はじめに
以下の本を読了したので感想をまとめます。
かなり薄い本です。本文だけだと約120ページくらい。思わずページ単価を計算してしまいそうです。僕はこの本から最大の価値を享受できる人にとっては第I部はなくてもいいと思ってるので(※個人の意見です)、それを差し引くとさらにページ単価アップです。
にも関わらず、この本はお金を払って読む価値のある本だと思います。とくに第III部から得られる洞察は大きいのではないでしょうか。
本の構成
この本は全3部構成で、章の数は33章です(1、2ページの章も多い)。
「第I部 整頓」では、整頓のテクニックについて1章1トピックで具体例を使って説明されています。設計をちゃんと学んだことがある人にとっては、どこかで読んだことのある内容だと思うので、確認程度にさらっと読み進めても問題ないでしょう。
「第II部 管理術」では、開発ワークフローの中でどのような順番でどの程度整頓を行うべきか、といったトピックが論じられます。
「第III部 理論」がこの本のメインテーマです。ソフトウェア設計とは何か、振る舞いと構造の関係について述べた後、ディスカウントキャッシュフローとオプションのメタファーを用いて、整頓を先にすることとしないこととのトレードオフが論じられます。そして、変更のコストに大きく影響する結合と凝集について述べられます。
感想
第III部で出てくる、ディスカウントキャッシュフローとオプションのメタファーについては、金融知識の要る話なので一瞬ピンとこなかったのですが、注意深く読んで理解すると実に的を得た比喩だなと感じました。
僕なりにこのメタファーを理解したポイントをまとめます:
整頓された構造は、将来発生し得る振る舞いの変更を(低コストで)実現可能とする
将来必要になったときに、振る舞い変更できるということがオプション
先に整頓を行うということは、オプション取引を行うということ
整頓のために支払う設計コストが、オプションに対するプレミアム
話が変わりますが、この本を読む前に、来月公開予定の自社テックブログ記事を書きました。リファクタリングに関する記事なのですが、その中で以下のような図を描きました。

主旨をまとめると以下です。
既存のコードが備えている柔軟性によって、振る舞いの変更コストは変動する。変更コストを下げるためのリファクタリングコストとの合算が、変更によって得られる便益の向上を上回る場合は、見送るという判断も正当化される。
同じようなことが『Tidy First?』に書かれていたので、うんうん頷きながら読んでいました。
「常にリファクタリングをしなければならない」と考えるのは思考の硬直かもしれません。あらゆる設計判断は、目的ドリブンでトレードオフを十分に見定めて行うべきだと感じました。
最後に、この本は全3部作の1冊目であり、すでに次作「Tidy Together?」は構想が進んでいるようですね。今から楽しみです!
いいなと思ったら応援しよう!
