DDDを読んでる途中でのネットワークシステム設計雑感

フロントエンドGUIの設計について考えていたら設計沼にはまり背骨となる思想を求めてDDDを読んでいる状況です。
フロントエンドを含めたネットワークシステム全般の設計についての雑感。

  • RDBのテーブルの抽象としてORMで対応するモデルはドメインモデルではない
    • RDBの制約のうえでの最適な構造と、ドメインモデルの構造は必ずしも一致しない
    • 取れる対処はORMを介さず直接クエリを書いてドメインモデルに変換するか、ORMを使ったうえでテーブル抽象のモデルの上にドメインモデルを組み立てるか
  • サーバはAPIに特化してしまえば、サーバ側にドメインモデルは必要ないか?
  • クライアント(ネイティブ含む)の環境でドメインモデルは?
    • GUIは複雑なため絶対に必要
    • ただし、サーバとクライアントの間で情報を共有するのに、何らかのシリアライズフォーマットを経由する必要があり、シリアライズ / デシリアライズの仕組みが必須
    • ここでJSONの辛さが浮かび上がってくる
    • なるほどGoogleがProtocol Bufferを作るわけだ
  • クライアントとサーバでドメインモデルは同じ構造か?
    • 微妙に違うが同じにできるケースも多いと思う
    • 同じにできなくてもコアの要素集合は近く、生えているメソッドが異なりそう
    • ここでIsomorphicの利点がわかってくる
  • JavaScriptでシステムを書きたいか?
    • 絶対に嫌だ*1
    • できればC# が現実的な選択肢になってほしい……(個人の信仰です)
    • > Scala.js <

以上。

*1:オブジェクト指向で実装するには言語機能が貧弱すぎるため