SlideShare a Scribd company logo
C++ REST SDKを使ってWebサービスを利用する

2013/11/23
You&I

わんくま同盟 名古屋勉強会 #29
ジコ、ショウカイ。

•
•
•
•
•
•
•

H/N:
SNS:
出身:
年齢:
本職:
言語:
所属:

You&I(読み:ユーアンドアイ)
@you_and_i
生まれも育ちも名古屋市
30代中盤
商学部出身の職業プログラマ
C++, C#, VB6.0, 日本語COBOL
プログラミング生放送 名古屋支部
名古屋アジャイル勉強会
わんくま同盟 名古屋勉強会
わんくま同盟 名古屋勉強会 #29
2
AGENDA

1.
2.
3.
4.

はじめに
C++ REST SDKについて
デモ
まとめ

わんくま同盟 名古屋勉強会 #29
C++ REST SDKを使ってWebサービスを利用する

1. はじめに

わんくま同盟 名古屋勉強会 #29
はじめに(1/7)

• RESTとは
– Representational State Transferの略称。
– 2000年にカリフォルニア大学 Irvine校のRoy
Fielding氏が提唱した、分散システムにおいて
複数のソフトウェアを連携させるのに適した
設計原則の集合。また狭義には、それをWeb
に適用したソフトウェアの設計様式のこと。
一般には後者の意味で用いられることがほと
んどである。
IT用語辞典 e-Wordsより
http://e-words.jp/w/REST.html

わんくま同盟 名古屋勉強会 #29
はじめに(2/7)

• RESTの設計原則
1. セッションなどの状態管理を行わない
• HTTP自体にはセッション管理の機構はない

2. 情報を操作する命令の体系が予め定義・共有さ
れている
• HTTPのGETやPOSTなどに相当

3. すべての情報は汎用的な構文で一意に識別され
る
• URLやURIに相当

4. 情報の内部に、別の情報や(その情報の別の)状
態へのリンクを含めることができる
• HTMLやXMLに相当

わんくま同盟 名古屋勉強会 #29
はじめに(3/7)

• RESTful
– 先程説明した狭義のRESTとして、HTTP経由
でパラメータを指定して特定のURLにアクセ
スすると、XML形式やJSON形式などで記述さ
れたメッセージが送信されるシステム及びAPI
を、RESTful WebサービスやRESTful APIと呼
びます。
– 但し、RESTの設計4原則を必ず満たしている
とか、厳密な技術的定義が有る訳ではなく、
SOAP/RPCを必要としない単純なWebイン
ターフェースの意味合いが強い。
わんくま同盟 名古屋勉強会 #29
はじめに(4/7)

• C++言語とHTTP規格 (1/4)
– ここまで説明してきたRESTは、Webアプリ
ケーション/サービスの為の設計様式でした。
– RESTの基盤となるのはHTTP規格。大雑把に
説明すると、TCP/IPをプロトコルとしてWeb
サーバーとWebブラウザのクライアント/サー
バー方式による要求・応答のハンドシェイク
を行う仕組みです。

わんくま同盟 名古屋勉強会 #29
はじめに(5/7)

• C++言語とHTTP規格 (2/4)
– C++でRESTfulなプログラムを書こうと思っ
た場合、 C#やJava, Ruby, Pythonといった最
近よく使われる開発言語とは異なり、C++だ
けではHTTPを扱えないとう問題があります。
– まずC++言語の規格には、HTTPはもとよりそ
の基盤となるTCP/IPを行う為のsocket通信
APIについても含まれていません。

わんくま同盟 名古屋勉強会 #29
はじめに(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
はじめに(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
C++ REST SDKを使ってWebサービスを利用する

2. C++ REST SDKについて

わんくま同盟 名古屋勉強会 #29
C++ REST SDKについて(1/7)

• C++ REST SDK
– 公式サイト
– http://casablanca.codeplex.com
– http://msdn.microsoft.com/library/jj969455.
aspx

• ネイティブなC++からRESTサービスにア
クセスする事が出来るライブラリ。
• 公式サイトから提供されるインストーラー
を使って導入する。(Windows向け)
わんくま同盟 名古屋勉強会 #29
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
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
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
C++ REST SDKについて(5/7)

• C++ REST SDKの機能
1. HTTPクライアントを通じてサーバーに接続、
リクエスト送信、レスポンス処理。
2. URIの構築・使用
3. JSONの構築・解析・シリアライズ
4. ストリームやストリームバッファを媒介とし
た、非同期のバイトデータ処理。
5. プラットフォーム非依存の文字列
6. タスクによるプログラミング
※XMLパーサーなどは含まれない
わんくま同盟 名古屋勉強会 #29
C++ REST SDKについて(6/7)

• C++ REST SDKの実行環境
–
–
–
–

Microsoft Windows Vista以降
Microsoft Windows 8ストアアプリ
Linux
実験的サポート
• Microsoft Windows XP
• Microsoft Windows Phone 8

わんくま同盟 名古屋勉強会 #29
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
C++ REST SDKを使ってWebサービスを利用する

3. デモ

わんくま同盟 名古屋勉強会 #29
3. デモ(1/2)

• MSDNマガジン August 2013で紹介されて
いるC++ REST SDKの記事では、OAuth
を使ったサンプルコードになっています。
– C++ の開発者に RESTful サービスを
– http://msdn.microsoft.com/jajp/magazine/dn342869.aspx

• このサンプルは自前でOAuth処理を実装し
ているもので、ちょっと複雑です。今回は
もっと単純にURIにアクセスして結果を取
得するものでデモしたいと思います。
わんくま同盟 名古屋勉強会 #29
3. デモ(2/2)

• 今回RESTfulサービスとして、リクルート
WEBサービスが提供するホットペッパー
のAPIを使って懇親会会場を探してみます。
– リクルートWEBサービス > ホットペッパー
– http://webservice.recruit.co.jp/hotpepper/

• リクルートWEBサービスを利用するには
最初に[新規登録]のリンクからE-Mailアド
レスを入力して、APIキーを取得する必要
があります。
わんくま同盟 名古屋勉強会 #29
C++ REST SDKを使ってWebサービスを利用する

4. まとめ

わんくま同盟 名古屋勉強会 #29
4. まとめ(1/2)

• 今回C++ REST SDKを使ってみてちょっ
とビックリしたのが、PPL(Parallel
Patterns Library)やActor-Based
Programming Modelの部分でした。
• 但しこれらは.NET Framework 4.5からサ
ポートされたAsync/Awaitによる非同期プ
ログラミングと似た考え方なので、文法や
動作などを理解できれば、コードはスッキ
リしていると分かりました。
わんくま同盟 名古屋勉強会 #29
4. まとめ(2/2)

• 逆を言えば、PPL(Parallel Patterns
Library)を使った実装サンプルとして、こ
のC++ REST SDKはとても参考になると
言えます。
• C++使わずに素直に他の言語で実装した
ら良いのでは?という突っ込みはさておき、
C++でも簡単にHTTP通信が行えるように
なるこのライブラリは便利ですね。

わんくま同盟 名古屋勉強会 #29

More Related Content

What's hot (20)

PDF
Constexprとtemplateでコンパイル時にfizz buzz
京大 マイコンクラブ
 
PDF
まじめに!できる!LT
Akabane Hiroyuki
 
PPTX
Docker超入門
VirtualTech Japan Inc.
 
PDF
Linux女子部 systemd徹底入門
Etsuji Nakai
 
PDF
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
VirtualTech Japan Inc.
 
PPTX
冬のLock free祭り safe
Kumazaki Hiroki
 
PDF
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
 
PPTX
入門!Jenkins
Shuntaro Saiba
 
PDF
LXC入門 - Osc2011 nagoya
Masahide Yamamoto
 
PDF
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
whywaita
 
PDF
#ljstudy KVM勉強会
Etsuji Nakai
 
KEY
やはりお前らのMVCは間違っている
Koichi Tanaka
 
PDF
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Akihiro Suda
 
PPTX
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
 
PDF
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
Yahoo!デベロッパーネットワーク
 
PDF
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
PDF
実環境にTerraform導入したら驚いた
Akihiro Kuwano
 
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
PDF
AbemaTVの動画配信を支えるサーバーサイドシステム
yuichiro nakazawa
 
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
 
Constexprとtemplateでコンパイル時にfizz buzz
京大 マイコンクラブ
 
まじめに!できる!LT
Akabane Hiroyuki
 
Docker超入門
VirtualTech Japan Inc.
 
Linux女子部 systemd徹底入門
Etsuji Nakai
 
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
VirtualTech Japan Inc.
 
冬のLock free祭り safe
Kumazaki Hiroki
 
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
 
入門!Jenkins
Shuntaro Saiba
 
LXC入門 - Osc2011 nagoya
Masahide Yamamoto
 
CyberAgentのプライベートクラウド Cycloudの運用及びモニタリングについて #CODT2020 / Administration and M...
whywaita
 
#ljstudy KVM勉強会
Etsuji Nakai
 
やはりお前らのMVCは間違っている
Koichi Tanaka
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Akihiro Suda
 
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
Yahoo!デベロッパーネットワーク
 
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
実環境にTerraform導入したら驚いた
Akihiro Kuwano
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
AbemaTVの動画配信を支えるサーバーサイドシステム
yuichiro nakazawa
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
NTT DATA Technology & Innovation
 

Viewers also liked (10)

PDF
Casablanca
egtra
 
PPTX
ニコニコ動画コメント等データ仕様
Masahiro Hamasaki
 
PDF
TreeFrog Frameworkの紹介
ao27
 
PPTX
ニコニコ動画のコメント解析
Keisuke Ogaki
 
PDF
最近遊んだ Wii Uの 3つのソフトの感想
teapipin
 
PDF
プロダクトマネジメント入門
You&I
 
PDF
HTTP/2の課題と将来
Kazuho Oku
 
PDF
REST API のコツ
pospome
 
PDF
Rest ful api設計入門
Monstar Lab Inc.
 
PDF
Reorganizing Website Architecture for HTTP/2 and Beyond
Kazuho Oku
 
Casablanca
egtra
 
ニコニコ動画コメント等データ仕様
Masahiro Hamasaki
 
TreeFrog Frameworkの紹介
ao27
 
ニコニコ動画のコメント解析
Keisuke Ogaki
 
最近遊んだ Wii Uの 3つのソフトの感想
teapipin
 
プロダクトマネジメント入門
You&I
 
HTTP/2の課題と将来
Kazuho Oku
 
REST API のコツ
pospome
 
Rest ful api設計入門
Monstar Lab Inc.
 
Reorganizing Website Architecture for HTTP/2 and Beyond
Kazuho Oku
 
Ad

Similar to C++ REST SDKを使ってWebサービスを利用する (20)

PDF
RESTfulとは
星影 月夜
 
PDF
RESTful Webサービス
Kentaro Inomata
 
PPT
REST 入門
Yohei Yamamoto
 
PDF
ネットワークAPI のあれこれ (ENOG37)
Kentaro Ebisawa
 
PDF
RESTful Meetup vol.3 Introduction
Toru Kawamura
 
PPTX
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
洵貴 佐川
 
PDF
WebAPIのこれまでとこれから
Yohei Yamamoto
 
PDF
BPStudy20121221
Shinichiro Takezaki
 
PPTX
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
QlikPresalesJapan
 
PDF
Restful Web Service Ch2
kunit
 
PDF
RESTful #とは RailsスタイルからRESTを学ぼう
Toru Kawamura
 
PDF
私たちは何を Web っぽいと感じているのか
Kenta Yamamoto
 
PDF
CloudSpiral 2014年度 Webアプリ講義(1日目)
Shin Matsumoto
 
PPT
OSC2008 Tokyo/Spring REST勉強夜会
Siena. N
 
PDF
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
Midori Oge
 
PPT
丸山先生レクチャーシリーズ2007-2008
Yoichiro Tanaka
 
PDF
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Toru Kawamura
 
PPTX
エンジニアのための勉強会 #3 『RESTful API』
Naoki Yoshitake
 
PDF
20080327 ku-librarians勉強会 #98:データベースからデータだけをいただく方法(web api入門)
kulibrarians
 
PDF
Beginning Java EE 6 勉強会(7) #bje_study
ikeyat
 
RESTfulとは
星影 月夜
 
RESTful Webサービス
Kentaro Inomata
 
REST 入門
Yohei Yamamoto
 
ネットワークAPI のあれこれ (ENOG37)
Kentaro Ebisawa
 
RESTful Meetup vol.3 Introduction
Toru Kawamura
 
REST API、gRPC、GraphQL 触ってみた【2023年12月開催勉強会資料】
洵貴 佐川
 
WebAPIのこれまでとこれから
Yohei Yamamoto
 
BPStudy20121221
Shinichiro Takezaki
 
Talend StudioでAPIを開発 - SOAP/RESTのサービス開発手法
QlikPresalesJapan
 
Restful Web Service Ch2
kunit
 
RESTful #とは RailsスタイルからRESTを学ぼう
Toru Kawamura
 
私たちは何を Web っぽいと感じているのか
Kenta Yamamoto
 
CloudSpiral 2014年度 Webアプリ講義(1日目)
Shin Matsumoto
 
OSC2008 Tokyo/Spring REST勉強夜会
Siena. N
 
NTTコミュニケーションズ Cloudn勉強会資料 SDKでAPIをたたいてみよう
Midori Oge
 
丸山先生レクチャーシリーズ2007-2008
Yoichiro Tanaka
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Toru Kawamura
 
エンジニアのための勉強会 #3 『RESTful API』
Naoki Yoshitake
 
20080327 ku-librarians勉強会 #98:データベースからデータだけをいただく方法(web api入門)
kulibrarians
 
Beginning Java EE 6 勉強会(7) #bje_study
ikeyat
 
Ad

Recently uploaded (9)

PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
 
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
 
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
 
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
 
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
 
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
 

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

  • 2. ジコ、ショウカイ。 • • • • • • • H/N: SNS: 出身: 年齢: 本職: 言語: 所属: You&I(読み:ユーアンドアイ) @you_and_i 生まれも育ちも名古屋市 30代中盤 商学部出身の職業プログラマ C++, C#, VB6.0, 日本語COBOL プログラミング生放送 名古屋支部 名古屋アジャイル勉強会 わんくま同盟 名古屋勉強会 わんくま同盟 名古屋勉強会 #29 2
  • 4. C++ REST SDKを使ってWebサービスを利用する 1. はじめに わんくま同盟 名古屋勉強会 #29
  • 5. はじめに(1/7) • RESTとは – Representational State Transferの略称。 – 2000年にカリフォルニア大学 Irvine校のRoy Fielding氏が提唱した、分散システムにおいて 複数のソフトウェアを連携させるのに適した 設計原則の集合。また狭義には、それをWeb に適用したソフトウェアの設計様式のこと。 一般には後者の意味で用いられることがほと んどである。 IT用語辞典 e-Wordsより http://e-words.jp/w/REST.html わんくま同盟 名古屋勉強会 #29
  • 6. はじめに(2/7) • RESTの設計原則 1. セッションなどの状態管理を行わない • HTTP自体にはセッション管理の機構はない 2. 情報を操作する命令の体系が予め定義・共有さ れている • HTTPのGETやPOSTなどに相当 3. すべての情報は汎用的な構文で一意に識別され る • URLやURIに相当 4. 情報の内部に、別の情報や(その情報の別の)状 態へのリンクを含めることができる • HTMLやXMLに相当 わんくま同盟 名古屋勉強会 #29
  • 7. はじめに(3/7) • RESTful – 先程説明した狭義のRESTとして、HTTP経由 でパラメータを指定して特定のURLにアクセ スすると、XML形式やJSON形式などで記述さ れたメッセージが送信されるシステム及びAPI を、RESTful WebサービスやRESTful APIと呼 びます。 – 但し、RESTの設計4原則を必ず満たしている とか、厳密な技術的定義が有る訳ではなく、 SOAP/RPCを必要としない単純なWebイン ターフェースの意味合いが強い。 わんくま同盟 名古屋勉強会 #29
  • 8. はじめに(4/7) • C++言語とHTTP規格 (1/4) – ここまで説明してきたRESTは、Webアプリ ケーション/サービスの為の設計様式でした。 – RESTの基盤となるのはHTTP規格。大雑把に 説明すると、TCP/IPをプロトコルとしてWeb サーバーとWebブラウザのクライアント/サー バー方式による要求・応答のハンドシェイク を行う仕組みです。 わんくま同盟 名古屋勉強会 #29
  • 9. はじめに(5/7) • C++言語とHTTP規格 (2/4) – C++でRESTfulなプログラムを書こうと思っ た場合、 C#やJava, Ruby, Pythonといった最 近よく使われる開発言語とは異なり、C++だ けではHTTPを扱えないとう問題があります。 – まずC++言語の規格には、HTTPはもとよりそ の基盤となるTCP/IPを行う為のsocket通信 APIについても含まれていません。 わんくま同盟 名古屋勉強会 #29
  • 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. はじめに(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. C++ REST SDKを使ってWebサービスを利用する 2. C++ REST SDKについて わんくま同盟 名古屋勉強会 #29
  • 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. 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. 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. 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. C++ REST SDKについて(5/7) • C++ REST SDKの機能 1. HTTPクライアントを通じてサーバーに接続、 リクエスト送信、レスポンス処理。 2. URIの構築・使用 3. JSONの構築・解析・シリアライズ 4. ストリームやストリームバッファを媒介とし た、非同期のバイトデータ処理。 5. プラットフォーム非依存の文字列 6. タスクによるプログラミング ※XMLパーサーなどは含まれない わんくま同盟 名古屋勉強会 #29
  • 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. 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. C++ REST SDKを使ってWebサービスを利用する 3. デモ わんくま同盟 名古屋勉強会 #29
  • 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. 3. デモ(2/2) • 今回RESTfulサービスとして、リクルート WEBサービスが提供するホットペッパー のAPIを使って懇親会会場を探してみます。 – リクルートWEBサービス > ホットペッパー – http://webservice.recruit.co.jp/hotpepper/ • リクルートWEBサービスを利用するには 最初に[新規登録]のリンクからE-Mailアド レスを入力して、APIキーを取得する必要 があります。 わんくま同盟 名古屋勉強会 #29
  • 23. C++ REST SDKを使ってWebサービスを利用する 4. まとめ わんくま同盟 名古屋勉強会 #29
  • 24. 4. まとめ(1/2) • 今回C++ REST SDKを使ってみてちょっ とビックリしたのが、PPL(Parallel Patterns Library)やActor-Based Programming Modelの部分でした。 • 但しこれらは.NET Framework 4.5からサ ポートされたAsync/Awaitによる非同期プ ログラミングと似た考え方なので、文法や 動作などを理解できれば、コードはスッキ リしていると分かりました。 わんくま同盟 名古屋勉強会 #29
  • 25. 4. まとめ(2/2) • 逆を言えば、PPL(Parallel Patterns Library)を使った実装サンプルとして、こ のC++ REST SDKはとても参考になると 言えます。 • C++使わずに素直に他の言語で実装した ら良いのでは?という突っ込みはさておき、 C++でも簡単にHTTP通信が行えるように なるこのライブラリは便利ですね。 わんくま同盟 名古屋勉強会 #29