初めての rest - representational state transfer
DESCRIPTION
RESTに初めて触れる人に向けて、どのような考え方に基づくものなのかを大雑把に解説しました。NSEG第3回勉強会(2010年5月22日)の発表資料。TRANSCRIPT
はじめての RESTRepresentational State Transfer
SSS(G) 長沼立巳
自己紹介• 名前 長沼立巳(ながぬまたつみ)• 職業 上田市にある機器メーカーの会社員 • 仕事 組み込み、デスクトップアプリ、Webアプリ • よく使う言語 Java、 C++、 C• Twitter naganumat
いきなり宣伝
SSS(G)
• 正式名称:信州ソフトウェアサポーターズグループ• 略称: SSS(G)• 読み方:トリプル・エス・ジー• 活動開始: 2000年 8月 • 活動拠点:上田市• 活動:毎月の定例勉強会• 勉強会
o 内容はその場でo 進め方はその場の雰囲気で o 前回( 5/15)は Googleの QRコードライブラリをいじってましたバグってる ...リポジトリの headは直ってる iPhoneに移植してみる?
• つづきはWebで http://www.sssg.org/
もういっこ宣伝
bugs(J)
• 正式名称: BSD Users Group, Shinshu• 略称: bugs(J)• 読み方:バグズ• 活動開始: 2001年 2月 • 活動拠点:特になし• 活動:特になし(!!)• つづきはWebで http://www.bugs.jp/
本題
Webのおさらい• ブラウザ開いて、 URL入力して、ページを表示する、アレ
o Yahoo!o Googleo YouTubeo Mixio Asahi.com o Amazono 楽天o MSN (Windows Live)
Webの仕組み
• HTTPo WebサーバーとWebクライアント(ブラウザなど)で通信するための規約
o 1997 HTTP/1.1
• URLo Webにあるページなどの位置を示すアドレスo 1994年 URL
• HTMLo Webページのソースo 1993年 HTML 1.0、 1999年 HTML 4.01o 2001年 XHTML 1.1、 201X年 HTML5
Webの仕組み ~ HTTPを観察すると
• HTTPo クライアント - サーバー型 o 基本はシンプルなプロトコル
クライアント [リクエスト] → サーバークライアント ← [レスポンス] サーバー
o リクエストにすべての情報が含まれているリクエストに、そのリクエストを処理するのに必要な情報がすべて書いてある
サーバーではクライアントに関する情報(状態)を覚えていない
o つまりWebは 「ステートレス」
Webの仕組み ~ HTTPを観察すると
• HTTPo 最低限のメソッドが用意されているo CRUD(に近いもの)が用意されている
Create、 Read、 Update、 Deleteo POST、 GET、 PUT、 DELETEo Webにあるもの(=リソース)すべてに実行できる
Webページを GET!注文情報を POST! ( PUTと DELETEはあんまり使われていませんね ...)
o つまりWebは「すべてのリソースに適用できる良く定義された動作セット」を持っている
Webの仕組み ~ URLをよく観察すると• URL
o Webにあるもの(=リソース)にはすべて URLがついている HTML、画像、MP3ファイル、ビデオ Flashオブジェクト、アプレットフラグ
o 世界中で唯一の名前 o URLさえついていればなんでもアクセスできる
POST <URL> GET <URL> PUT <URL> DELETE <URL>
o つまりWebは「リソースを一意に識別する汎用的な構文( URL)」を持っている
Webの仕組み ~ HTMLをよく観察すると• HTML
o HTMLといえば「リンク」( hypertextですから)o 次から次へとWebページをたどれる
ページでなくてもリンクできる(すべてのリソースへ)
imgタグで埋め込んだりするのも URL(リソースの名前)を指定するだけ
• それ以外のハイパーメディアoXML ( eXtensible Markup Language)oJSON ( JavaScript Object Notation)
RESTで何がうれしいのか• スケールしやすい
o ステートレス! ハードを増やせば性能もついてくるo 層構造!
プロキシーサーバー(変換、キャッシュ ...)ロードバランサー
o キャッシュ可能冪等性を保証する操作が決まっている
• 簡単o ステートレス! リンクをたどる=状態遷移 o どんなリソースに対しても同じ操作!
POST、 GET、 PUT、 DELETEo すべてのリソースに統一的な名前の付け方がある= URL
• ほかにもいろいろ
結局 RESTって?• いつものWebはこうやってできています、という「設計思想」o 厳密には「アーキテクチャ スタイル」と言いますo 「 HTTP」「 URL」「 HTML」を使えば RESTになる、というわけではない
• Webを使ったシステムを作るときに参考になるo Webサービスを設計するとき「 REST」が使えるo RESTを使うとWebのメリットを有効に使える
世界でもっとも成功した分散環境と同じ考え方!• 苦手なこともあります
o 厳密な一貫性を持たせたい(トランザクションもできないことはないが ...)
o ユーザー認証( OpenIDや OAuthで解決?)o 性能要求が厳しい(レイテンシに制約がある、など)
RESTはどこで使うのか• たいていのネットワーク システムで使えます
o 実装がシンプルなので、組み込み機器でも有効ですo ライブラリやフレームワークも充実しています
Windowsなら VBScript+MSXMLではじめられる! Javaならサーバーもクライアントも! Rubyなら Ruby on Rails! Perlなら(だれか教えて)! .NET Frameworkなら(以下同じ PHP (以下同じ
• いろいろ試してみてください o 普段使っているWebブラウザも RESTクライアント
はじめて(じゃない) RESTRepresentational State Transfer
SSS(G) 長沼立巳
おしまい