📝

技術書読書ログ「オブジェクト設計スタイルガイド」

2024/03/07に公開

概要

オライリーの
"オブジェクト設計スタイルガイド"
を読みました。

https://www.oreilly.co.jp/books/9784814400331/

オブジェクト指向でアプリケーションを作る際のお作法が学べる本でした👍

目新しいことが載っているわけではなかったですが、どのアプリケーションでも共通になるようなルールが体形立ててまとめあって、振り返りやおさらいになり、リファレンスとしても手元に残しておきたい、と思える本でした!

個人的に特に印象的だったものを3つ紹介します。

オブジェクトの分類が分かりやすい

オブジェクトを大きく2つに分けると

  • サービス
  • サービス以外

サービス以外を更に分類すると

  • エンティティ
  • 値オブジェクト
  • DTO

この分類分けと、それぞれにどんなルールを適用すればいいのか、理由やサンプルコード、練習問題を通して理解できるようになっています。

これがとても分かりやすかったです👍

10章がWebアプリ作成で参考になる

10章の"オブジェクトフィールドガイド"が、それまで解説してきた各オブジェクトの分類とそれらのルールを、実際にWebアプリケーションに適用させると、どういったクラス構成やレイヤ分けになるのか、をまとめてくれています。

今後のWebアプリケーション作りで参照したくなる章でした👍

以前、読んだ
"ドメイン駆動設計 モデリング/実装ガイド"
の実装例に似ているなとも思い、振り返りにもなって、この設計のパターンの理解が更に深まった気がしています。

https://booth.pm/ja/items/1835632

本書のルールを適用することで、より重要度が高いことに集中する

訳者あとがきにある以下の文章が、個人的にとても同意でき、刺さりました!

つまり、オブジェクト設計において相対的に重要度の低い部分については本書で提案するようなルールに従うことで認知的負荷を軽減し、より重要な部分に集中してほしいというが著者の主張だと読み解けます。

本書にあるようなオブジェクトの分類や設計ルールはパターン化して、なるべく考えず、時間もかけないようにする。

そして、アプリケーション開発でもっと重要度が高い、"どのようなオブジェクトが必要か" "その責務はどうあるか" などを考えることに時間をかける。

このことに気づけたことが、本書を読んで一番良かったところかもしれません👍

と同時に、このルールの適用やレビューは、静的解析解析ツールやIDE拡張、Copilot、生成AIを活用して、できるだけ自動化したいなとも思いました。

Discussion