MVCとはなにか/What MVC is

Abaa70cc6ac599bb503184eb2ae03ab4?s=47 Seiji Amashige
December 01, 2019

MVCとはなにか/What MVC is

PHPカンファレンス2019での登壇資料。

書き起こし
https://note.com/tenjuu99/n/n0232ccd1089d
あとがき
https://note.com/tenjuu99/n/nbbb4b273676d

メインの話の骨格は、MVC発案者であるトリグヴェ・リーンスカウク氏の2003年のJavaのカンファレンスでの資料(The Model-View-Controller (MVC) Its Past and Present)が元になっています。
http://folk.uio.no/trygver/2003/javazone-jaoo/MVC_pattern.pdf

トリグヴェ・リーンスカウク氏は、この資料のなかでドメインサービス(業務システム)と個人の業務の関係を考えます。ドメインサービスと個人の業務にはギャップがあり、そのギャップを埋めるためにMVCは考えられています。

まとめはこちら。
https://togetter.com/li/1438171

Abaa70cc6ac599bb503184eb2ae03ab4?s=128

Seiji Amashige

December 01, 2019
Tweet

Transcript

  1. MVC とはなにか MVC とはなにか PHP Conference Japan 2019 天重 誠⼆

  2. ABOUT ME ABOUT ME 天重 誠⼆( あましげせいじ) 弁護⼠ドットコムという会社でプログラマーや ってます いまはBEAR.Sunday

    を使っています
  3. 今⽇のお話 1. はじめに 2. ドメインモデル 3. メンタルモデル 4. パーソナルコンピュータ 5.

    MVC とはなにか
  4. アラン・ケイ MVC の悪かった点は、わたしたちがどう実装した かという点だ。それはあまりに機械的だった。 https://news.ycombinator.com/item?id=8841428

  5. MVC は⼈間とそのメンタルモデルに関するもので あり、オブザーバパターンに関するものではな い。 https://digitalsoul.hatenadiary.org/entry/20100131/1264925022

  6. MVC as Observer MVC as Observer A Cookbook for Using

    the Model-View-Controller User Interface Paradigm in Smalltalk-80
  7. ユーザーは皇帝だ。LRG で⾏われたすべてのこと は彼をサポートすることだった。 http://folk.uio.no/trygver/themes/mvc/mvc-index.html

  8. 1. はじめに 2. ドメインモデル 3. メンタルモデル 4. パーソナルコンピュータ 5. MVC

    とはなにか
  9. ドメインモデル ドメインモデル

  10. https://www.e-denpyou.com/blog.asp?entry=416

  11. None
  12. None
  13. ドメイン駆動設計 モデルとは、選び抜かれてシンプルにされ、意図 的に組み⽴てられた知識の表現形式である。

  14. https://www.photo-ac.com/main/detail/1519561

  15. None
  16. キャンセル時の処理 注⽂伝票の場合 -> 伝票の破棄 券売機の場合 -> 別な情報システムが必要

  17. ドメイン駆動設計 〜ユーザー、モデル、エンジニアの新たな関係〜( 杉本啓) https://www.slideshare.net/ssuser8e5e71/ss-53485325/9

  18. ドメイン駆動設計 〜ユーザー、モデル、エンジニアの新たな関係〜( 杉本啓) https://www.slideshare.net/ssuser8e5e71/ss-53485325/12

  19. 問題領域( ドメイン) 問題領域( ドメイン) = ビジネス/ ⽬的 = ビジネス/ ⽬的

    顧客が⾷べたいものを出す( ⽬的) 出した料理の原価と労働と売上の差分が利益( ⽬ 的) (※ 実際には利益のモデルはこんなに単純ではない)
  20. 解決領域( ドメインモデル) 解決領域( ドメインモデル) = ビジネスを駆動するシステム/ ⼿段 = ビジネスを駆動するシステム/ ⼿段

    料理を作る( ⼿段) 顧客から注⽂を取る( ⼿段) 注⽂伝票による情報伝達( ⼿段)
  21. ドメインモデル ドメインモデル ドメイン( ⽬的) を情報処理システム( ⼿段) によって モデル化したもの

  22. 誰にとってのモデルなのか?

  23. トリグヴェ・リーンスカウク 従来のシステムの設計では、強⼒な抽象化セット を選択すること、これらの抽象に適した表現を決 定すること、すべてのユーザーがそれらに実質的 に同じ意味を付けることを保証することに多⼤な 作業が費やされます。システムがインストールさ れるやいなや、マン- マシンシステム全体に⼤きな 慣性が発⽣し、それらが良いか悪いかに関わらず 古い意思決定を固める傾向があります。

    A note on DynaBook requirements
  24. ドメインモデルは社会的なシステムとして 個⼈を制約する

  25. 1. はじめに 2. ドメインモデル 3. メンタルモデル 4. パーソナルコンピュータ 5. MVC

    とはなにか
  26. メンタルモデル メンタルモデル

  27. https://blogs.yahoo.co.jp/niconicocub/10300438.html

  28. メンタルモデル(英: mental model )とは、頭の中 にある「ああなったらこうなる」といった「⾏動 のイメージ」を表現したものである。 https://ja.wikipedia.org/wiki/ メンタルモデル

  29. https://www.photo-ac.com/main/detail/2263511

  30. ドナルド・ノーマン 誰のためのデザイン? 指の使い⽅を間違えたとしても、はさみは使え る。それは、はさみの機能する部分が⽬に⾒え、 その意味するところが明らかなので、はさみがど んなものかわかるからだ。

  31. 道具から適切なメンタルモデルを 道具から適切なメンタルモデルを 構成するには... 構成するには... 可視性 よい概念モデル よい対応付け フィードバック

  32. ドナルド・ノーマン 誰のためのデザイン? プログラマーたちは、⾃分たちの書いたプログラ ムがユーザーに暴威をふるっているということを 知って驚愕している。

  33. アラン・ケイ コンピュータソフトウェア われわれは幼年期に、粘⼟というものが、ただ両 ⼿を突っ込むだけで、どのようにでも変形できる ことを発⾒する。コンピュータの場合、同じよう な発⾒をする⼈は滅多にいない。コンピュータの 素材は、⼈間の経験からあまりにもかけ離れてい て、さながらモニター画⾯を⾒ながら、ボタンと 挟みを使って、放射性物質のインゴットを遠隔操 作するような感がある。

  34. ユーザーイリュージョン

  35. アラン・ケイ コンピュータソフトウェア ⽬の前にある知覚できるものが、その⼈にとって のコンピュータである

  36. None
  37. ドナルド・ノーマン もっともよいコンピュータプログラムとは、コン ピュータそのものは「消え去って」いるようなプ ログラムである。そこでは、⼈は作業そのものに 取り組んでいるのであって、コンピュータを使っ ているという意識はなくなっている。

  38. アラン・ケイ ユーザーインターフェースに関する個⼈的考察 ユーザーインターフェースデザインの夜明けが本 当に始まったのは、コンピュータデザイナーが、 エンドユーザーもちゃんと頭を使っているという ことだけでなく、エンドユーザーがどのように頭 を使っているかをよく理解することが、インタラ クションのパラダイムを完全に変える、というこ とに気付いたときだった。

  39. 1. はじめに 2. ドメインモデル 3. メンタルモデル 4. パーソナルコンピュータ 5. MVC

    とはなにか
  40. パーソナルコンピュータ パーソナルコンピュータ

  41. シーモア・パパート コンピュータが⼦供をプログラムするべきか、⼦ 供がコンピュータをプログラムするべきか?

  42. https://ja.wikipedia.org/wiki/1984_( 広告)

  43. トリグヴェ・リーンスカウク ⼈権宣⾔に2つのことを追加することを提案しま す。 ⼈は⾃分の要求を知ることを強要されない。 ⼈はキーボードの奴隷労働に罰せられることな く、いつでも⼼を変えることができる。 A note on DynaBook

    requirements
  44. システムと個⼈の関係

  45. アクティブなインターフェースはデバイス所有者 からかけ離れた⾔語的なコンセプトを使った⾔葉 であってはいけません。所有者は好きなときに好 きな場所で⾃分のテキストファイルやプログラム を修正したり編集したりすることができるでしょ う。 あらゆる年齢の「⼦供たち」のためのパーソナル・コンピュータ

  46. Dan Intalls Smalltalk の底を流れる設計思想

  47. http://folk.uio.no/trygver/themes/mvc/mvc-index.html

  48. 要件は時間とともに進化するため、新しいシステ ムを前もって設計するのは難しいことでよく知ら れています。解決策は、モデリング⾔語をプログ ラミング⾔語にすることです。 http://folk.uio.no/trygver/2003/javazone-jaoo/MVC_pattern.pdf

  49. 1. はじめに 2. ドメインモデル 3. メンタルモデル 4. パーソナルコンピュータ 5. MVC

    とはなにか
  50. MVC とはなにか MVC とはなにか

  51. ドメインモデルは情報システムがもつモデル。 社会的システムとして個⼈を束縛する。 メンタルモデルは個⼈が世界に抱く内⾯的なモ デル。メンタルモデルを形成するためには良い 道具が必要、特にコンピュータにあってはユー ザーイリュージョンが重要。 パーソナルコンピュータは社会と個⼈の関係を 変えようとした。⾃分の⼒でシステムを書き換 えられることが重要だった。そのためにはコン ピュータの⾔語を個⼈が理解できなければなら

    ない。
  52. アラン・ケイ MVC はもともとPARC( パロアルト研究所) でだいた い40 年前に作られた。良いところは哲学的だった ことだ。45 年前にユタ⼤学で私が関わっていた3D グラフィックスでの「カメラ」と「ワールド」と

    いう観念によく適合するアイデアだった。 https://news.ycombinator.com/item?id=8841428
  53. 理想的なMVC のソリューションは、ユーザーがド メインの情報を直接⾒て操作するという、ユーザ ーイリュージョンをサポートすることでした。 http://folk.uio.no/trygver/themes/mvc/mvc-index.html

  54. None
  55. None
  56. None
  57. 分散情報システム

  58. http://folk.uio.no/trygver/themes/mvc/mvc-index.html

  59. None
  60. トリグヴェ・リーンスカウク ⼈権宣⾔に2つのことを追加することを提案しま す。 ⼈は⾃分の要求を知ることを強要されない。 ⼈はキーボードの奴隷労働に罰せられることな く、いつでも⼼を変えることができる。 A note on DynaBook

    requirements
  61. OOUI の⽬当て 仕事の対象がそこに⾒えていて、それに対して⾏ えるアクションが⾒えていて、その結果の状態が 常に⾒えるようになっていれば、ユーザーはその 道具を使ってできること、その道具の役割を⾃ら 発⾒し、妥当性を感じながら仕事を組み⽴てるこ とができます。そのような仕事は楽しいもので す。 https://www.sociomedia.co.jp/8740

  62. Modeless and Modal そのデザインは、いったい誰に⼒を与えるものな のか

  63. None