SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Hiro H.
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使うKazuhiro Suga
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)NTT DATA Technology & Innovation
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能TomomitsuKusaba
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析Yuki Mizuno
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理NTT DATA Technology & Innovation
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All ThingsUnityTechnologiesJapan002
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
Spring fest2020 spring-security
Spring fest2020 spring-securitySpring fest2020 spring-security
Spring fest2020 spring-security土岐 孝平
 
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーションakio19937
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろうShingo Omura
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するYoshifumi Kawai
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみたKohei Tokunaga
 

Tendances (20)

gRPC入門
gRPC入門gRPC入門
gRPC入門
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
 
DockerコンテナでGitを使う
DockerコンテナでGitを使うDockerコンテナでGitを使う
DockerコンテナでGitを使う
 
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
乗っ取れコンテナ!!開発者から見たコンテナセキュリティの考え方(CloudNative Days Tokyo 2021 発表資料)
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
実践イカパケット解析
実践イカパケット解析実践イカパケット解析
実践イカパケット解析
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Spring fest2020 spring-security
Spring fest2020 spring-securitySpring fest2020 spring-security
Spring fest2020 spring-security
 
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 

En vedette

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

En vedette (10)

Casablanca
CasablancaCasablanca
Casablanca
 
ニコニコ動画コメント等データ仕様
ニコニコ動画コメント等データ仕様ニコニコ動画コメント等データ仕様
ニコニコ動画コメント等データ仕様
 
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介
 
ニコニコ動画のコメント解析
ニコニコ動画のコメント解析ニコニコ動画のコメント解析
ニコニコ動画のコメント解析
 
最近遊んだ Wii Uの 3つのソフトの感想
最近遊んだ Wii Uの 3つのソフトの感想最近遊んだ Wii Uの 3つのソフトの感想
最近遊んだ Wii Uの 3つのソフトの感想
 
プロダクトマネジメント入門
プロダクトマネジメント入門プロダクトマネジメント入門
プロダクトマネジメント入門
 
HTTP/2の課題と将来
HTTP/2の課題と将来HTTP/2の課題と将来
HTTP/2の課題と将来
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 
Rest ful api設計入門
Rest ful api設計入門Rest ful api設計入門
Rest ful api設計入門
 
Reorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and BeyondReorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and Beyond
 

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

.NET の過去、現在、そして未来
.NET の過去、現在、そして未来.NET の過去、現在、そして未来
.NET の過去、現在、そして未来Akira Inoue
 
Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話You&I
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Saki Homma
 
UnityとAmazon Web Servicesで生み出す新しい価値
UnityとAmazon Web Servicesで生み出す新しい価値UnityとAmazon Web Servicesで生み出す新しい価値
UnityとAmazon Web Servicesで生み出す新しい価値Keisuke Nishitani
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルAkira Inoue
 
DevOps on Azure Kubernetes
DevOps on Azure KubernetesDevOps on Azure Kubernetes
DevOps on Azure KubernetesIssei Hiraoka
 
.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素Akira Inoue
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜日本マイクロソフト株式会社
 
Team Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみるTeam Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみるYou&I
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築You&I
 
Introduction to VSCode
Introduction to VSCodeIntroduction to VSCode
Introduction to VSCodeYuki Igarashi
 
Docker on azure!進化していくcontainerを覗いてみよう!
Docker on azure!進化していくcontainerを覗いてみよう! Docker on azure!進化していくcontainerを覗いてみよう!
Docker on azure!進化していくcontainerを覗いてみよう! Tsukasa Kato
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みShinichiro Arai
 
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介Yuta Matsumura
 
[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発
[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発
[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発Naoki (Neo) SATO
 
.NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.).NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.)Akira Inoue
 
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewAzure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewKeiji Kamebuchi
 

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

Vscodemeetup6
Vscodemeetup6Vscodemeetup6
Vscodemeetup6
 
.NET の過去、現在、そして未来
.NET の過去、現在、そして未来.NET の過去、現在、そして未来
.NET の過去、現在、そして未来
 
Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話
 
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
 
UnityとAmazon Web Servicesで生み出す新しい価値
UnityとAmazon Web Servicesで生み出す新しい価値UnityとAmazon Web Servicesで生み出す新しい価値
UnityとAmazon Web Servicesで生み出す新しい価値
 
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイルVisual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
Visual Studio 2019 GA ! ~ 最新情報 & これからの開発スタイル
 
DevOps on Azure Kubernetes
DevOps on Azure KubernetesDevOps on Azure Kubernetes
DevOps on Azure Kubernetes
 
.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素
 
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
【de:code 2020】 Build 2020 最新情報 〜 Azure & Visual Studio & .NET 〜
 
Team Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみるTeam Foundation Serivceを使ってみる
Team Foundation Serivceを使ってみる
 
Azure <3 Openness
Azure <3 OpennessAzure <3 Openness
Azure <3 Openness
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
Azure Fundamental
Azure FundamentalAzure Fundamental
Azure Fundamental
 
Introduction to VSCode
Introduction to VSCodeIntroduction to VSCode
Introduction to VSCode
 
Docker on azure!進化していくcontainerを覗いてみよう!
Docker on azure!進化していくcontainerを覗いてみよう! Docker on azure!進化していくcontainerを覗いてみよう!
Docker on azure!進化していくcontainerを覗いてみよう!
 
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組みMicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組み
 
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
 
[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発
[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発
[Java Festa in 札幌 2012] Windows Azure を活用した Windows 8 アプリケーション開発
 
.NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.).NET の今と今後に思うこと (Tokyo Ver.)
.NET の今と今後に思うこと (Tokyo Ver.)
 
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewAzure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - Overview
 

Dernier

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
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
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Dernier (8)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
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
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

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