isyumi_netブログ

isyumi_netがプログラミングのこととかを書くブログ

VからCにメッセージを送る時は最小限のデータにしよう

いろんなMVCがあると思う。特定の実装に依存する話じゃない。

  • RoR的なサーバー・クライアントモデル
  • ReactやAngularを使ってクライアントサイドMVCを構築する
  • CLI

など、色々ある。大雑把に話の前提を揃えよう。Mは様々なデータを管理している。VはMを加工して画面に表示する。Vでクライアントからの入力を受け付けてCがそれを処理する。VはMからデータを取り出すことができる。今日の問題提起だが、なぜかVからCに送るデータが肥大化しがちと言うことである。例えば、

  • 画面がありそこに価格が書いてある
  • それを押すとサーバーで課金システムが動く

というシステムだとしよう。ここでクリックされた時にサーバーに送られるデータは商品IDだけであるべきだ。価格は省いて送信するべきだ。Cは自分でMから商品の料金を参照するべきだ。

なぜか。一つにセキュリティの問題だ。そして変更に弱くなる。しかし、もう一つ大きな理由としてメンタルモデルをあげたい。「システムの様々な場所に点在するデータは、最終的にMを正にする」と思い込んでいる。その中で、CがVから必要ないデータを受け取っていたら、「これ何かに使うのかな?」と言う気がしてくる。