初めての rest - representational state transfer

17

Click here to load reader

Upload: tatsumi-naganuma

Post on 28-May-2015

2.208 views

Category:

Technology


4 download

DESCRIPTION

RESTに初めて触れる人に向けて、どのような考え方に基づくものなのかを大雑把に解説しました。NSEG第3回勉強会(2010年5月22日)の発表資料。

TRANSCRIPT

Page 1: 初めての REST - Representational State Transfer

はじめての RESTRepresentational State Transfer

SSS(G) 長沼立巳

Page 2: 初めての REST - Representational State Transfer

自己紹介• 名前  長沼立巳(ながぬまたつみ)• 職業  上田市にある機器メーカーの会社員 • 仕事  組み込み、デスクトップアプリ、Webアプリ • よく使う言語   Java、 C++、 C• Twitter  naganumat

Page 3: 初めての REST - Representational State Transfer

いきなり宣伝

Page 4: 初めての REST - Representational State Transfer

SSS(G)

• 正式名称:信州ソフトウェアサポーターズグループ• 略称: SSS(G)• 読み方:トリプル・エス・ジー• 活動開始: 2000年 8月 • 活動拠点:上田市• 活動:毎月の定例勉強会• 勉強会

o 内容はその場でo 進め方はその場の雰囲気で o 前回( 5/15)は Googleの QRコードライブラリをいじってましたバグってる ...リポジトリの headは直ってる iPhoneに移植してみる?

• つづきはWebで  http://www.sssg.org/

Page 5: 初めての REST - Representational State Transfer

もういっこ宣伝

Page 6: 初めての REST - Representational State Transfer

bugs(J)

• 正式名称: BSD Users Group, Shinshu• 略称: bugs(J)• 読み方:バグズ• 活動開始: 2001年 2月 • 活動拠点:特になし• 活動:特になし(!!)• つづきはWebで  http://www.bugs.jp/

Page 7: 初めての REST - Representational State Transfer

本題

Page 8: 初めての REST - Representational State Transfer

Webのおさらい• ブラウザ開いて、 URL入力して、ページを表示する、アレ

o Yahoo!o Googleo YouTubeo Mixio Asahi.com o Amazono 楽天o MSN (Windows Live)

Page 9: 初めての REST - Representational State Transfer

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

Page 10: 初めての REST - Representational State Transfer

Webの仕組み ~  HTTPを観察すると

• HTTPo クライアント  - サーバー型 o 基本はシンプルなプロトコル

クライアント [リクエスト] → サーバークライアント ← [レスポンス] サーバー 

o リクエストにすべての情報が含まれているリクエストに、そのリクエストを処理するのに必要な情報がすべて書いてある

サーバーではクライアントに関する情報(状態)を覚えていない

o つまりWebは 「ステートレス」

Page 11: 初めての REST - Representational State Transfer

Webの仕組み ~  HTTPを観察すると

• HTTPo 最低限のメソッドが用意されているo CRUD(に近いもの)が用意されている

Create、 Read、 Update、 Deleteo POST、 GET、 PUT、 DELETEo Webにあるもの(=リソース)すべてに実行できる

Webページを GET!注文情報を POST!   ( PUTと DELETEはあんまり使われていませんね ...)

o つまりWebは「すべてのリソースに適用できる良く定義された動作セット」を持っている

Page 12: 初めての REST - Representational State Transfer

Webの仕組み ~  URLをよく観察すると• URL

o Webにあるもの(=リソース)にはすべて URLがついている HTML、画像、MP3ファイル、ビデオ Flashオブジェクト、アプレットフラグ

o 世界中で唯一の名前 o URLさえついていればなんでもアクセスできる

POST <URL> GET <URL> PUT <URL> DELETE <URL>

o つまりWebは「リソースを一意に識別する汎用的な構文( URL)」を持っている 

Page 13: 初めての REST - Representational State Transfer

Webの仕組み ~  HTMLをよく観察すると• HTML

o HTMLといえば「リンク」( hypertextですから)o 次から次へとWebページをたどれる

ページでなくてもリンクできる(すべてのリソースへ)

imgタグで埋め込んだりするのも URL(リソースの名前)を指定するだけ

• それ以外のハイパーメディアoXML ( eXtensible Markup Language)oJSON ( JavaScript Object Notation)

Page 14: 初めての REST - Representational State Transfer

RESTで何がうれしいのか• スケールしやすい

o ステートレス! ハードを増やせば性能もついてくるo 層構造!

プロキシーサーバー(変換、キャッシュ ...)ロードバランサー

o キャッシュ可能冪等性を保証する操作が決まっている

• 簡単o ステートレス! リンクをたどる=状態遷移 o どんなリソースに対しても同じ操作!

POST、 GET、 PUT、 DELETEo すべてのリソースに統一的な名前の付け方がある= URL

• ほかにもいろいろ 

Page 15: 初めての REST - Representational State Transfer

結局 RESTって?• いつものWebはこうやってできています、という「設計思想」o 厳密には「アーキテクチャ スタイル」と言いますo 「 HTTP」「 URL」「 HTML」を使えば RESTになる、というわけではない

• Webを使ったシステムを作るときに参考になるo Webサービスを設計するとき「 REST」が使えるo RESTを使うとWebのメリットを有効に使える

世界でもっとも成功した分散環境と同じ考え方!• 苦手なこともあります

o  厳密な一貫性を持たせたい(トランザクションもできないことはないが ...)

o  ユーザー認証( OpenIDや OAuthで解決?)o 性能要求が厳しい(レイテンシに制約がある、など)

Page 16: 初めての REST - Representational State Transfer

RESTはどこで使うのか• たいていのネットワーク システムで使えます

o 実装がシンプルなので、組み込み機器でも有効ですo ライブラリやフレームワークも充実しています

Windowsなら VBScript+MSXMLではじめられる! Javaならサーバーもクライアントも! Rubyなら Ruby on Rails! Perlなら(だれか教えて)! .NET Frameworkなら(以下同じ PHP (以下同じ

• いろいろ試してみてください o 普段使っているWebブラウザも RESTクライアント

Page 17: 初めての REST - Representational State Transfer

はじめて(じゃない) RESTRepresentational State Transfer

SSS(G) 長沼立巳

おしまい