restful web service ch2

136
1RESTful Webサービス 読書会

Upload: kunit

Post on 14-Dec-2014

1.724 views

Category:

Technology


1 download

DESCRIPTION

2008.4.12 RWS Reading

TRANSCRIPT

Page 1: Restful Web Service Ch2

第1回RESTful

Webサービス読書会

自己紹介

kunit

高橋邦彦PHP

Programmer

MapleというWeb Application

Framework を作ってます

次期バージョンMaple4を

RESTfulにしたいと思ってます

さて本題へ

第2章Webサービスクライアントの

作成

21

WebサービスはWebサイト

あらすじ

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 2: Restful Web Service Ch2

自己紹介

kunit

高橋邦彦PHP

Programmer

MapleというWeb Application

Framework を作ってます

次期バージョンMaple4を

RESTfulにしたいと思ってます

さて本題へ

第2章Webサービスクライアントの

作成

21

WebサービスはWebサイト

あらすじ

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 3: Restful Web Service Ch2

kunit

高橋邦彦PHP

Programmer

MapleというWeb Application

Framework を作ってます

次期バージョンMaple4を

RESTfulにしたいと思ってます

さて本題へ

第2章Webサービスクライアントの

作成

21

WebサービスはWebサイト

あらすじ

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 4: Restful Web Service Ch2

高橋邦彦PHP

Programmer

MapleというWeb Application

Framework を作ってます

次期バージョンMaple4を

RESTfulにしたいと思ってます

さて本題へ

第2章Webサービスクライアントの

作成

21

WebサービスはWebサイト

あらすじ

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 5: Restful Web Service Ch2

MapleというWeb Application

Framework を作ってます

次期バージョンMaple4を

RESTfulにしたいと思ってます

さて本題へ

第2章Webサービスクライアントの

作成

21

WebサービスはWebサイト

あらすじ

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 6: Restful Web Service Ch2

次期バージョンMaple4を

RESTfulにしたいと思ってます

さて本題へ

第2章Webサービスクライアントの

作成

21

WebサービスはWebサイト

あらすじ

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 7: Restful Web Service Ch2

さて本題へ

第2章Webサービスクライアントの

作成

21

WebサービスはWebサイト

あらすじ

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 8: Restful Web Service Ch2

第2章Webサービスクライアントの

作成

21

WebサービスはWebサイト

あらすじ

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 9: Restful Web Service Ch2

21

WebサービスはWebサイト

あらすじ

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 10: Restful Web Service Ch2

WebサービスはWebサイト

あらすじ

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 11: Restful Web Service Ch2

あらすじ

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 12: Restful Web Service Ch2

Webサービスに便利なライブラリ

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 13: Restful Web Service Ch2

常に存在するとは限らない

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 14: Restful Web Service Ch2

ので

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 15: Restful Web Service Ch2

HTTPRequestと

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 16: Restful Web Service Ch2

HTTPResponseを

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 17: Restful Web Service Ch2

直接操作するプログラムを

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 18: Restful Web Service Ch2

いろんな言語で

書いてみよう

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 19: Restful Web Service Ch2

だが

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 20: Restful Web Service Ch2

いろんな言語を使って

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 21: Restful Web Service Ch2

今日ここで実行するのは大変なので

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 22: Restful Web Service Ch2

実際に実行するのは

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 23: Restful Web Service Ch2

Rubyのみです

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 24: Restful Web Service Ch2

RESTfulWebサービス

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 25: Restful Web Service Ch2

基本的なHTTP

クライアント

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 26: Restful Web Service Ch2

YahooのWeb検索

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 27: Restful Web Service Ch2

ここで実際に実行

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 28: Restful Web Service Ch2

このRubyのサンプルでは

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 29: Restful Web Service Ch2

HTTP Requestの送信

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 30: Restful Web Service Ch2

標準ライブラリopen-uri

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 31: Restful Web Service Ch2

出力の解析

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 32: Restful Web Service Ch2

標準ライブラリREXML

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 33: Restful Web Service Ch2

一般化すると

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 34: Restful Web Service Ch2

(1)

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 35: Restful Web Service Ch2

HTTP Requestに含めるデータを

考える

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 36: Restful Web Service Ch2

HTTP MethodURI

HTTP HeaderEntity Body

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 37: Restful Web Service Ch2

(2)

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 38: Restful Web Service Ch2

dataをHTTP Request

として組み立てて

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 39: Restful Web Service Ch2

HTTP Server送信

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 40: Restful Web Service Ch2

(3)

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 41: Restful Web Service Ch2

Responsedataを解析

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 42: Restful Web Service Ch2

Response CodeHeader

Entity Body

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 43: Restful Web Service Ch2

第2章はこれをいろんな言語で

やってみてます

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 44: Restful Web Service Ch2

けど実演するのは

Rubyのみです(くどいけど)

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 45: Restful Web Service Ch2

この章ではいちいち

この基本構造を書くけど

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 46: Restful Web Service Ch2

ふつうはラッパーを作成する

(かあるものを使う)

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 47: Restful Web Service Ch2

いろんなラッパーが用意されてるが

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 48: Restful Web Service Ch2

やりかたばらばら

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 49: Restful Web Service Ch2

WADL

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 50: Restful Web Service Ch2

WebApplicationDescriptionLanguage

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 51: Restful Web Service Ch2

RESTful Serviceを記述できる語彙を持つ言語

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 52: Restful Web Service Ch2

SOAPではWSDL

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 53: Restful Web Service Ch2

ActiveResource

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 54: Restful Web Service Ch2

Ruby on Rails

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 55: Restful Web Service Ch2

Web Serviceのクライアントの作成が簡単

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 56: Restful Web Service Ch2

第2章では説明しないよ

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 57: Restful Web Service Ch2

22

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 58: Restful Web Service Ch2

deliciousサンプルアプリケーション

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 59: Restful Web Service Ch2

ここからはdeliciousの

Web Serviceにアクセスする

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 60: Restful Web Service Ch2

けどdeliciousよくない

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 61: Restful Web Service Ch2

deliciousのWeb Serivceの

設計はRESTfulじゃない

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 62: Restful Web Service Ch2

httpsapideliciousv1postsaddhttpsapideliciousv1tagsrename

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 63: Restful Web Service Ch2

Requestは全て

GET Method

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 64: Restful Web Service Ch2

URIに動詞が登場

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 65: Restful Web Service Ch2

よろしくない

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 66: Restful Web Service Ch2

なぜdeliciousを選んだの

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 67: Restful Web Service Ch2

(1)

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 68: Restful Web Service Ch2

理解しやすいよく知られてる使いやすい

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 69: Restful Web Service Ch2

(2)

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 70: Restful Web Service Ch2

記述的ではなく規範的であることを明確にするため

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 71: Restful Web Service Ch2

サーバは理想主義クライアントは実用主義

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 72: Restful Web Service Ch2

自分がすることには保守的であれ

他人から受け取るものには寛容であれ

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 73: Restful Web Service Ch2

(3)

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 74: Restful Web Service Ch2

7章の伏線

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 75: Restful Web Service Ch2

7章ではちゃんと

RESTfulにつくるよ

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 76: Restful Web Service Ch2

これ以降のサンプル

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 77: Restful Web Service Ch2

apideliciousにhttps接続して

GET v1postsrecentをRequest

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 78: Restful Web Service Ch2

Responseを解析してブックマークの

href属性とdescription属性を標準出力に書き出す

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 79: Restful Web Service Ch2

23

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 80: Restful Web Service Ch2

リクエストの作成HTTPライブラリ

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 81: Restful Web Service Ch2

いろんな言語のHTTPライブラリを

紹介

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 82: Restful Web Service Ch2

必要となる機能

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 83: Restful Web Service Ch2

HTTPSとSSL証明書の検証

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 84: Restful Web Service Ch2

メソッドサポートGET HEADPOST PUT

DELETE

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 85: Restful Web Service Ch2

PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 86: Restful Web Service Ch2

HTTP Headerをカスタマイズできる

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 87: Restful Web Service Ch2

ResponseのEntity Body以外にResponse Codeと

Headerにもアクセスできる

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 88: Restful Web Service Ch2

HTTP Proxy経由で通信できる

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 89: Restful Web Service Ch2

ここでRubyの

サンプル実演

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 90: Restful Web Service Ch2

24

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 91: Restful Web Service Ch2

レスポンスの処理XMLパーサー

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 92: Restful Web Service Ch2

Web ServiceのEntity Bodyは

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 93: Restful Web Service Ch2

通常XML Document

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 94: Restful Web Service Ch2

なのでXMLの

パースが必要

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 95: Restful Web Service Ch2

XMLパーサは3種類ある

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 96: Restful Web Service Ch2

ドキュメントベースの手法

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 97: Restful Web Service Ch2

DOM

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 98: Restful Web Service Ch2

DocumentObjectModel

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 99: Restful Web Service Ch2

扱うのが容易

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 100: Restful Web Service Ch2

ランダムにアクセスができる

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 101: Restful Web Service Ch2

ただしドキュメント全体を扱う必要がある

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 102: Restful Web Service Ch2

大きなドキュメントだとメモリを大量に食う

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 103: Restful Web Service Ch2

イベントベースの手法(2種類)

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 104: Restful Web Service Ch2

ドキュメントベースの手法に比べて効率がよい

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 105: Restful Web Service Ch2

ただし不正なXMLに

弱い

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 106: Restful Web Service Ch2

SAX

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 107: Restful Web Service Ch2

Simple APIfor

XML

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 108: Restful Web Service Ch2

複雑になるが一部分だけ扱いたいときに

便利

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 109: Restful Web Service Ch2

pull Parser

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 110: Restful Web Service Ch2

SAXより扱いたい部分が多い場合に便利

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 111: Restful Web Service Ch2

XMLパーサはその時々で使い分け

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 112: Restful Web Service Ch2

ここでRubyの

サンプル実演

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 113: Restful Web Service Ch2

25

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 114: Restful Web Service Ch2

JSONパーサー直列化されたデータの処理

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 115: Restful Web Service Ch2

Web Serviceが返すドキュメントはXMLだけじゃないよ

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 116: Restful Web Service Ch2

JSONで単純なデータ構造にして返すものが増えてきた

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 117: Restful Web Service Ch2

数値配列ハッシュ

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 118: Restful Web Service Ch2

なぜJSON

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 119: Restful Web Service Ch2

Web Serviceを受け取るのがJavaScriptというのが多いから

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 120: Restful Web Service Ch2

ここでRubyの

サンプル実演

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 121: Restful Web Service Ch2

もしかして

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 122: Restful Web Service Ch2

筆者JSON嫌い

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 123: Restful Web Service Ch2

26

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 124: Restful Web Service Ch2

WADLによるクライアントの簡易化

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 125: Restful Web Service Ch2

パターンがあるならもっと簡単に扱えないの

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 126: Restful Web Service Ch2

そこで

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 127: Restful Web Service Ch2

WADL

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 128: Restful Web Service Ch2

WebApplicationDescriptionLanguage

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 129: Restful Web Service Ch2

詳しい説明は9章まで待て

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 130: Restful Web Service Ch2

何ヶ月後

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 131: Restful Web Service Ch2

WADLの導入は

進んでいない

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 132: Restful Web Service Ch2

なぜ(参加者に質問)

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 133: Restful Web Service Ch2

ここでRubyの

サンプル実演

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 134: Restful Web Service Ch2

結論

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 135: Restful Web Service Ch2

Pythonの人も呼びたい

ご静聴ありがとうございました

Page 136: Restful Web Service Ch2

ご静聴ありがとうございました