$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

「エンタープライズアプリケーションアーキテクチャパターン」を読んだ

ソフトウェア設計に関する知識が昔のままで止まっていて、最近の設計のためのワードはぼんやりと理解できるものの、はっきりと分かっていないなと感じていた。そこでまだ読んでいなかった設計に関する本を読もうと思い、まずは「エンタープライズアプリケーションアーキテクチャパターン」を読んだ。

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)

これまでプログラムを書いていた経験からか、全く知らないパターンというのは少なかったのだけど、これまでの経験知に名前付けを出来たのは良かった。特にシングルテーブル継承、具象テーブル継承、クラステーブル継承の話は面白く、どれも見たことあるしメリット・デメリット分かる!という気持ちになった。

次は エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践) を読もうかなと思う。

読書ノート

* 行データゲートウェイはO/Rマッパー感が強い 1630
    * 実際には行データゲートウェイ、テーブルデータゲートウェイ、アクティブレコード、データマッパーなどのどの思想でもORMを実装できるので、どういう思想のORMかを知っておくと良い選択をできそう
* テーブルデータゲートウェイはperlで書いているときに良く自分が使っている手法?データマッパーのほうかな? 1647
* レコードオブジェクト自体にDB操作も持つアクティブレコード、DB操作とドメインモデルを分離するデータマッパー 1695
* 構造的なマッピングに関するパターンについては、Apollo Clientのキャッシュの処理とイメージが似ている気がする。一意フィールドとか 1842
* シングルテーブル継承、具象テーブル継承、クラステーブル継承はたしかに全部見たことある 1937 ※
    * それぞれの特性はめっちゃ納得できること書いてある 1956
* アプリケーションコントローラーは、プレゼンテーション層内でさらに再利用したい時に使うって感じかな? 2222
* トランザクションスクリプトというのは、引数がプリミティブなものだけで、手続きを記述していくものなのかな 3721
* ドメインモデルは普通のオブジェクト指向って感じ 4000
* テーブルモジュールはよくあるテーブル操作と対応するクラスっぽい 4091
* サービスレイヤーはユースケース層といえるのか? 4451
* テーブルデータゲートウェイがテーブル操作と紐づくのか? 4452
* 行データゲートウェイは、行オブジェクトにinsertとかdeleteとかがあるやつ 4727
    * さらにロジックが追加されていくとアクティブレコードへ 4924
* データマッパーはいつもよく使ってる行データにdbアクセスがないやつな気がする 5062
* ユニットオブワークはデータの実際の更新処理を遅延させ、一括で行うものっぽい。つまりアプリケーションコード内でトランザクションを実装しているイメージ 5688
* 一意マッピングはapollo clientのキャッシュみたいなやつっぽい 5804