torutkのブログ

ソフトウェア・エンジニアのブログ

Java関連書籍「ソフトウェア設計のトレードオフと誤り」

正月休みの時にぶらっと本屋さんに寄った時に、Java読書会BOFの次の読書会の候補本になりそうかと買ってみました。

題名 ソフトウェア設計のトレードオフと誤り
著者 Tomasz Lelek, Jon Skeet
訳者 渋川よしき ら訳
出版 オライリー・ジャパン 2023年5月刊行
ISBN 978-4-8144-0031-7
価格 4180円(税込)

プログラム、アプリケーション、システムを作成するときに遭遇する設計上の選択を、トレードオフとして紹介しています。課題は、プログラミング・コード上のもの(例:シングルトン・パターンの実装方法、継承とコンポジションの使い分け、例外)から、共通ライブラリ、バージョニング、APIの柔軟性と複雑性、最適化、日付と時間、データのローカリティ、メモリかディスクか、サードパーティライブラリの利用、分散システムの一貫性、アトミック、配信、DIフレームワーク、リアクティブプログラミング、関数プログラミングの使いどころなどが並んでいます。 コードはJavaで書かれています。

読み始めたばかりですが、最初の方に出てくるシングルトン・パターンでは、同期をgetInstanceでかける方法、ダブルチェックロッキング、スレッドローカル変数での実現(厳密にはシングルトンではなくなりますが)を列挙し、パフォーマンスを含めてトレードオフしています。

日付と時間についてかなり深い記述がありますが、著者の一人JonがNoda Time(.NET用の日時ライブラリ)の開発者なのでうなづけます。 なお、Noda Timeのライブラリ名から推測できる通り、JavaのJoda Timeライブラリの.NETポーティングです。Joda Timeは、javaのdate & time APIの元になったライブラリです。