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

初めての REST - Representational State Transfer

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