Software Transactional Memo

STM関係のことをメモっていこうと思います。

書評:良いコードの道しるべ

TL;DR 個人的ITエンジニア本大賞2025として推せる



多分値オブジェクトの話だと思うけど、SNS上でレスバに明け暮れていたせいかマイナビ出版から「良いコードの道しるべ」という技術書を恵贈いただいた。

正直なところ著者のことを全く知らないのでそんなに高い期待値で読んでいなかったのだけれど、読むほどにこれはいい本だと感じたので推せるポイントを列挙していく。

常識がちゃんと書いてある

KISS, YAGNI, DRYといった、プログラマであれば知っていて当然の原則が体系立って例示付きで日本語で書いてある。ジュニアクラスを卒業する前には身につけていて欲しい常識がこうも凝縮して書いてある本は珍しいのではないかと思う。(SOLID原則については言及すらしていない点も個人的にはやや好感である)

この領域にはコードコンプリートとかリーダブルコードといった良著はいくつも挙げられるが、この本は実例と説明の簡潔さに的を絞ってありリーダブルコードが冗長に感じられた自分にはちょうど良い短さであった。この本を一度読んだぐらいで実力が大幅に跳ね上がるわけではないが「この本に書かれている程度のレベルのことを知らない人と一緒に仕事するのは大変だろうな」と感じるレベルの事がきちんと網羅されているので新人プログラマへの課題図書として適切な粒度と難度にまとまっている感じた。

LintやFormatterを入れろとか自動テストしろとかカバレッジは計れただし100%でなくて良いとかコードは可能な限り消せとか、ある程度のレベルのプログラマならば合意済みであって欲しい事がちゃんと詰まっている本は珍しいのではないか。

過度な主張がない

僕の過去のブログ記事でも値オブジェクトやDDDの話を書いた事があるがそういったトピックについてもきちんと触れられている。

値オブジェクト:固有の識別子を持たず、その属性のみによって値を表現するオブジェクト。同じ属性を持つオブジェクトは同一として扱われます。住所や割引率などは値オブジェクトで表現できます。

「良いコードの道しるべ 46p」

僕からはケチのつけようもない表現である。他にもクリーンアーキテクチャとかレイヤードアーキテクチャのようなトピックにも触れられているが結論は「適材適所」である。ネット上での胡散臭い言説にはうるさい方であるつもりの僕が目立った誤りを見つけられなかったのは結構すごい事である。これは裏を返せば意見が分かれるような尖った主張もないという意味なのであるが、ひとまず両手放しで書いてある事が大体正しいと合意できそうな本としての価値は高い。例えばA Philosophy of Software Designという本は僕にとってはかなり意見が一致する本だが議論が分かれるトピックをいくつか扱っていて、クリーンコードの著者との対談は僕にとっては読み応えのあるテキストであったが初学者には当面無用である。

github.com

プログラミングは手を動かしながら学ぶものであるが、それは座学が不要であることを意味しない。入門書を読んだあとは何をやったらいいですか?という質問は絶えないが入門書の次に読むべき本があるとしたらこれだと思う。言語はKotlinだが個人的にはKotlinはかなり好みな言語である。

10年分ほど手を動かさないと骨身に染みなかった知見がこういう本を読んで1ヶ月も手を動かせば腹落ちすることもあるのだから学びの高速道路は着々と整備されている。喜ばしい限りである。