PoEAA Ch4 Web Presentation

PoEAA勉強メモ

出典: 


Web Presentation

  • 執筆時点で数年間におけるEnterprise Applicationsの最大の変化
  • WebブラウザUIの登場
  • つよみ

    • クライアントアプリケーションのインストール不要
    • 共通のUIアプローチ
    • ユニバーサルアクセス
  • Webアプリケーションをつくるのは、サーバソフトウェアからはじまる

    • どのURLをどのプログラムで処理するかの設定ファイル

      • 【補】Laravelでいうとroute/web.phpとかのきもち
    • Webサーバの仕事

      • リクエストのURLを解釈
      • Webサーバプログラムに処理を移す
  • 大きく2つの形

    • スクリプト型
    • サーバーページ型
  • スクリプト型

    • HTTP callを処理する関数やメソッドからなるプログラム
      • CGI
      • Java Servlets
    • HTTPリクエスト(文字列)からデータを取得

      • 正規表現

        • Perl for CGIの隆盛
      • キーワードインターフェース

        • Java servletsとか
        • 正規表現よりごちゃごちゃしない
    • HTTPレスポンスを出力

      • テキストストリーム操作
      • ストリームコマンドでレスポンスを作るのはしんどい

        • プログラマでもしんどい
        • HTMLマークアッパーなどにはほぼむり
  • サーバページ型

    • レスポンスをHTMLベースでかく
    • コード片をいれておき、動的に変化させる
      • PHP
      • ASP
      • JSP
    • 入力(=リクエスト)ベースで変化させる場合は骨が折れる
  • 両方つかおう

    • リクエストの解釈はスクリプト型で
    • レスポンスの整形はサーバページ型で
  • これがMVC: Model View Controllerというやつ

    • リクエストの解釈: Controller
    • レスポンスの整形: View
    • ロジック: Model
  • MVCに関する誤解の話

    • Controllerという言葉の誤解
    • MVCのCを言うときには、著者はInput Controllerという言葉を好む

      • リクエストを解釈する人
  • 制御のながれ

    1. Controllerはリクエストから情報を抽出する
    2. 情報と制御をModelに渡し、ドメインロジックを処理する

      • 永続データにアクセスしたりなんやかんやする
    3. Controllerに制御戻す
    4. Controllerは適切なViewえらぶ

      • 【補】データがなかったら404ページ、とかもありうるわね
    5. Controllerは、Modelで処理済のデータをViewにわたす

      • 直接のメソッドコールで渡さないこともしばしば
      • sessionに持つなど
  • 重要なこと: Modelが見た目(Presentation)から完全に分離していること

    • 【補】ようするにSmart UI antipatternにするなってこと
    • 見た目の変更や追加が容易
    • ドメインロジックの処理をTransaction ScriptやDomain Modelに分離

      • テストしやすい
  • Application Controller

    • Controllerという言葉のまぎらわしさよ
    • MVCのCの責務

      • リクエストの解釈
      • 制御を移すModel(ドメインロジック)の選択
      • Viewの選択
    • 上記から「〜の選択」を切り出したもの
    • InputController -> ApplicationController -> Model/View
    • ウィザードなど、特定の条件下・特定の順番でViewを出し分けるような場合に有効
    • すべてのWebアプリケーションで必要なわけではない

View Patterns

  • 考慮すべき3つの型

    • Transform View
    • Template View
    • Two Step View
  • 前者2つが対比、最後のはoption
Transform View Template View
single stage
Two Step View
  • Template View

    • いわゆるテンプレート
    • 動的なコンテンツのプレースホルダを仕込む
    • 多くのプラットフォームはこれ

      • ASP
      • JSP
      • PHP
    • Viewの中でプログラム書ける

      • 柔軟
      • ハチャメチャ・保守困難になりやすい
      • ドメインロジックが混入しないよう、きびしく自律する必要あり

        • ヘルパオブジェクトに処理を委譲する等
  • Transform View

    • XSLTが代表格

      • XSL Transformation

        W3Cにより標準化されたXML文書の変換用言語である。 (wikipedia)

      • ドメインデータがXMLだったり、容易にXMLに変換できたりする場合は良い
    • ControllerはXSLTスタイルシートを選び、Modelから収集されたXMLデータに適用して所望のレスポンスを得る
  • 混ぜることも出来る
  • single stage/Two Step Viewの選択
  • Two Step View

    • 1段目: ドメインデータから論理的なビューを生成する
    • 2段目: HTMLをレンダリングする
  • 使いどころ

    • 各画面で基本的なレイアウトが同じ

      • 顧客画面
      • 注文画面
    • 表示端末ごとにレンダリング変えたい

      • Webブラウザ
      • 携帯情報端末
  • 使えないところ

    • 1st stageで生成する論理ビューが共通化できないケース

      • UIが全然違うビュー

        • PCとモバイルとか

Input Controller Pattenrs

  • 2つある

    • Page Controller

      • モデルに処理を移してビューを生成する人
      • ビューの選択の責務
    • Front Controller

      • すべてのHTTPリクエストの処理専任

        • Laravelのmiddleware的な