SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTFul Webサービス
猪股 健太郎
@matarillo
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
アジェンダ
• RESTの説明
– RESTとは
– RESTの原則
– RESTful WebサービスとHTTP
• .NETでの実装
– WCF
– WCF REST Starter Kit
– RestCake
– ASP.NET MVC
– OpenRasta
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
質問1
• この本のどちらかを持ってる人
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
質問2
• 以下のどれかを受講した人
Tech・Ed Japan 2009
T2-310 「WCF で実現する SOA、REST」
(MS 松崎さん)
Tech・Ed Japan 2010
T6-312 「WCF 4 における新機能のポイント」
(アークウェイ 奥田さん・飯田さん)
Tech・Ed Japan 2010
T4-303 「Open Data Protocol (Odata) と
WCF Data Services によるサービスの作成」
(MS 井上さん)
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
第1部 RESTの説明
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
REST
• 2000年
• ロイ・フィールディングの博士論文
– なぜWebはこんなに普及したのか?
– なぜWebは大規模でもうまく動くのか?
– Webの設計原則とは?
それを“REST”と呼ぶことにする。
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
REST ○×
• 設計原則
• アーキテクチャ
スタイル
• 通信プロトコルでは
ない
• 仕様ではない
• 標準ではない
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
言葉の定義:Webサービス
• 広い意味でのWebサービス
– Webで提供されるサービス
• 検索エンジン、Webメール、顧客管理SaaS
• 中ぐらいの意味でのWebサービス
– プログラムが呼び出すWeb API
• Twitter API、Amazon Web サービス、Bing API
• 狭い意味でのWebサービス
– SOAPおよびWS-*を使ったインターフェース
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
言葉の定義:Webサービス
• 広い意味でのWebサービス
– Webで提供されるサービス
• 検索エンジン、Webメール、顧客管理SaaS
• 中ぐらいの意味でのWebサービス
– プログラムが呼び出すWeb API
• Twitter API、Amazon Web サービス、Bing API
• 狭い意味でのWebサービス
– SOAPおよびWS-*を使ったインターフェース
今日はこの意味です。
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
今日の言葉の定義
• RESTful Webサービスとは
REST アーキテクチャスタイルを
採用しているWebサービスのこと。
– 「RESTっぽいWebサービス」
– 「REST」という言葉の使われ方は
「オブジェクト指向」という言葉の
使われ方にも似ている。
– RESTを構成する原則は複数ある。
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則
• RESTアーキテクチャスタイルの原則を
大きく2つに分類する
– 分散システムとしての構造の原則
• クライアント・サーバー型の発展形
– 分散システムが扱う情報の原則
• リソース
• HATEOAS
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(構造編)
• クライアント・サーバー
クライアント サーバー
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(構造編)
• クライアント・サーバー&ステートレス
クライアント ステートレスサーバー
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(構造編)
• クライアント・サーバー&ステートレス
&キャッシュ
クライアント ステートレスサーバー
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(構造編)
• クライアント・サーバー&ステートレス
&キャッシュ&統一インターフェース
クライアント ステートレスサーバー
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(構造編)
• クライアント・サーバー&ステートレス
&キャッシュ&統一インターフェース
&階層化システム
クライアント ステートレスサーバー
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(構造編)
• クライアント・サーバー&ステートレス
&キャッシュ&統一インターフェース
&階層化システム
&コード・オン・デマンド(任意)
クライアント ステートレスサーバー
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(情報編)
• リソースとは?
– 名前がつけられる情報すべて
– 名前がつけられる=他と区別できる
– 抽象的
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(情報編)
• リソース
「東京の今日の天気」
「わんくま同盟のメンバリスト」
「藍澤光の壁紙(WP7用)」
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(情報編)
• リソース&アドレス
「東京の今日の天気」
http://weather.yahoo.co.jp/weather/jp/13/4410.html
「わんくま同盟のメンバリスト」
http://www.wankuma.com/member/
「藍澤光の壁紙(WP7用)」
http://www.microsoft.com/taiwan/silverlight/images/480X800_f.jpg
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(情報編)
• リソース&アドレス&表現
「東京の今日の天気」
http://weather.yahoo.co.jp/weather/jp/13/4410.html
html
「わんくま同盟のメンバリスト」
http://www.wankuma.com/member/
html
「藍澤光の壁紙(WP7用)」
http://www.microsoft.com/taiwan/silverlight/images/480X800_f.jpg
jpeg
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(情報編)
• リソース&アドレス&表現&メタデータ
「東京の今日の天気」
http://weather.yahoo.co.jp/weather/jp/13/4410.html
html
ピンポイント天気へのリンクなど
「わんくま同盟のメンバリスト」
http://www.wankuma.com/member/
html
「藍澤光の壁紙(WP7用)」
http://www.microsoft.com/taiwan/silverlight/images/480X800_f.jpg
jpeg
最終更新日時:10/08/2010 18:31:46
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTの原則(情報編)
• HATEOAS
– Hypermedia as the Engine of Application State
– アプリケーションの状態を表現する
機構としてハイパーメディアを使う
– アプリケーションの状態遷移に
ハイパーリンクを活用する
• 商品一覧のXMLに「次の100件」へのリンクをいれ
ておく
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
ここまでのまとめ
• RESTはWebの設計原則を分析したもの
• RESTはアーキテクチャスタイル
• 大きく2つに分類できる
– 分散システムとしての構造の原則
• クライアント・サーバー型の発展形
– 分散システムが扱う情報の原則
• リソース
• HATEOAS
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTという単語
• Representational State Transfer
– リソースの現在の状態を
– 表現したものを
– 転送する
「Webで使われるプロトコルは
HTTP (HyperText Transfer Protocol)
だけど、これって
ハイパーテキスト以外にも
便利に使えるよね?」
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTとHTTP
抽象概念 具体的な例
REST Web
リソース
ハイパー
メディア
アドレス URI
統一
インターフェース
HTTP
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTful Webサービス
抽象概念 具体的な例
REST Webサービス
リソース (リソース)
アドレス URI
統一
インターフェース
HTTP
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
統一インターフェースとしてのHTTP
• HTTPとは
– リソースのアドレスをURLで
– リソースのメタデータをHTTPヘッダで
– リソースの表現をHTTPボディで
– リソースに対する操作をHTTPメソッドで
• 表すプロトコル
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
HTTPの4大メソッド
• GET
– リソースの表現を取得する
• POST
– 既存のリソースに関連する何かを追加する
– 既存のリソースにデータを渡して何かをする
• DELETE
– 既存のリソースを削除する
• PUT
– URLを指定して新しいリソースを作成する
– 既存のリソースを変更する
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
HTTPのベストプラクティス
• GET/DELETE/PUTを「べき等」にする
• 可能な限り標準のメソッドを使う
• POSTメソッドを濫用しない
– HTTPボディにリソースのアドレスを含めない
– HTTPボディにリソースの操作を含めない
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTではないもの
• RPCスタイルのアーキテクチャ
– HTTPボディにリソースのアドレスを含める
– HTTPボディにリソースの操作を含める
– 結果的に、POSTばかりを使う
<?xml version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>40</i4></value>
</param>
</params>
</methodCall>
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RPCスタイルは「間違っている」か?
• そうとは言えない
• RPCスタイルのほうが向いている
処理もある
• ただ、RESTの方が
Webの利点を享受できる
– 普及性やスケーラビリティ
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTful Webサービスの設計
1. サービスが扱うデータ集合を特定する
2. データ集合をリソースに分ける
3. リソースにURIをつける
4. リソースに対する操作を決める
5. 送受信する表現を決める
6. リソース間のリンクを設計する
7. リソースの状態遷移を検討する
8. エラーを検討する
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTful Webサービスのベストプラクティス
• コレクションリソース
– http://edtter.com/chack/status
• GET……リソース一覧の取得 (R)
• POST……新規リソースの追加 (C)
– 作成されたリソースのURIをレスポンスに含める
• 個別リソース
– http://edtter.com/chack/status/123456
• GET……個別リソースの取得 (R)
• PUT……個別リソースの更新 (U)
• DELETE……個別リソースの削除 (D)
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RESTful Webサービスのベストプラクティス
• Atom出版プロトコル (AtomPub)
– IETFが標準化 → RFC 5023
– Web リソースを出版・編集する
• コレクション: 全体的に、あるいは部分的に検索さ
れ得るリソースの集合
• サービス: コレクションの発見と記述
• 編集: リソースの生成、編集、削除
– リソース一覧のページングにも対応
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
第2部 .NETでの実装
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
WCF REST
• .NET Framweork 3.5以降
• WebServiceHostFactoryクラス
• WCFの面倒なconfigが不要
• クライアントの「サービス参照」不可
<%@ ServiceHost Language="C#" Debug="true"
Service="WcfRestService1.Service1"
CodeBehind="Service1.svc.cs"
Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
Service1.svc
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
WCF REST
• HTTP GETは[WebGet]カスタム属性、
それ以外は[WebInvoke]カスタム属性
• リクエストやレスポンスは
POX / JSON / バイトストリームの三択
• HttpContextの代わりに
WebOperationContext
– “201 Created”と“404 Not Found”には
ショートカットあり
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
WCF REST
• Visual Studio ギャラリーから
テンプレートを
ダウンロード可能
(VS2010用)
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
WCF RESTのgood/bad
• いい点
– わりと自由にできる
• つらい点
– カスタムシリアライズ
– HATEOAS
– URLに「○○.svc」が含まれる
• .NET4からはルーティングと統合できる
– クライアントの実装
– 実はWCF
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
WCF REST Starter Kit
• WCF REST Starter Kit
– http://aspnet.codeplex.com/wikipage?title=WCF
%20REST
– Preview 2 (2009/3/10) はVS2008 SP1用
– サーバ側
• POX、単一要素、コレクション、
Atom Feed、AtomPub
– クライアント側
• HttpClient
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
WCF REST Starter Kitのgood/bad
• いい点
– 型にはまった実装は楽
• CRUDとHTTPメソッドのマッピングとか
• POX/JSON対応サービスとか
• ヘルプページとか
• 例外処理とか
– HttpClientが手軽
– OSS
• つらい点
– 自由がきかない
– VS2010未サポート (Preview2)
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
RestCake
• RestCake
– http://rest.codeplex.com/
– http://restcake.net/Overview.aspx
• いい点
– WCFじゃない
– でも似たような感じで作れる
– 罠が少ない
• JSONとか、匿名型とか、循環参照とか……
– OSS
• つらい点
– 自己責任
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
ASP.NET MVC
• ASP.NET MVCをWebサービスに使う
– Viewが「リソースの表現」になるだけ。
• いい点
– リソース表現が自由
– WCFじゃない
– OSS
– 赤シャツ印
• つらい点
– GET/POST/PUT/DELETE/HEADだけ対応
– 細かい道具がそろってない
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
OpenRasta
• OpenRasta
– http://openrasta.com/
– RESTful Webアプリケーション/Webサービス
– http://live.visitmix.com/MIX10/Sessions/EX19
• いい点
– ASP.NET MVCに近い形で、より強力にRESTをサポート
– .NET Framework 2.0以降で動作
– リソース表現が自由
– 属性いらない
• つらい点
– ???
REST Architecture Solution Targeting Asp.net
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
質疑応答タイム
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
補足:トランザクションの実現
• http://developer.cybozu.co.jp/kazuho/2010/04/rest-
re-web-a6d.html
– トランザクションの開始は POST を使ったトランザク
ションリソースの生成
– トランザクション開始後は POST ではなく PUT を使い、
クライアントがリクエスト ID を指定することで、
ネットワーク障害への耐性を確保
– トランザクションのコミットも再送可能じゃないと
困るので PUT
– コミットの返り値を確認してからトランザクション
リソースを DELETE
わんくま同盟 東京勉強会 #52
Wankuma Developer Deep Dive
参考情報
• REST in Windows Communication Foundation
(WCF)
– http://msdn.microsoft.com/wcf/rest
• A Guide to Designing and Building RESTful
Web Services with WCF 3.5
– http://msdn.microsoft.com/en-
us/library/dd203052.aspx

Más contenido relacionado

La actualidad más candente

PHP 開発環境構築 - Windows 編 -
PHP 開発環境構築- Windows 編 -PHP 開発環境構築- Windows 編 -
PHP 開発環境構築 - Windows 編 -Masaki Takeda
 
Data API + AWS = (CMS どうでしょう 札幌編)
Data API + AWS =  (CMS どうでしょう 札幌編)Data API + AWS =  (CMS どうでしょう 札幌編)
Data API + AWS = (CMS どうでしょう 札幌編)Yuji Takayama
 
Web API(Dynamics 365 )勉強会
Web API(Dynamics 365 )勉強会Web API(Dynamics 365 )勉強会
Web API(Dynamics 365 )勉強会Kazuya Sugimoto
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -Yuji Takayama
 
RoRとAWSで100,000Req/Minを処理する
RoRとAWSで100,000Req/Minを処理するRoRとAWSで100,000Req/Minを処理する
RoRとAWSで100,000Req/Minを処理するaktsk
 
SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発Tusyoshi Matsuzaki
 
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらいde:code 2017
 
Latest Status of Identity Federation
Latest Status of Identity FederationLatest Status of Identity Federation
Latest Status of Identity FederationAtsushi Kambara
 
Graph api introduction_20130425
Graph api introduction_20130425Graph api introduction_20130425
Graph api introduction_20130425Naohiro Fujie
 
120331 silverlight5新機能早めぐり
120331 silverlight5新機能早めぐり120331 silverlight5新機能早めぐり
120331 silverlight5新機能早めぐりTakayoshi Tanaka
 
Web API を気軽に使える ツールやサービスのご紹介
Web API を気軽に使えるツールやサービスのご紹介Web API を気軽に使えるツールやサービスのご紹介
Web API を気軽に使える ツールやサービスのご紹介CData Software Japan
 
Prd004 office 365_における_id_統合と
Prd004 office 365_における_id_統合とPrd004 office 365_における_id_統合と
Prd004 office 365_における_id_統合とTech Summit 2016
 
社内システムの構造と設計、実装のはなし(下書きバージョン)
社内システムの構造と設計、実装のはなし(下書きバージョン)社内システムの構造と設計、実装のはなし(下書きバージョン)
社内システムの構造と設計、実装のはなし(下書きバージョン)SATOSHI TAGOMORI
 

La actualidad más candente (17)

PHP 開発環境構築 - Windows 編 -
PHP 開発環境構築- Windows 編 -PHP 開発環境構築- Windows 編 -
PHP 開発環境構築 - Windows 編 -
 
Data API + AWS = (CMS どうでしょう 札幌編)
Data API + AWS =  (CMS どうでしょう 札幌編)Data API + AWS =  (CMS どうでしょう 札幌編)
Data API + AWS = (CMS どうでしょう 札幌編)
 
Web API(Dynamics 365 )勉強会
Web API(Dynamics 365 )勉強会Web API(Dynamics 365 )勉強会
Web API(Dynamics 365 )勉強会
 
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API   CMS どうでしょう - 仙台編 -初めての Data API   CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
 
RoRとAWSで100,000Req/Minを処理する
RoRとAWSで100,000Req/Minを処理するRoRとAWSで100,000Req/Minを処理する
RoRとAWSで100,000Req/Minを処理する
 
SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発SharePoint 2010 を使ったクラウドアプリ開発
SharePoint 2010 を使ったクラウドアプリ開発
 
勉強会資料①
勉強会資料①勉強会資料①
勉強会資料①
 
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
[BA06] 50 分で総まとめ! Office 365 開発プラットフォーム最新機能のおさらい
 
Latest Status of Identity Federation
Latest Status of Identity FederationLatest Status of Identity Federation
Latest Status of Identity Federation
 
Spring12新機能webinar
Spring12新機能webinarSpring12新機能webinar
Spring12新機能webinar
 
Graph api introduction_20130425
Graph api introduction_20130425Graph api introduction_20130425
Graph api introduction_20130425
 
120331 silverlight5新機能早めぐり
120331 silverlight5新機能早めぐり120331 silverlight5新機能早めぐり
120331 silverlight5新機能早めぐり
 
HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
Api gatewayの話
Api gatewayの話Api gatewayの話
Api gatewayの話
 
Web API を気軽に使える ツールやサービスのご紹介
Web API を気軽に使えるツールやサービスのご紹介Web API を気軽に使えるツールやサービスのご紹介
Web API を気軽に使える ツールやサービスのご紹介
 
Prd004 office 365_における_id_統合と
Prd004 office 365_における_id_統合とPrd004 office 365_における_id_統合と
Prd004 office 365_における_id_統合と
 
社内システムの構造と設計、実装のはなし(下書きバージョン)
社内システムの構造と設計、実装のはなし(下書きバージョン)社内システムの構造と設計、実装のはなし(下書きバージョン)
社内システムの構造と設計、実装のはなし(下書きバージョン)
 

Destacado

Lightning Connect で 外部データにリアルタイムにアクセス
Lightning Connect で外部データにリアルタイムにアクセスLightning Connect で外部データにリアルタイムにアクセス
Lightning Connect で 外部データにリアルタイムにアクセスSalesforce Developers Japan
 
アクセスプラン(実行計画)の読み方入門
アクセスプラン(実行計画)の読み方入門アクセスプラン(実行計画)の読み方入門
アクセスプラン(実行計画)の読み方入門Akira Shimosako
 
5分で分かる自己組織化マップ
5分で分かる自己組織化マップ5分で分かる自己組織化マップ
5分で分かる自己組織化マップDaisuke Takai
 
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門Hironori Sekine
 
Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafDevelopment and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafKenta Oono
 
Salesforce連携のためのOData入門
Salesforce連携のためのOData入門Salesforce連携のためのOData入門
Salesforce連携のためのOData入門Shunji Konishi
 
ODBC/JDBC/ADOで(も)つながる Saasの世界
ODBC/JDBC/ADOで(も)つながるSaasの世界ODBC/JDBC/ADOで(も)つながるSaasの世界
ODBC/JDBC/ADOで(も)つながる Saasの世界CData Software Japan
 
ODBC/JDBC/ADOでつながる kintoneの世界
ODBC/JDBC/ADOでつながるkintoneの世界ODBC/JDBC/ADOでつながるkintoneの世界
ODBC/JDBC/ADOでつながる kintoneの世界CData Software Japan
 
ADO.NETでつながるクラウドデータ連携
ADO.NETでつながるクラウドデータ連携ADO.NETでつながるクラウドデータ連携
ADO.NETでつながるクラウドデータ連携CData Software Japan
 
クラウド時代のデータ連携 ~ そして少し SharePoint 連携事例 ~
クラウド時代のデータ連携 ~ そして少し SharePoint 連携事例 ~クラウド時代のデータ連携 ~ そして少し SharePoint 連携事例 ~
クラウド時代のデータ連携 ~ そして少し SharePoint 連携事例 ~CData Software Japan
 
API活用で更に広がるDynamicsエコシステム
API活用で更に広がるDynamicsエコシステムAPI活用で更に広がるDynamicsエコシステム
API活用で更に広がるDynamicsエコシステムCData Software Japan
 
Proyecto de vida de sebastian
Proyecto de vida de sebastianProyecto de vida de sebastian
Proyecto de vida de sebastianSebastian Mendoza
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話Takuto Wada
 
20170317 クラウド時代のデータ連携 超高速開発コミュニティ
20170317 クラウド時代のデータ連携 超高速開発コミュニティ20170317 クラウド時代のデータ連携 超高速開発コミュニティ
20170317 クラウド時代のデータ連携 超高速開発コミュニティCData Software Japan
 

Destacado (15)

Lightning Connect で 外部データにリアルタイムにアクセス
Lightning Connect で外部データにリアルタイムにアクセスLightning Connect で外部データにリアルタイムにアクセス
Lightning Connect で 外部データにリアルタイムにアクセス
 
アクセスプラン(実行計画)の読み方入門
アクセスプラン(実行計画)の読み方入門アクセスプラン(実行計画)の読み方入門
アクセスプラン(実行計画)の読み方入門
 
5分で分かる自己組織化マップ
5分で分かる自己組織化マップ5分で分かる自己組織化マップ
5分で分かる自己組織化マップ
 
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
 
Development and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and mafDevelopment and Experiment of Deep Learning with Caffe and maf
Development and Experiment of Deep Learning with Caffe and maf
 
Salesforce連携のためのOData入門
Salesforce連携のためのOData入門Salesforce連携のためのOData入門
Salesforce連携のためのOData入門
 
JDBCでつながるSaasの世界
JDBCでつながるSaasの世界JDBCでつながるSaasの世界
JDBCでつながるSaasの世界
 
ODBC/JDBC/ADOで(も)つながる Saasの世界
ODBC/JDBC/ADOで(も)つながるSaasの世界ODBC/JDBC/ADOで(も)つながるSaasの世界
ODBC/JDBC/ADOで(も)つながる Saasの世界
 
ODBC/JDBC/ADOでつながる kintoneの世界
ODBC/JDBC/ADOでつながるkintoneの世界ODBC/JDBC/ADOでつながるkintoneの世界
ODBC/JDBC/ADOでつながる kintoneの世界
 
ADO.NETでつながるクラウドデータ連携
ADO.NETでつながるクラウドデータ連携ADO.NETでつながるクラウドデータ連携
ADO.NETでつながるクラウドデータ連携
 
クラウド時代のデータ連携 ~ そして少し SharePoint 連携事例 ~
クラウド時代のデータ連携 ~ そして少し SharePoint 連携事例 ~クラウド時代のデータ連携 ~ そして少し SharePoint 連携事例 ~
クラウド時代のデータ連携 ~ そして少し SharePoint 連携事例 ~
 
API活用で更に広がるDynamicsエコシステム
API活用で更に広がるDynamicsエコシステムAPI活用で更に広がるDynamicsエコシステム
API活用で更に広がるDynamicsエコシステム
 
Proyecto de vida de sebastian
Proyecto de vida de sebastianProyecto de vida de sebastian
Proyecto de vida de sebastian
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
 
20170317 クラウド時代のデータ連携 超高速開発コミュニティ
20170317 クラウド時代のデータ連携 超高速開発コミュニティ20170317 クラウド時代のデータ連携 超高速開発コミュニティ
20170317 クラウド時代のデータ連携 超高速開発コミュニティ
 

Similar a RESTful Webサービス

ネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいnpsg
 
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21Takakiyo Tanaka
 
Start SQL Server with Docker
Start SQL Server with DockerStart SQL Server with Docker
Start SQL Server with DockerOshitari_kochi
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywordsuupaa
 
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapyWebフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapyMasashi Shibata
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話JustSystems Corporation
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Etsuji Nakai
 
Firefox OS and Web server
Firefox OS and Web serverFirefox OS and Web server
Firefox OS and Web serverTomoaki Konno
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Masakazu Muraoka
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
Webrtc最新動向
Webrtc最新動向Webrtc最新動向
Webrtc最新動向Yusuke Naka
 
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...Insight Technology, Inc.
 
HTML5など社内勉強会 Vol.8 - WebSocket
HTML5など社内勉強会 Vol.8 - WebSocketHTML5など社内勉強会 Vol.8 - WebSocket
HTML5など社内勉強会 Vol.8 - WebSocketGeorge Harada
 

Similar a RESTful Webサービス (20)

Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
ネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらいネットワークプログラマビリティ勉強会 これまでのおさらい
ネットワークプログラマビリティ勉強会 これまでのおさらい
 
20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
 
Play ja 3_update
Play ja 3_updatePlay ja 3_update
Play ja 3_update
 
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
 
Start SQL Server with Docker
Start SQL Server with DockerStart SQL Server with Docker
Start SQL Server with Docker
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywords
 
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapyWebフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapy
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介
 
Firefox OS and Web server
Firefox OS and Web serverFirefox OS and Web server
Firefox OS and Web server
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
Webrtc最新動向
Webrtc最新動向Webrtc最新動向
Webrtc最新動向
 
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
[db tech showcase Tokyo 2015] C15:DevOps MySQL in カカクコム~ OSSによる可用性担保とリアルタイムパフ...
 
HTML5など社内勉強会 Vol.8 - WebSocket
HTML5など社内勉強会 Vol.8 - WebSocketHTML5など社内勉強会 Vol.8 - WebSocket
HTML5など社内勉強会 Vol.8 - WebSocket
 

Más de Kentaro Inomata

『アプリケーション アーキテクチャ ガイド2.0』のガイド
『アプリケーション アーキテクチャ ガイド2.0』のガイド『アプリケーション アーキテクチャ ガイド2.0』のガイド
『アプリケーション アーキテクチャ ガイド2.0』のガイドKentaro Inomata
 
Bash on ubuntu on windows
Bash on ubuntu on windowsBash on ubuntu on windows
Bash on ubuntu on windowsKentaro Inomata
 
Agile Software Development (In Japan)
Agile Software Development (In Japan)Agile Software Development (In Japan)
Agile Software Development (In Japan)Kentaro Inomata
 
富山合同勉強会2015 ジェネリクス談義 C#編 補足
富山合同勉強会2015 ジェネリクス談義 C#編 補足富山合同勉強会2015 ジェネリクス談義 C#編 補足
富山合同勉強会2015 ジェネリクス談義 C#編 補足Kentaro Inomata
 
富山合同勉強会2015 ジェネリクス談義 C#編
富山合同勉強会2015 ジェネリクス談義 C#編富山合同勉強会2015 ジェネリクス談義 C#編
富山合同勉強会2015 ジェネリクス談義 C#編Kentaro Inomata
 
UIデザインパターンをSilverlightでやってみた part1
UIデザインパターンをSilverlightでやってみた part1UIデザインパターンをSilverlightでやってみた part1
UIデザインパターンをSilverlightでやってみた part1Kentaro Inomata
 
.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談Kentaro Inomata
 
ASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみたASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみたKentaro Inomata
 
MacintoshでSilverlight開発
MacintoshでSilverlight開発MacintoshでSilverlight開発
MacintoshでSilverlight開発Kentaro Inomata
 
仮面ライダー勉強会LT06 響鬼についていろいろと
仮面ライダー勉強会LT06 響鬼についていろいろと仮面ライダー勉強会LT06 響鬼についていろいろと
仮面ライダー勉強会LT06 響鬼についていろいろとKentaro Inomata
 
18-D-5 MVP & .NET Community Members Lightning Talks
18-D-5 MVP & .NET Community Members Lightning Talks18-D-5 MVP & .NET Community Members Lightning Talks
18-D-5 MVP & .NET Community Members Lightning TalksKentaro Inomata
 
パズルをコンピュータに解かせる
パズルをコンピュータに解かせるパズルをコンピュータに解かせる
パズルをコンピュータに解かせるKentaro Inomata
 
GUIのアーキテクチャ
GUIのアーキテクチャGUIのアーキテクチャ
GUIのアーキテクチャKentaro Inomata
 
Silverlightと業務アプリ
Silverlightと業務アプリSilverlightと業務アプリ
Silverlightと業務アプリKentaro Inomata
 
コミュニティの壁を越える
コミュニティの壁を越えるコミュニティの壁を越える
コミュニティの壁を越えるKentaro Inomata
 
業務システムを使いやすく! .NET Webアプリケーションの現在
業務システムを使いやすく!.NET Webアプリケーションの現在業務システムを使いやすく!.NET Webアプリケーションの現在
業務システムを使いやすく! .NET Webアプリケーションの現在Kentaro Inomata
 
解題:私がJavaからCsharpに乗り換えた10の理由
解題:私がJavaからCsharpに乗り換えた10の理由解題:私がJavaからCsharpに乗り換えた10の理由
解題:私がJavaからCsharpに乗り換えた10の理由Kentaro Inomata
 

Más de Kentaro Inomata (20)

『アプリケーション アーキテクチャ ガイド2.0』のガイド
『アプリケーション アーキテクチャ ガイド2.0』のガイド『アプリケーション アーキテクチャ ガイド2.0』のガイド
『アプリケーション アーキテクチャ ガイド2.0』のガイド
 
Bash on ubuntu on windows
Bash on ubuntu on windowsBash on ubuntu on windows
Bash on ubuntu on windows
 
Agile Software Development (In Japan)
Agile Software Development (In Japan)Agile Software Development (In Japan)
Agile Software Development (In Japan)
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
富山合同勉強会2015 ジェネリクス談義 C#編 補足
富山合同勉強会2015 ジェネリクス談義 C#編 補足富山合同勉強会2015 ジェネリクス談義 C#編 補足
富山合同勉強会2015 ジェネリクス談義 C#編 補足
 
富山合同勉強会2015 ジェネリクス談義 C#編
富山合同勉強会2015 ジェネリクス談義 C#編富山合同勉強会2015 ジェネリクス談義 C#編
富山合同勉強会2015 ジェネリクス談義 C#編
 
UIデザインパターンをSilverlightでやってみた part1
UIデザインパターンをSilverlightでやってみた part1UIデザインパターンをSilverlightでやってみた part1
UIデザインパターンをSilverlightでやってみた part1
 
.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談.NETの業務向けOSSフレームワーク鼎談
.NETの業務向けOSSフレームワーク鼎談
 
Azureといえば
AzureといえばAzureといえば
Azureといえば
 
ASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみたASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみた
 
MacintoshでSilverlight開発
MacintoshでSilverlight開発MacintoshでSilverlight開発
MacintoshでSilverlight開発
 
仮面ライダー勉強会LT06 響鬼についていろいろと
仮面ライダー勉強会LT06 響鬼についていろいろと仮面ライダー勉強会LT06 響鬼についていろいろと
仮面ライダー勉強会LT06 響鬼についていろいろと
 
18-D-5 MVP & .NET Community Members Lightning Talks
18-D-5 MVP & .NET Community Members Lightning Talks18-D-5 MVP & .NET Community Members Lightning Talks
18-D-5 MVP & .NET Community Members Lightning Talks
 
パズルをコンピュータに解かせる
パズルをコンピュータに解かせるパズルをコンピュータに解かせる
パズルをコンピュータに解かせる
 
GUIのアーキテクチャ
GUIのアーキテクチャGUIのアーキテクチャ
GUIのアーキテクチャ
 
Silverlightと業務アプリ
Silverlightと業務アプリSilverlightと業務アプリ
Silverlightと業務アプリ
 
コミュニティの壁を越える
コミュニティの壁を越えるコミュニティの壁を越える
コミュニティの壁を越える
 
釣りの楽しみ
釣りの楽しみ釣りの楽しみ
釣りの楽しみ
 
業務システムを使いやすく! .NET Webアプリケーションの現在
業務システムを使いやすく!.NET Webアプリケーションの現在業務システムを使いやすく!.NET Webアプリケーションの現在
業務システムを使いやすく! .NET Webアプリケーションの現在
 
解題:私がJavaからCsharpに乗り換えた10の理由
解題:私がJavaからCsharpに乗り換えた10の理由解題:私がJavaからCsharpに乗り換えた10の理由
解題:私がJavaからCsharpに乗り換えた10の理由
 

Último

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Último (9)

Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

RESTful Webサービス

  • 1. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTFul Webサービス 猪股 健太郎 @matarillo
  • 2. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive アジェンダ • RESTの説明 – RESTとは – RESTの原則 – RESTful WebサービスとHTTP • .NETでの実装 – WCF – WCF REST Starter Kit – RestCake – ASP.NET MVC – OpenRasta
  • 3. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive 質問1 • この本のどちらかを持ってる人
  • 4. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive 質問2 • 以下のどれかを受講した人 Tech・Ed Japan 2009 T2-310 「WCF で実現する SOA、REST」 (MS 松崎さん) Tech・Ed Japan 2010 T6-312 「WCF 4 における新機能のポイント」 (アークウェイ 奥田さん・飯田さん) Tech・Ed Japan 2010 T4-303 「Open Data Protocol (Odata) と WCF Data Services によるサービスの作成」 (MS 井上さん)
  • 5. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive 第1部 RESTの説明
  • 6. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive REST • 2000年 • ロイ・フィールディングの博士論文 – なぜWebはこんなに普及したのか? – なぜWebは大規模でもうまく動くのか? – Webの設計原則とは? それを“REST”と呼ぶことにする。
  • 7. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive REST ○× • 設計原則 • アーキテクチャ スタイル • 通信プロトコルでは ない • 仕様ではない • 標準ではない
  • 8. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive 言葉の定義:Webサービス • 広い意味でのWebサービス – Webで提供されるサービス • 検索エンジン、Webメール、顧客管理SaaS • 中ぐらいの意味でのWebサービス – プログラムが呼び出すWeb API • Twitter API、Amazon Web サービス、Bing API • 狭い意味でのWebサービス – SOAPおよびWS-*を使ったインターフェース
  • 9. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive 言葉の定義:Webサービス • 広い意味でのWebサービス – Webで提供されるサービス • 検索エンジン、Webメール、顧客管理SaaS • 中ぐらいの意味でのWebサービス – プログラムが呼び出すWeb API • Twitter API、Amazon Web サービス、Bing API • 狭い意味でのWebサービス – SOAPおよびWS-*を使ったインターフェース 今日はこの意味です。
  • 10. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive 今日の言葉の定義 • RESTful Webサービスとは REST アーキテクチャスタイルを 採用しているWebサービスのこと。 – 「RESTっぽいWebサービス」 – 「REST」という言葉の使われ方は 「オブジェクト指向」という言葉の 使われ方にも似ている。 – RESTを構成する原則は複数ある。
  • 11. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則 • RESTアーキテクチャスタイルの原則を 大きく2つに分類する – 分散システムとしての構造の原則 • クライアント・サーバー型の発展形 – 分散システムが扱う情報の原則 • リソース • HATEOAS
  • 12. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(構造編) • クライアント・サーバー クライアント サーバー
  • 13. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(構造編) • クライアント・サーバー&ステートレス クライアント ステートレスサーバー
  • 14. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(構造編) • クライアント・サーバー&ステートレス &キャッシュ クライアント ステートレスサーバー
  • 15. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(構造編) • クライアント・サーバー&ステートレス &キャッシュ&統一インターフェース クライアント ステートレスサーバー
  • 16. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(構造編) • クライアント・サーバー&ステートレス &キャッシュ&統一インターフェース &階層化システム クライアント ステートレスサーバー
  • 17. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(構造編) • クライアント・サーバー&ステートレス &キャッシュ&統一インターフェース &階層化システム &コード・オン・デマンド(任意) クライアント ステートレスサーバー
  • 18. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(情報編) • リソースとは? – 名前がつけられる情報すべて – 名前がつけられる=他と区別できる – 抽象的
  • 19. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(情報編) • リソース 「東京の今日の天気」 「わんくま同盟のメンバリスト」 「藍澤光の壁紙(WP7用)」
  • 20. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(情報編) • リソース&アドレス 「東京の今日の天気」 http://weather.yahoo.co.jp/weather/jp/13/4410.html 「わんくま同盟のメンバリスト」 http://www.wankuma.com/member/ 「藍澤光の壁紙(WP7用)」 http://www.microsoft.com/taiwan/silverlight/images/480X800_f.jpg
  • 21. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(情報編) • リソース&アドレス&表現 「東京の今日の天気」 http://weather.yahoo.co.jp/weather/jp/13/4410.html html 「わんくま同盟のメンバリスト」 http://www.wankuma.com/member/ html 「藍澤光の壁紙(WP7用)」 http://www.microsoft.com/taiwan/silverlight/images/480X800_f.jpg jpeg
  • 22. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(情報編) • リソース&アドレス&表現&メタデータ 「東京の今日の天気」 http://weather.yahoo.co.jp/weather/jp/13/4410.html html ピンポイント天気へのリンクなど 「わんくま同盟のメンバリスト」 http://www.wankuma.com/member/ html 「藍澤光の壁紙(WP7用)」 http://www.microsoft.com/taiwan/silverlight/images/480X800_f.jpg jpeg 最終更新日時:10/08/2010 18:31:46
  • 23. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTの原則(情報編) • HATEOAS – Hypermedia as the Engine of Application State – アプリケーションの状態を表現する 機構としてハイパーメディアを使う – アプリケーションの状態遷移に ハイパーリンクを活用する • 商品一覧のXMLに「次の100件」へのリンクをいれ ておく
  • 24. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive ここまでのまとめ • RESTはWebの設計原則を分析したもの • RESTはアーキテクチャスタイル • 大きく2つに分類できる – 分散システムとしての構造の原則 • クライアント・サーバー型の発展形 – 分散システムが扱う情報の原則 • リソース • HATEOAS
  • 25. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTという単語 • Representational State Transfer – リソースの現在の状態を – 表現したものを – 転送する 「Webで使われるプロトコルは HTTP (HyperText Transfer Protocol) だけど、これって ハイパーテキスト以外にも 便利に使えるよね?」
  • 26. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTとHTTP 抽象概念 具体的な例 REST Web リソース ハイパー メディア アドレス URI 統一 インターフェース HTTP
  • 27. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTful Webサービス 抽象概念 具体的な例 REST Webサービス リソース (リソース) アドレス URI 統一 インターフェース HTTP
  • 28. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive 統一インターフェースとしてのHTTP • HTTPとは – リソースのアドレスをURLで – リソースのメタデータをHTTPヘッダで – リソースの表現をHTTPボディで – リソースに対する操作をHTTPメソッドで • 表すプロトコル
  • 29. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive HTTPの4大メソッド • GET – リソースの表現を取得する • POST – 既存のリソースに関連する何かを追加する – 既存のリソースにデータを渡して何かをする • DELETE – 既存のリソースを削除する • PUT – URLを指定して新しいリソースを作成する – 既存のリソースを変更する
  • 30. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive HTTPのベストプラクティス • GET/DELETE/PUTを「べき等」にする • 可能な限り標準のメソッドを使う • POSTメソッドを濫用しない – HTTPボディにリソースのアドレスを含めない – HTTPボディにリソースの操作を含めない
  • 31. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTではないもの • RPCスタイルのアーキテクチャ – HTTPボディにリソースのアドレスを含める – HTTPボディにリソースの操作を含める – 結果的に、POSTばかりを使う <?xml version="1.0"?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>40</i4></value> </param> </params> </methodCall>
  • 32. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RPCスタイルは「間違っている」か? • そうとは言えない • RPCスタイルのほうが向いている 処理もある • ただ、RESTの方が Webの利点を享受できる – 普及性やスケーラビリティ
  • 33. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTful Webサービスの設計 1. サービスが扱うデータ集合を特定する 2. データ集合をリソースに分ける 3. リソースにURIをつける 4. リソースに対する操作を決める 5. 送受信する表現を決める 6. リソース間のリンクを設計する 7. リソースの状態遷移を検討する 8. エラーを検討する
  • 34. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTful Webサービスのベストプラクティス • コレクションリソース – http://edtter.com/chack/status • GET……リソース一覧の取得 (R) • POST……新規リソースの追加 (C) – 作成されたリソースのURIをレスポンスに含める • 個別リソース – http://edtter.com/chack/status/123456 • GET……個別リソースの取得 (R) • PUT……個別リソースの更新 (U) • DELETE……個別リソースの削除 (D)
  • 35. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RESTful Webサービスのベストプラクティス • Atom出版プロトコル (AtomPub) – IETFが標準化 → RFC 5023 – Web リソースを出版・編集する • コレクション: 全体的に、あるいは部分的に検索さ れ得るリソースの集合 • サービス: コレクションの発見と記述 • 編集: リソースの生成、編集、削除 – リソース一覧のページングにも対応
  • 36. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive 第2部 .NETでの実装
  • 37. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive WCF REST • .NET Framweork 3.5以降 • WebServiceHostFactoryクラス • WCFの面倒なconfigが不要 • クライアントの「サービス参照」不可 <%@ ServiceHost Language="C#" Debug="true" Service="WcfRestService1.Service1" CodeBehind="Service1.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %> Service1.svc
  • 38. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive WCF REST • HTTP GETは[WebGet]カスタム属性、 それ以外は[WebInvoke]カスタム属性 • リクエストやレスポンスは POX / JSON / バイトストリームの三択 • HttpContextの代わりに WebOperationContext – “201 Created”と“404 Not Found”には ショートカットあり
  • 39. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive WCF REST • Visual Studio ギャラリーから テンプレートを ダウンロード可能 (VS2010用)
  • 40. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive WCF RESTのgood/bad • いい点 – わりと自由にできる • つらい点 – カスタムシリアライズ – HATEOAS – URLに「○○.svc」が含まれる • .NET4からはルーティングと統合できる – クライアントの実装 – 実はWCF
  • 41. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive WCF REST Starter Kit • WCF REST Starter Kit – http://aspnet.codeplex.com/wikipage?title=WCF %20REST – Preview 2 (2009/3/10) はVS2008 SP1用 – サーバ側 • POX、単一要素、コレクション、 Atom Feed、AtomPub – クライアント側 • HttpClient
  • 42. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive WCF REST Starter Kitのgood/bad • いい点 – 型にはまった実装は楽 • CRUDとHTTPメソッドのマッピングとか • POX/JSON対応サービスとか • ヘルプページとか • 例外処理とか – HttpClientが手軽 – OSS • つらい点 – 自由がきかない – VS2010未サポート (Preview2)
  • 43. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive RestCake • RestCake – http://rest.codeplex.com/ – http://restcake.net/Overview.aspx • いい点 – WCFじゃない – でも似たような感じで作れる – 罠が少ない • JSONとか、匿名型とか、循環参照とか…… – OSS • つらい点 – 自己責任
  • 44. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive ASP.NET MVC • ASP.NET MVCをWebサービスに使う – Viewが「リソースの表現」になるだけ。 • いい点 – リソース表現が自由 – WCFじゃない – OSS – 赤シャツ印 • つらい点 – GET/POST/PUT/DELETE/HEADだけ対応 – 細かい道具がそろってない
  • 45. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive OpenRasta • OpenRasta – http://openrasta.com/ – RESTful Webアプリケーション/Webサービス – http://live.visitmix.com/MIX10/Sessions/EX19 • いい点 – ASP.NET MVCに近い形で、より強力にRESTをサポート – .NET Framework 2.0以降で動作 – リソース表現が自由 – 属性いらない • つらい点 – ??? REST Architecture Solution Targeting Asp.net
  • 46. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive 質疑応答タイム
  • 47. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive 補足:トランザクションの実現 • http://developer.cybozu.co.jp/kazuho/2010/04/rest- re-web-a6d.html – トランザクションの開始は POST を使ったトランザク ションリソースの生成 – トランザクション開始後は POST ではなく PUT を使い、 クライアントがリクエスト ID を指定することで、 ネットワーク障害への耐性を確保 – トランザクションのコミットも再送可能じゃないと 困るので PUT – コミットの返り値を確認してからトランザクション リソースを DELETE
  • 48. わんくま同盟 東京勉強会 #52 Wankuma Developer Deep Dive 参考情報 • REST in Windows Communication Foundation (WCF) – http://msdn.microsoft.com/wcf/rest • A Guide to Designing and Building RESTful Web Services with WCF 3.5 – http://msdn.microsoft.com/en- us/library/dd203052.aspx