Tidy First?
2025年1月13日読了
Credit
Kent Beck. (2023). Tidy First? A Personal Exercise in Empirical Software Design. O’Reilly Media, Inc. 吉羽龍太郎、永瀬美穂、細澤あゆみ訳. (2024). Tidy First? ―個人で実践する経験主義的ソフトウェア設計. オライリー・ジャパン.
Summary
ソフトウェア開発を進める上でいつ整頓を行うか、という議論を行う本。整頓とは何を指すかをI部で示す。
本書のタイトルは、振舞いの変更と構造の変更とを分離し、分離されたそれぞれ変更の順番を適切に決めると良いことを伝えている。どのような順番が適切そうかをII部で、なぜそう考えるべきかをIII部で解説する。
Note
用語:
- 振舞い: そのソフトウェアは何ができるか
- 機能: そのソフトウェアのできること各々
- 構造: そのソフトウェアはどのように造られているか
- 設計: そのソフトウェアをどのように造るか
- 整頓: ソースコードの整頓。構造の変更。設計。(結合・凝集を解消すること?)
振舞いを変えずとも「オプション」があれば、ソフトウェアの価値は上がる。この「オプション」は構造から生み出される。だから、構造を良くすることは大事。
「オプション」は証券用語。オプション=権利。特にコールオプションは、未来買うことになる原資産をある価格で買える権利のこと。また、オプション自体の価格をオプションのプレミアムと言う。本書曰く、ソフトウェアの設計は、振舞いの変更に対するコールオプションのプレミアム。
- 設計をする(プレミアムを支払う)
- 振舞いの変更が可能になる(オプションを得る)
- 振舞いを変更する(オプションを行使する)
設計は少ないほど良い(プレミアムは低額であるほど良い)。その設計は適切であるほど良い(行使価格は低額であるほど良い)。その設計によって変更できる振舞いの価値が変動するほど良い(市場価格が高くなるほどオプションの価値が高くなる)。つまり、不確実な未来のために、予め適切に設計をしておくことは大事。その設計によって得たオプション自体(変更容易な構造自体)が価値を持つため、伴って、振舞いを変更せずともソフトウェアの価値を高める。
しかし、ディスカウントキャッシュフローの観点では、不確実な未来の価値のために投資するのではなく、今保証される確実な価値を回収することが良いとされるため、必ずしも先に整頓することが良いとは言えない。次の説明がされている。結局、トレードオフ。
Impression
狭義の技術書ではない。効果的な設計術・リファクタリング術を教える本ではない。効果的な設計・リファクタリングをいつすべきかを議論する心得本。なので、非常に具体例が少なく抽象的な内容ばかりである。この本で得た心得を活かしてみて、薄々と徐々にこの本の価値がわかるのだろう。あるいは、殆どの内容が「そらそうやろ」な内容であるため、当たり前のことを当たり前のことだと自信を持つためにも使えるかもしれない。いや本当に心得本。儒教。
■