TL;DR

  • ソフトウェア設計で、後の保守性や拡張性に影響する意思決定を考えるための本である。
  • 意思決定の場面ごとに取りうる判断を挙げ、それぞれのメリットとデメリットを並べる。トレードオフについての本といえる。
  • Java を使ったサーバサイドと分散システムの話が中心である。

対象読者

コードを手っ取り早く読みやすくするための本ではなく、正解を求める人にも向かない。クリーンアーキテクチャのように「手順に従ってコードを整理すれば自然と良い設計になる」という考え方の人には合わない(その考え方を否定しているわけではない)。また、現在のアーキテクチャを網羅しているわけではなく、Web フロントエンドには触れていない。

感想

プログラミングにおけるより良い選択とはで紹介されていて知った。発表では、トレードオフは読み物として楽しいと話していた。採用しなかった設計があってもよく、PEP には Rejected Ideas という項目がある。案が複数あればトレードオフがあり、採用に至った経緯が面白い。状況が変われば別の案のほうが良くなることもあるので、トレードオフの過程も残しておくとよい。出回っていない貴重なトレードオフはたくさんあるので、社内の勉強会からでも公表する風潮が広まるとよい、という話だった。

時間に関するサービスを開発している身としては、第 7 章が特に面白そうだ。

関連