冨田様 windows azureで作るマイクロブログのbot
DESCRIPTION
TechEd Japan 2009 ライトニングトークTRANSCRIPT
Windows Azure で作るマイクロブログの Bot
冨田 順 (とみた すなお)http://twitter.com/harutama
「マイクロブログ」って何?
• 数十文字程度の文章を投稿するために設計されたブログ。• ざっくり言うと、 Twitter の事。
http://twitter.com/
Bot とは?
Twitter などのマイクロブログにメッセージを自動で投稿するプログラム RSS などで配信されているデータを
転載するもの。 人口知能など会話ができるもの。 種類は様々。
Twitter で活動中の Bot• ニュース–毎日新聞、共同通信、帝国データバンク、
CNET Japan 、スラッシュドット、 NASA 、ファミ通、ナタリー、 etc ・・・
• 天気予報、地震速報• 人口 ( 知能 | 無能 )–カミナギ、 ha_ma 、 hanatwitty 、 et
c ・・・• 情報収集系–ふらぐったー、ぼむったー、 etc ・・・
ところで本題
Windows Azure とは?
Day3 15:15 ~ 16:25 RoomC
T2-203Azure 開発概要クラウド時代のアプリケーション開発者として身につけておくべき基礎
を、参考にしてください。
Windows Azure 2 つのアプリケーションホスト環境= Role
WebRoleと
WorkerRole
Windows Azure 2つの Role
• ASP.NET アプリケーションをホストする Role 。
• VisualStudio の「 ASP.NET Web アプリケーション」プロジェクトで作るような感じ。
WebRole
Windows Azure 2つの Role
• サービスをホストするための Role 。• WebRole と Windows Azure
Storage (特に Queue )を経由してやり取りするのが基本的な使い方。
WorkerRole
WorkerRole ってどう使えばいいの?
作成直後の WorkerRole
namespace CloudService1_WorkerRole{ public class WorkerRole : RoleEntryPoint { public override void Start() { // This is a sample worker implementation. Replace with your logic. RoleManager.WriteToLog("Information", "Worker Process entry point called");
while (true) { Thread.Sleep(10000); RoleManager.WriteToLog("Information", "Working"); } } public override RoleStatus GetHealthStatus() { // This is a sample worker implementation. Replace with your logic. return RoleStatus.Healthy; } }}
・・・ん?
やっていることは
while (true){ Thread.Sleep(10000); RoleManager .WriteToLog("Information", "Working");}
10 秒休んでログに書く無限ループ
WorkerRole って
Bot 作るのに
最適 !!かも。
10 秒休んでログに書くの無限ループ
? 秒休んでマイクロブログに投稿する無限ループ
Windows Azure で Bot できた !!
Tech Ed のライトニングトークでネタにする
いまここ
マイクロブログの WebAPI
• プログラムからマイクロブログへの投稿はWebAPI に対して行う。
• WebAPI は Twitter 互換が ( ほぼ ) 標準– Twitter の API 仕様の日本語訳
http://watcher.moe-nifty.com/memo/2007/04/
twitter_api.html
WorkerRole ってBot に使える?
WorkerRole での通信
• WorkerRole から HTTP 通信可能–Windows Azure の外に向かって、リ
クエストを投げることが可能。–HttpWebRequest クラスで 80 番ポート
の HTTP 通信を利用できる。–もちろん、 WebClient クラスも利用可能。
WorkerRole での通信
• 各種の Web サービスが利用可能–マイクロブログ API にリクエスト可能。–RSS や ATOM などは
System.ServiceModel.Syndication名前空間を利用することで、簡単に情報を取り出せる。–形態素解析や係り受け解析など
は、 Yahoo から Web サービスとして提供されている。http://developer.yahoo.co.jp/webapi/jlp/
WorkerRole で使える機能
• .NET Framework 3.5 がベース– LINQ が使える。• マイクロブログのタイムラインから最新の投稿や、
対象とする投稿を抜き出すのがカンタン。• SQL Data Services( 仮 ) にも LINQ でアクセス。
( 予定 )
–WCF 、 WF も利用可能。
Windows Azure でBot を運用する
メリット
3 つのまとめ
①24 時間 365 日の運用を
低コストで行える
1 か月 24 時間動かすと0.12$(1 時間 )×24( 時間 )×30( 日 )
= 86.4$
最低でも 99.95 %の外部接続を保証する SLA で提供される。
②メンテナンスフリー
OS 、ミドルウエアなどのアップデートやパッチ適用が一切不要。
運用?何それ?食べられるの?
そう考えると、 1 か月 86.4$ は安いかも。
③運用環境とテスト環境
の両方が手に入る
運用環境 テスト環境
Windows Azure管理画面
最後に
作ってみた。
• はてなハイクで Bot 稼働中です。–首都圏の電車運行情報を教えてくれる Bot
http://h.hatena.ne.jp/keyword/ 首都圏運行情報–肩こり・筋肉の痛みに反応して励ます Bot
http://h.hatena.ne.jp/id/RuyGoncalvesRamosSobrinho
冨田 順 (とみた すなお)http://twitter.com/harutama