セッション ID:T1-311

セッション ID:T1-311
Windows Azure と
Bing を利用した
クラウド アプリケーション開発
マイクロソフト株式会社
デベロッパー&
プラットフォーム統括本部
エバンジェリスト
砂金 信一郎
イースト株式会社
ソフトウェア事業部
遠藤 大樹
スピーカー紹介
い さ ご
砂金 信一郎 [email protected]
アーキテクト エバンジェリスト
マイクロソフト株式会社 デベロッパー&プラットフォーム統括本部
クラウドプラットフォーム推進部 所属
ブログでも Azure の話題を提供 http://blogs.itmedia.co.jp/isago/
Twitter フォローはお気軽に http://twitter.com/shin135/
遠藤 大樹
ソフトウェア事業部
イースト株式会社
イースト株式会社にて主に ASP.NET でのアプリケーション開発を手がける Web
開発者。Windows Azure の黎明期から関わっており、昨年の Tech・Ed 2009 で
は JTB とイーストで開発した旅のアルバム サービス「 TORIPOTO 」の Windows
Azure 対応で得られた知見を解説。その後 Windows Azure と Bing Map を組み
合わせたサービスなどの開発にも関わっており、今回はその開発ノウハウを披露し
ます。「Microsoft のクラウド コンピューティング Windows Azure 入門」共著。
3
セッションの目的とゴール
セッションの目的
Bing の各種サービスの概要理解
Windows Azure でのマッシュアップ例の提示
セッションのゴール
マイクロソフトのクラウド戦略における
Windows Azure と Bing API の位置づけを説明
できるようになる
代表的な Bing API の特長と利用方法を説明で
きるようになる
Bing の各種サービスを活用したクラウド
アプリケーションを実際に作ってみたいという
パッションをお持ち帰りいただく
4
本セッションでは、日本で正式提供
していなサービスも紹介します。
あらかじめご了承の上ご参加ください。
5
アジェンダ
Azure の復習& Bing の概要
1.
Bing Maps API の紹介とデモ
2.
3.
6
翻訳 API にみる可能性
マイクロソフトの
ビジネス向け クラウド サービス
生産性
コミュニケーション コラボレーション
ビジネス アプリケーション 管理
ストレージ
プラットフォーム
マイクロソフトの
個人向けクラウド サービス
検索
Web メール、SNS、コラボレーション
ニュース &エンターテイメント
セキュリティ管理
ストレージ
クラウド サービスの分類・俯瞰
アプリケーション
アプリケーション
アプリケーション
ミドルウェア
ミドルウェア
ミドルウェア
OS
OS
OS
ハードウェア
ハードウェア
ハードウェア
SaaS
PaaS
完成品の
ソフトウェアを提供
IaaS
開発・実行環境となる
プラットフォームを提供
ハードウェアを提供
○ すぐに利用でき、ASP
○ スケーラビリティ、コス
からの延長で利用は一番、
トにおいて他サービスに
進んでいる
勝る
× プラットフォームとして × アプリケーション開発が
の拡張性、自由度に欠け
必須ということと、後発
る場合が多い
のため、事例は少ない
9
(CPU貸し、ディスク貸し)
○ 自由度が高く自社運用と
差がないため、利用障壁
は低い
× これまで同様の管理が必
要になり、煩雑化
する可能性がある
Windows Azure の復習
(主に).NET アプリを簡単に動かす場
仮想マシン、ストレージともにスケーラブル
ファブリックコントローラーが可用性を担保
10
Announcing...
コンサルティングサービス Azure 実装ガイド提供!
マイクロソフトコンサルティングサービスに
よる Azure 実装ガイドを提供予定!
ベストセラー「Visual Studio による Web
アプリケーション構築技法」の著者 赤間による
Azure 実装ガイドラインを Web 経由で提供
実践的な実装方法を解説した
Workshop 資料を
ダウンロード提供予定
11
Azure を活用するビジネス的意義
初期投資
無駄の排除
スピード
運用
• 費用として支払うため、資産計上しなくて済む
• 従量制課金であるため、必要がなくなれば、容易に停止可能
安い
• キャンペーン サイトや頻度の少ないバッチ処理に有効
• すぐにアプリの開発、利用が可能になる
• 新規事業などの変化の早いニーズに対応
簡単
• システム管理業務をすべてアウトソース、パッチ適用も自動化
• 遠隔地での冗長化で事業継続性を確保
スケーラ
• スケーラブルな基盤設計要求からスキルの高い技術者を解放
ビリティ
• 所有が不可能な規模に、理論上無限の拡張が可能
グローバル展開
12
• ハードウェアやOSの購買、インフラ構築費用が不要
• 世界中に建設されたデータセンターとネットワーク網を活用
• データやアプリケーションを効率的に配布・管理
+α
クラウド アプリ構築の素材
API 経由
サービス
呼び出し
Web検索
Maps
空間情報
アプリ
構築基盤
13
Translator
翻訳
Web 検索サービスとしての Bing
14
Bing Maps の位置情報サービス
15
Bing Translator の翻訳サービス
http://www.microsofttranslator.com/
16
Bing の基盤を支える Autopilot
大量のコンピュータ リソースを管理する技術は
Azure のファブリックコントローラーと同じ
インデックス作成
17
Bing の開発者向けページ(英語)
http://www.bing.com/developers
18
App ID の取得が必要
19
検索 API の利用方法 (REST)
http://api.bing.net/json.aspx?
Appid={ 事前に取得したAppidを入力 }
Query=Miguel+A.+Castro&
Sources=web
•
•
•
•
•
20
WebResult
Title
Description
DisplayUrl
Url
DateTime
ImageResult
• Title
• Url
• Thumbnail
• Url
• Width
• Height
VideoResult
• Title
• PlayUrl
• StaticThumbnail
• Url
• Width
• Height
JSON での結果取得
Data Contract Object Model
{
"SearchResponse":
{
"Version":"2.2",
"Query":
{
"SearchTerms":"Miguel A Castro"},
"Web":
{
"Total":8,550,000,
"Offset":0,
"Results":
•
BingSearchResultData – top level
• Response (SearchResponse)
• Query
• Web
• WebResult[] (Results)
• Title
• Description
• Url
[
{
"Title":"Miguel Castro",
"Description":"Miguel Castro [email protected]",
"Url":"http:\/\/www.pmg.lcs.mit.edu\/~castro\/",
"CacheUrl":"http:\/\/cc.bingj.com\/cache.aspx?q=migu..",
"DisplayUrl":"www.pmg.lcs.mit.edu\/~castro",
"DateTime":"2010-05-01T22:38:20Z"
},
{
< 次の検索結果 >
}
]
}
}
}
}
21
詳細は http://www.msteched.com/2010/NorthAmerica/WEB310 (英語)
Bing を利用したサービスの一例
http://spindex.cloudapp.net/ (現時点招待制ベータ)
22
Azure の復習& Bing の概要
1.
Bing Maps API の紹介とデモ
2.
3.
23
翻訳 API にみる可能性
Bing Maps の開発リソース
http://www.microsoft.com/maps/
24
Key は即時発行。評価用を選択
https://www.bingmapsportal.com/
25
Bing Maps を制御する API 群
Bing
Bing
Bing
Bing
26
Maps
Maps
Maps
Maps
Web Services
AJAX Control
Silverlight Control
Account Center
Bing Maps Silverlight Control
Silverlight から Bing Maps を制御
マネージ コードでの開発
Deep Zoom 機能の活用
パフォーマンスの大幅な改善(対 AJAX )
CTP 期間を経て機能を強化
Data Binding
プッシュピン対応
Out of Browser
JavaScript interface も利用可能
http://www.microsoft.com/maps/isdk/silverlight/
27
インタラクティブ API
http://www.microsoft.com/maps/isdk/silverlight/
28
SDK のダウンロード
http://bit.ly/mapsctl
29
Bing Maps と Azure の組み合わせ例
http://www.eyeonearth.eu/
30
Eye on Earth のアーキテクチャ
大気・水質
観測データ
Silverlight UI
Bing Maps
Control
SMS
ゲートウェイ
31
データ
サービス
SQL
Azure
観光統計ぷらっとふぉーむ
自治体向け観光統計データ公開サービス
三菱総合研究所クラウド ユーザー研究
会のプロトタイプ検証用プロジェクト
観光統計データを Bing Maps 上に表示
開発はイーストが担当
32
観光統計ぷらっとふぉーむ
開発ツール
Visual Studio 2010 + .NET Framework 4
Expression Blend 4 RC
Windows Azure Tools for Microsoft Visual
Studio 1.2 ( 2010 年 6 月)
Microsoft Silverlight 4 Tools for Visual
Studio 2010
Silverlight 4 Toolkit April 2010
Bing Maps Silverlight Control SDK
34
アーキテクチャ(初期版)
SQL Azureにデータを格納
マイクロソフト
オンライン サービス
Bing Maps
Windows Azure
WebRole
観光統計データ
サービス
(WCF Data
Services)
35
SQL Azure
観光統計
情報DB
初期版の問題点
限界を試すことも目的のうち
SQL Azure + WCF Data Services
最初は簡単な方法でとのことだったが…
2万5千地点の情報で 30 MB のデータ転送が発生
起動時のデータ取得に時間がかかる
費用が気になる(お客様の声)
パフォーマンス改善のために考慮した点
WCF Data Services はデータ量が増える
XML で応答されるため、タグの情報量が多い
観光統計データの更新頻度は少ない
SQL Azure からデータを取得する必要はあるか?
36
アーキテクチャ(最終版)
BLOB からデータを取得するように変更
マイクロソフト
オンライン サービス
Bing Maps
Windows Azure
WebRole
観光統計データ
サービス
(WCF)
37
SQL Azure
観光統計情報
( ZIP 圧縮 CSV )
将来構想
観光統計ぷらっとふぉーむの拡張
検索・統計機能の拡充
SQL Azure
Azure Storage 等
他のサービスとのマッシュアップ
Dallas のデータ配信サービス
38
Bing Mapsを使ったアプリ開発
1. Bing Maps Silverlight Control SDKの
インストール
2. Silverlight プロジェクト作成
3. 以下を参照設定
Microsoft.Maps.MapControl.Common.dll
Microsoft.Maps.MapControl.dll
※Bing Maps Silverlight Control SDKに含まれる
39
Bing Maps を使うコード(XAML)
<UserControl x:Class="BingMapApp.MainPage"
xmlns="http://schemas.microsoft.com/...
xmlns:m="clr-namespace:Microsoft.Maps.MapCont
rol;assembly=Microsoft.Maps.MapControl"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<m:Map Mode="Aerial" Center="38.5,136.0"
CredentialsProvider="[key]">
</m:Map>
</Grid>
</UserControl>
40
XAML のみで Bing Mapsを表示
Silverlight からのデータ アクセス
目的に合わせて選択
Web サービス
WCF
WCF Data Services
WCF RIA Services
REST などのその他サービス
認証不要かつ更新頻度低なら BLOB から直接
BLOB に配置したXMLファイルなどを直接参照
CDN が使える
root コンテナに clientaccesspolicy.xml を配置
42
BLOB から位置情報を取得して
地図上に表示
プラットフォームとしての Bing Maps
Map Data/
Tiles
マイクロソフト製
アプリ
サード パーティ製
アプリ
ブラウザーから
利用
API を利用して
サービスを開発
maps.bing.com
microsoft.com/maps/developers
Imagery/
Tiles
DEMs/
Buildings
Geocoding/
Rooftop
Yellow
Pages/
POIs
Traffic
豊富なデータ セット
※北米特定地域でのみ提供しているサービス含む
44
Search/
Proximity
Routing/
Directions
Data
Services/
Reporting
Bing Map Apps
英語版に言語、地域を切り替えるとボタンが現れる
45
地図にアプリをのせる Bing Map Apps
Bing Maps API
Bing Maps Apps
アプリ
地図表示
地図
データ
アプリ
アプリに地図を
読み込む
46
地図にアプリを
のせる
Bing Map Apps の開発方法
SDK ダウンロードには Connect. への登録が必要
http://connect.microsoft.com/bingmapapps
47
Azure の復習& Bing の概要
1.
Bing Maps API の紹介とデモ
2.
3.
48
翻訳 API にみる可能性
IE アクセラレータにも対応した
Bing 翻訳サービス
49
翻訳サービスも API で利用可能
http://www.microsofttranslator.com/dev/
50
Messenger での実装
[email protected]
を「知り合い」に追
加して語りかける
翻訳元、翻訳先の
言語コードを指示す
ると発言が翻訳され
て帰ってくる
51
WorkerRole での Twitter bot の実装例
public override void Start()
{
// This is a sample worker implementation.
Replace with your logic.
RoleManager.WriteToLog("Information", "Worker Process
entry point called");
while (true)
{
try
{
string message = DateTime.Now.ToString() + " なう。";
TwitterPost.PostMessage(message);
}
catch (Exception e)
{
RoleManager.WriteToLog("Error", e.Message);
}
RoleManager.WriteToLog("Information", "Working");
Thread.Sleep(1 * 60 * 1,000);
}
}
52
Special Thanks: @harutama
Twitter 翻訳 bot の実装例
private static void Proc(TwitterFrontend twitter, BingFrontend bing)
{
List<Timeline> tl = twitter.Mentions(MaxId.ToString());
IEnumerable<Timeline> selected = from x in tl where x.User.ScreenName
!= TwitterFrontend.ScreenName select x;
foreach (Timeline t in selected)
{
string fromLang = bing.Detect(t.ShapedText());
//言語が違う時だけ翻訳
if (!fromLang.Equals(t.User.Lang, StringComparison.CurrentCultureIgnoreCase))
{
string translated = bing.Translate(t.ShapedText(), fromLang, t.User.Lang);
//Updateをかける
if (t.InReplyToStatusId == null)
{
string postStr = '@' + t.User.ScreenName + ' ' + translated;
twitter.StatusUpdate(postStr, t.ID);
}
else
{
string postStr = '@' + t.InReplyToScreenName + ' ' + translated;
twitter.StatusUpdate(postStr, t.InReplyToStatusId);
}
}
}
}
53
Special Thanks: @harutama
本セッションでお伝えしたこと
Azure と Bing 各サービスの概要
Bing 各サービスの API 利用方法
Bing Maps を活用した Azure アプリの
実装方法
地図にアプリをのせるBing Map Apps
の紹介
Bing Translator を活用した
Azure アプリの実装方法
54
次世代のクラウド開発に向けて
Azure の特長は既存資産
(アプリ、開発スキル)の再利用性にある
特に、 .NET で実装された業務アプリの
クラウド移行には非常に適している
しかしながら、次世代のソーシャルな
クラウド アプリをゼロベースで構築する
場面でも、もちろん利用していただきたい
本セッションの内容が、新サービスの企画、
構想を練る上で参考になれば幸いである
55
関連セッション
T1-502:クラウド コンピューティングの最先端技術動向と選択の戦
略
LT-03:ライトニングトーク(クラウド特集)
T1-307:Windows Azure を使用したスケーラブルなアプリケー
ション構築
T1-308:Visual Studio 2010 による Windows Azure アプリケー
ション開発
T3-403:Open Data Protocol (Odata) と WCF Data Services に
よるサービスの作成
56
リファレンス
Bing 開発者向けページ(英語)
http://www.bing.com/developers
Bing Maps 開発リソース(英語)
http://www.microsoft.com/maps/
Bing Maps Silverlight Control インタラクティブ API (英語)
http://www.microsoft.com/maps/isdk/silverlight/
Bing Map Apps SDK 入手(要登録、英語)
http://connect.microsoft.com/bingmapapps
Microsoft Translator 開発者向けサービス
http://www.microsofttranslator.com/dev/
57
ご清聴ありがとうございました。
T1-311
アンケートにご協力ください。
© 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should
not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.