@kyanny's blog

My life. Opinions are my own.

1.レイヤ化 2.ドメインロジック 3.データベースマッピング

PoEAA 読み始めたのでメモ。積ん読いろいろ残ってるけどまぁ気にせず読みたい気持ちに素直に隸おう。いやなんでそんな字に。従おう、と書いたのだが。生真面目にまとめようとしすぎると息切れするので大雑把を心がける(?)こういうときマインドマップを習得すべきなのではないかという気持ちになるが過去数回試したけど「これはいける!」と感じたことが一度もないのでたぶん何度やってもダメだと思う。ていうか図は見るのも書くのも好きじゃないんだよねきっと。テキストがいいんだよね。

ということで理解するためにメモる

レイヤ化

  • プレゼンテーションレイヤ、いわゆるビュー
  • ドメインレイヤ、↑↓のどちらでもないもの全部、モデルとコントローラのアクションも
  • データソースレイヤ、 O/R マッパ任せにしてる部分

現代的な WAF における典型的なファイルレイアウトや役割分担になぞらえるとこんな分類になるか。あとデータソースレイヤはこの定義だと外部の API をネットワーク越しに叩くクライアント部分とかもそれにあたるんだろうか。

ドメインロジック

  • トランザクションスクリプト、ばかでかいサブルーチンを必要な機能ごとにつくる(共通処理は全部重複)
  • ドメインモデル、名詞をクラス化して機能を「その機能は自分の仕事だと知っているオブジェクト」に委譲
  • テーブルモジュール、テーブルごとにひとつのインスタンス、レコードセットを扱う

ドメインモデルとテーブルモジュールの概念がまだわかれてる気がしない。トランザクションスクリプトは古きよき CGI 掲示板システムとかを連想すると分かりやすかった。画面ごとに *.cgi がある、みたいな。一個の CGI ファイルが一個の手続きを受け持つような。

  • サービスレイヤ、ドメインロジックの層の上にかぶせる?アプリケーションの API にあたる層

実際のシステムで実装されてる場合どういう感じになるか、とかは具体的にそういうシステムをみたことがあるのでわかるんだけどやっぱり概念としてわかれてる気がしない。

データベースマッピング

  • 行データゲートウェイ、アクティブレコードと何が違うのかわからん
  • テーブルデータゲートウェイ、まぁわかる、 update(id) みたいなインターフェース
  • アクティブレコード、言うまでもない、一番馴染み深い
  • データマッパー、概念はわかる、しかし実装を触るとてこずってしまうことが多かった

あとユニットオブワークがなんなのかイメージできない、あと関係のマッピングは説明読むとぼんやりするけどもはや has_one/has_many/belongs_to とかで実装のほうから慣れてメンタルモデルが出来てるのでもう十分だ。

  • シングルテーブル継承、あのキモイやつ
  • 具象テーブル継承、これのどこが継承なんだ、いわゆるふつうのクラスへのマッピングをそう呼ぶのだろうか
  • クラステーブル継承、こんな階層でテーブルごとわけるとか考えたことあまりなかった、名前的にこちらが↑の意味と間違えそう

具象テーブル継承という呼称を知れた収穫があった。

残りは相対的にあんまり重要そうに思えない部分なのでメモなし。