C++ REST SDKを使ってWebサービスを利用する

3,009
-1

Published on

わんくま同盟 名古屋勉強会 #29での発表資料
http://www.wankuma.com/seminar/20131123nagoya29/

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,009
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
7
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

C++ REST SDKを使ってWebサービスを利用する

  1. 1. C++ REST SDKを使ってWebサービスを利用する 2013/11/23 You&I わんくま同盟 名古屋勉強会 #29
  2. 2. ジコ、ショウカイ。 • • • • • • • H/N: SNS: 出身: 年齢: 本職: 言語: 所属: You&I(読み:ユーアンドアイ) @you_and_i 生まれも育ちも名古屋市 30代中盤 商学部出身の職業プログラマ C++, C#, VB6.0, 日本語COBOL プログラミング生放送 名古屋支部 名古屋アジャイル勉強会 わんくま同盟 名古屋勉強会 わんくま同盟 名古屋勉強会 #29 2
  3. 3. AGENDA 1. 2. 3. 4. はじめに C++ REST SDKについて デモ まとめ わんくま同盟 名古屋勉強会 #29
  4. 4. C++ REST SDKを使ってWebサービスを利用する 1. はじめに わんくま同盟 名古屋勉強会 #29
  5. 5. はじめに(1/7) • RESTとは – Representational State Transferの略称。 – 2000年にカリフォルニア大学 Irvine校のRoy Fielding氏が提唱した、分散システムにおいて 複数のソフトウェアを連携させるのに適した 設計原則の集合。また狭義には、それをWeb に適用したソフトウェアの設計様式のこと。 一般には後者の意味で用いられることがほと んどである。 IT用語辞典 e-Wordsより http://e-words.jp/w/REST.html わんくま同盟 名古屋勉強会 #29
  6. 6. はじめに(2/7) • RESTの設計原則 1. セッションなどの状態管理を行わない • HTTP自体にはセッション管理の機構はない 2. 情報を操作する命令の体系が予め定義・共有さ れている • HTTPのGETやPOSTなどに相当 3. すべての情報は汎用的な構文で一意に識別され る • URLやURIに相当 4. 情報の内部に、別の情報や(その情報の別の)状 態へのリンクを含めることができる • HTMLやXMLに相当 わんくま同盟 名古屋勉強会 #29
  7. 7. はじめに(3/7) • RESTful – 先程説明した狭義のRESTとして、HTTP経由 でパラメータを指定して特定のURLにアクセ スすると、XML形式やJSON形式などで記述さ れたメッセージが送信されるシステム及びAPI を、RESTful WebサービスやRESTful APIと呼 びます。 – 但し、RESTの設計4原則を必ず満たしている とか、厳密な技術的定義が有る訳ではなく、 SOAP/RPCを必要としない単純なWebイン ターフェースの意味合いが強い。 わんくま同盟 名古屋勉強会 #29
  8. 8. はじめに(4/7) • C++言語とHTTP規格 (1/4) – ここまで説明してきたRESTは、Webアプリ ケーション/サービスの為の設計様式でした。 – RESTの基盤となるのはHTTP規格。大雑把に 説明すると、TCP/IPをプロトコルとしてWeb サーバーとWebブラウザのクライアント/サー バー方式による要求・応答のハンドシェイク を行う仕組みです。 わんくま同盟 名古屋勉強会 #29
  9. 9. はじめに(5/7) • C++言語とHTTP規格 (2/4) – C++でRESTfulなプログラムを書こうと思っ た場合、 C#やJava, Ruby, Pythonといった最 近よく使われる開発言語とは異なり、C++だ けではHTTPを扱えないとう問題があります。 – まずC++言語の規格には、HTTPはもとよりそ の基盤となるTCP/IPを行う為のsocket通信 APIについても含まれていません。 わんくま同盟 名古屋勉強会 #29
  10. 10. はじめに(6/7) • C++言語とHTTP規格 (3/4) – C++でTCP/IPを話せるようにするには、プ ラットフォーム毎に提供されているソケット 通信APIを使ってHTTP通信処理を実装する必 要があります。 • Linux, FreeBSD環境 – BSD Socket API • Windows環境 – WinSock API, WinHTTP API, WinINet API • Mac OS X環境 – Cocoa API, Core Foundation API わんくま同盟 名古屋勉強会 #29
  11. 11. はじめに(7/7) • C++言語とHTTP規格 (4/4) – API毎に実装方法が異なるのと、毎度毎度 HTTPを一部又はフルスタックで実装して車輪 の再発明するのは、不具合も起こりやすく無 駄な事なので、通常は共通ライブラリを使う 事になります。 • Boost. Asio - socket通信実装 – http://www.boost.org/doc/libs/release/doc/html/boos t_asio.html • cpp-netlib - HTTP実装 – http://cpp-netlib.org/ わんくま同盟 名古屋勉強会 #29
  12. 12. C++ REST SDKを使ってWebサービスを利用する 2. C++ REST SDKについて わんくま同盟 名古屋勉強会 #29
  13. 13. C++ REST SDKについて(1/7) • C++ REST SDK – 公式サイト – http://casablanca.codeplex.com – http://msdn.microsoft.com/library/jj969455. aspx • ネイティブなC++からRESTサービスにア クセスする事が出来るライブラリ。 • 公式サイトから提供されるインストーラー を使って導入する。(Windows向け) わんくま同盟 名古屋勉強会 #29
  14. 14. C++ REST SDKについて(2/7) • C++ REST SDKは、コードネーム Casablancaとして2012年4月にMicrosoft によって開発が始められたC++ライブラリ。 – http://blogs.msdn.com/b/vcblog/archive/20 12/04/30/10299181.aspx • 2013年2月末にOSS(Apache ライセンス Version 2.0)として公開されました。 – http://blogs.msdn.com/b/vcblog/archive/20 13/02/26/the-c-rest-sdk-quot-casablancaquot.aspx わんくま同盟 名古屋勉強会 #29
  15. 15. C++ REST SDKについて(3/7) • C++ REST SDKで提供されるもの(1/2) 1. HTTP, JSON, URIのC++実装による Windows Vista, 7, 8環境でのRESTサービス への接続。 2. WindowsストアアプリでのC++によるHTTP クライアント側コード記述を補助する VisualStudio向けSDK。 3. VisualStudioでの統合環境を含めたAzure向 けのネイティブなRESTの記述を補助する。 わんくま同盟 名古屋勉強会 #29
  16. 16. C++ REST SDKについて(4/7) • C++ REST SDKで提供されるもの(2/2) 4. PaaS機能の入り口として、Azure blob/queue ストレージに接続する使いやす いライブラリ。 5. C++11を基盤とした非同期操作を構成する パワフル且つ統一されたモデル。 • Parallel Patterns Library を利用 6. Erlangにインスパイアされたアクターモデル プログラミングのC++実装。 • Asynchronous Agents Library は未使用 わんくま同盟 名古屋勉強会 #29
  17. 17. C++ REST SDKについて(5/7) • C++ REST SDKの機能 1. HTTPクライアントを通じてサーバーに接続、 リクエスト送信、レスポンス処理。 2. URIの構築・使用 3. JSONの構築・解析・シリアライズ 4. ストリームやストリームバッファを媒介とし た、非同期のバイトデータ処理。 5. プラットフォーム非依存の文字列 6. タスクによるプログラミング ※XMLパーサーなどは含まれない わんくま同盟 名古屋勉強会 #29
  18. 18. C++ REST SDKについて(6/7) • C++ REST SDKの実行環境 – – – – Microsoft Windows Vista以降 Microsoft Windows 8ストアアプリ Linux 実験的サポート • Microsoft Windows XP • Microsoft Windows Phone 8 わんくま同盟 名古屋勉強会 #29
  19. 19. C++ REST SDKについて(7/7) • C++ REST SDKの開発環境 – Microsoft VisualStudio 2010 SP1以降 • VS2010 SP1以降が必要な理由は、C++ REST SDK がPPL(Parallel Patterns Library)を使っている為。 – Microsoft VisualStudio 2012 – Microsoft VisualStudio 2013 – Linux環境の場合はBoost C++ Libraryも必要。 C++11の型推論のautoが使える環境は必須。 わんくま同盟 名古屋勉強会 #29
  20. 20. C++ REST SDKを使ってWebサービスを利用する 3. デモ わんくま同盟 名古屋勉強会 #29
  21. 21. 3. デモ(1/2) • MSDNマガジン August 2013で紹介されて いるC++ REST SDKの記事では、OAuth を使ったサンプルコードになっています。 – C++ の開発者に RESTful サービスを – http://msdn.microsoft.com/jajp/magazine/dn342869.aspx • このサンプルは自前でOAuth処理を実装し ているもので、ちょっと複雑です。今回は もっと単純にURIにアクセスして結果を取 得するものでデモしたいと思います。 わんくま同盟 名古屋勉強会 #29
  22. 22. 3. デモ(2/2) • 今回RESTfulサービスとして、リクルート WEBサービスが提供するホットペッパー のAPIを使って懇親会会場を探してみます。 – リクルートWEBサービス > ホットペッパー – http://webservice.recruit.co.jp/hotpepper/ • リクルートWEBサービスを利用するには 最初に[新規登録]のリンクからE-Mailアド レスを入力して、APIキーを取得する必要 があります。 わんくま同盟 名古屋勉強会 #29
  23. 23. C++ REST SDKを使ってWebサービスを利用する 4. まとめ わんくま同盟 名古屋勉強会 #29
  24. 24. 4. まとめ(1/2) • 今回C++ REST SDKを使ってみてちょっ とビックリしたのが、PPL(Parallel Patterns Library)やActor-Based Programming Modelの部分でした。 • 但しこれらは.NET Framework 4.5からサ ポートされたAsync/Awaitによる非同期プ ログラミングと似た考え方なので、文法や 動作などを理解できれば、コードはスッキ リしていると分かりました。 わんくま同盟 名古屋勉強会 #29
  25. 25. 4. まとめ(2/2) • 逆を言えば、PPL(Parallel Patterns Library)を使った実装サンプルとして、こ のC++ REST SDKはとても参考になると 言えます。 • C++使わずに素直に他の言語で実装した ら良いのでは?という突っ込みはさておき、 C++でも簡単にHTTP通信が行えるように なるこのライブラリは便利ですね。 わんくま同盟 名古屋勉強会 #29
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×