Notes

パブリックなメモ書き

MVCモデルから組織の役割分担について考えてみた

まずMVCモデルとは

f:id:cask-st:20171203191834p:plain

引用:Cocoa Core Competencies | Model-View-Controller

 

MVCモデルとはざっくりいうと、アプリを設計する時の考え方の一つで、

  • Model(機能やデータ)
  • View(見た目)
  • Controller(管理)

にという機能ごとに分けて実装してあげてね。という考え方になります。

なぜこうゆう作りにするかというと、View を変更した時に Model に影響がないようにするためです。(逆も然り)
そのため ViewとModelは直接やり取りはせず、必ず Controller を経由させます。

これを組織に置き換えると 

例えば何かの製作から販売まで行っているような会社があった場合、こんな感じになるかと思います。

f:id:cask-st:20171203192916p:plain

 

ありがちな誤り(Controller の肥大化)

プログラミングをしていてよくある誤りとして、Controller に何でもかんでも実装してしまうパターン。Controller がごちゃごちゃになって手の付けられない状態になってしまうことも。。

 

これを実際の組織で考えると、マネージャーが実作業(販売や製品製作)をやり過ぎてしまって管理に手が回らなくなってしまうパターン。。

マネージャーの一番重要な仕事はマネージメント(製品制作や販売店の管理)ですが、そこが回らなくなってしまい、もう何がなんだか。。というケースは度々耳にします。

 

Controller は Model や View でやるべきことを実装しない。

 ⇒ マネージャーは販売や製品製作業務を極力行わない。

Model / View が大きくなってきたら Controller に実装するのではなく、別のModel / Viewクラスを作る。

 ⇒ 販売や製品製作の人手が足りなくなってきたらマネージャーが負担するのではなく人を増やす。

 

システム構造と人間社会は通じるものがあるから面白いですね。
まぁシステム構造は人間が考えてるものだから当たり前といえば当たり前なんですが笑

 

ではでは今日はこの辺で。