ソフトウェア設計に関する知識が昔のままで止まっていて、最近の設計のためのワードはぼんやりと理解できるものの、はっきりと分かっていないなと感じていた。そこでまだ読んでいなかった設計に関する本を読もうと思い、まずは「エンタープライズアプリケーションアーキテクチャパターン」を読んだ。
これまでプログラムを書いていた経験からか、全く知らないパターンというのは少なかったのだけど、これまでの経験知に名前付けを出来たのは良かった。特にシングルテーブル継承、具象テーブル継承、クラステーブル継承の話は面白く、どれも見たことあるしメリット・デメリット分かる!という気持ちになった。
次は エリック・エヴァンスのドメイン駆動設計 (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