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

Crafting Rails 4 Application 読み会(第6章)

Crafting Rails 4 Application 読み会(第6章)

有志で開催した Crafting Rails 4 Application 読書会の発表資料です。この読書会は参加者全員が事前に全部読んでくるという形式だったので、未読者はいないという前提で気になったポイントを中心にまとめてあります。

Masatoshi Iwasaki

March 26, 2014
Tweet

More Decks by Masatoshi Iwasaki

Other Decks in Technology

Transcript

  1. HTTP  verbs(method) •  ResponderはHTTP  verbs(HTTPメソッド)と密接 に関連してる。   •  Responderが具体的にどういうメソッドにどう 対応しているかを見ていく。

      •  なぜかここではRESTという単語が出てこない がで、本章後半で説明される。   •  Railsで開発してると当たり前な説明なので HTP  verbsの結論までは省略。    
  2. 寄り道:RESTとは •  Representa0onal  State  Transferの略   •  Roy  Fieldingsの博士論文で提唱された。  

    –  “Architectural  Styles  and  the  Design  of  Network-­‐based   So$ware  Architectures”  (2000)   •  PDFとHTMLで公開されてる。   –  博士論文ということもあって前半は過去の研究のまと めで分量がヘビー。   –  一見シンプルでさくっと思いつきそうにみえるRESTも 実際は様々なアーキテクチャを踏まえた上でのウェ ブにおける解だということが分かる。   •  HTTP  1.1とURIをデザインに影響を与えた。  
  3. 寄り道:RESTで何が良くなった? •  HTTP  1.0ではRFCで定義されていたのはGET,   HEAD,  POSTだけ。   – PUTやDELETEなどはaddi0onal  feature扱い。

      •  HTTP  1.1でRESTで使われているPUT,  DELETE などが追加された。   – 元々URLに指定されたHTMLを取ってくるだけだっ たプロトコルがURIとHTTPメソッドによってサー バー上のリソース管理をできるように拡張された   – (と、いうことが画期的だったんだと思う)。  
  4. REST •  Railsは1.2の頃からRESTを利用している。   – API作るのに便利。   •  だけど、APIの実装と同時にパフォーマンス の最適化が必要になる。  

    •  ブラウザからリソースを生成した後、何回か 読み取るケースがあるが、その都度同じレ スポンスを返すのは非効率。   – これをブラウザ側のキャッシュで対応したい。  
  5. Scaffoldのカスタマイズ方法 •  2種類ある。   – Scaffold  generatorを作る。   – Scaffold用のテンプレートを変更する。   • 

    今回は後者でいく。   •  前者の方法はすでに4章で取り上げたためと 思われる。  
  6. Scaffoldテンプレートの上書き •  Rails  generatorにこんなコードがある。   – ってことはコピー元のファイルを変えればいい? •  source_pathの存在   – 

    Generatorは複数のパスを見ることが出来る。   –  パスを追加してそちらを優先させればいい。   •  幸い、lib/templatesを優先してみるように作られてい る。  
  7. まとめ •  Responderがどう動いているか、どうカスタマ イズすればいいかを学んだ。   •  HTTP  cacheとflash  メッセージのハンドリングを responderで実装した。

      •  今回実装したのはCondi0onal  GET。   •  Condi0onal  PUTというものもあるよ。   – リソース更新時に最終更新日が変わっていたら 409  Conflictを返す。