Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MVCとはなにか/What MVC is

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

Seiji Amashige

December 01, 2019
Tweet

More Decks by Seiji Amashige

Other Decks in Design

Transcript

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

    View Slide

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

    View Slide

  3. 今⽇のお話
    1.
    はじめに
    2.
    ドメインモデル
    3.
    メンタルモデル
    4.
    パーソナルコンピュータ
    5. MVC
    とはなにか

    View Slide

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

    View Slide

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

    View Slide

  6. MVC as Observer
    MVC as Observer
    A Cookbook for Using the Model-View-Controller User Interface Paradigm in
    Smalltalk-80

    View Slide

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

    View Slide

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

    View Slide

  9. ドメインモデル
    ドメインモデル

    View Slide

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

    View Slide

  11. View Slide

  12. View Slide

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

    View Slide

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

    View Slide

  15. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  19. 問題領域(
    ドメイン)
    問題領域(
    ドメイン)
    =
    ビジネス/
    ⽬的
    =
    ビジネス/
    ⽬的
    顧客が⾷べたいものを出す(
    ⽬的)
    出した料理の原価と労働と売上の差分が利益(

    的)
    (※
    実際には利益のモデルはこんなに単純ではない)

    View Slide

  20. 解決領域(
    ドメインモデル)
    解決領域(
    ドメインモデル)
    =
    ビジネスを駆動するシステム/
    ⼿段
    =
    ビジネスを駆動するシステム/
    ⼿段
    料理を作る(
    ⼿段)
    顧客から注⽂を取る(
    ⼿段)
    注⽂伝票による情報伝達(
    ⼿段)

    View Slide

  21. ドメインモデル
    ドメインモデル
    ドメイン(
    ⽬的)
    を情報処理システム(
    ⼿段)
    によって
    モデル化したもの

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  26. メンタルモデル
    メンタルモデル

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  40. パーソナルコンピュータ
    パーソナルコンピュータ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  52. アラン・ケイ
    MVC
    はもともとPARC(
    パロアルト研究所)
    でだいた
    い40
    年前に作られた。良いところは哲学的だった
    ことだ。45
    年前にユタ⼤学で私が関わっていた3D
    グラフィックスでの「カメラ」と「ワールド」と
    いう観念によく適合するアイデアだった。
    https://news.ycombinator.com/item?id=8841428

    View Slide

  53. 理想的なMVC
    のソリューションは、ユーザーがド
    メインの情報を直接⾒て操作するという、ユーザ
    ーイリュージョンをサポートすることでした。
    http://folk.uio.no/trygver/themes/mvc/mvc-index.html

    View Slide

  54. View Slide

  55. View Slide

  56. View Slide

  57. 分散情報システム

    View Slide

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

    View Slide

  59. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  63. View Slide