はじめに
前回はMilkcocoa Node.js SDKの使い所などを紹介して、実際に使用の導入部分に触れました。今回はTwitter APIにNode.jsからアクセスし、Milkcocoa Node.js SDKを用いてリアルタイム描画&保存をしてみたいと思います。
Twitter APIの利用準備
Twitter APIの使い方を説明します。ちなみに、2015年3月時点でのやり方になります。Twitter APIや開発者画面はある程度の期間が経つと更新されるので画面が同じではない場合がありますが、適宜読み取っていただければ幸いです。
Twitter APIの利用方法
ここの手順ではTwitter Botなどを作るときと同じで、
- コンシューマーキー
- コンシューマーシークレット
- アクセストークン
- アクセストークンシークレット
の4つの情報を取得します。
既にこの4つの情報を持っている方は読み飛ばしてください。
Twitterアプリケーションの作成(コンシューマーキー、コンシューマーシークレットの取得)
まず初めに、Twitterのアプリ開発者ページにアクセスします。
manage your appsから自分のアプリケーション管理画面へアクセスします。
Create New Appsを選択します。
以下を参考に、必要な情報を入力しましょう。
- Application Details
- Name:32文字以内で適当に名前をつけます。
- Description:10文字以上200文字以内で適当に説明文を書きます。
- Website:アプリケーションのURLになります。今回はテストアプリなので適当なURLを入力しておきましょう。
- Callback URL:今回は使いませんので空欄のままで大丈夫です。
- Developer Agreement:Yes, I agreeにチェックをしましょう。
Create your Twitter applicationを選択してアプリを新規作成することができます。
アプリを作成したら、Keys and Access Tokensのタブを選択しましょう。Consumer KeyとConsumer Secretが表示されているのでメモしておきましょう。
同じ画面の下のほうに Create my access tokenというボタンがあるので選択します。
Access TokenとAccess Token Secretが取得できました。
これで4つの情報が揃いました。
Node.js+TwitterストリーミングAPIでTweetのリアルタイム取得をしてみる
Milkcocoaとの連携を前に、Node.jsからTwitter API使ってみます。Twitterモジュールを使ってみましょう。
前回のmilkcocoaフォルダにtweet.jsを作成して試していきます。
検索ワードを第2引数にして実行すると検索ワードを含んだTweetを取得できます。
実行します。
こんな感じでTweetが取得されれば成功です。Twitter APIを扱うことが出来ました。
Milkcocoaを使ってTweetをリアルタイムに描画してみる
ここからMilkcocoaを使い、ストリーミングAPIで取得したツイートをリアルタイムにWebページに描画させます。
構成としては前回紹介した負荷分散にMilkcocoaを利用する際の構成と同じです。
この図に照らし合わせると、tweet.js
がバックエンドのサーバ、以下で作っていくwebsate/index.html
はフロントエンドのWebサイトになります。
Milkcocoaのアプリ準備
第2回と同様にMilkcocoaのアプリ登録をします。今回はgihyo.jpという名前でアプリを作成しました。
このアプリIDを覚えておきましょう。
Milkcocoa Node.js SDKの準備
ここまでの手順で既に準備は出来ていると思いますが、まだの方は第4回のとおりにMilkcocoa Node.js SDKを準備しましょう。
取得したTweetをMilkcocoaに保存
先ほどのtweet.js
に前回のsample.js
の内容を追加していきます。
これでツイートを取得するたびにPushメソッド
が実行され、Milkcocoaのデータストアに対してPushイベント
が発火されます。
- 19行目:
data.lang
にツイートの言語情報が入っているので、日本語のツイートだけを抽出するようにします。
- 21~27行目:データストアにpushするツイート情報を選定します。
- 29~31行目:データストアにpushします。
Webサイト(フロント)側の構築
Node.js側で受け取ったツイートのPushイベント
を取得するサイトを、Milkcocoaのチュートリアルを基に作成してみましょう。
とりあえずツイート内容を画面に描画してみましょう。
今回はこのようにmilkcocoaフォルダ内にwebsiteフォルダを作成し、その中にindex.html
とmain.js
を作成しました。
実際に公開する際にはこのwebsiteフォルダはtweet.js
を動かすサーバとは別のサーバにホスティングしているイメージです。
試してみる
先ほどのプログラムを実行すると、ツイートを取得するごとにMilkcocoaにPushされて、それと同時にPushイベントを監視しているmain.js
の9~12行目が実行されます。あらかじめwebsite/index.html
をブラウザで表示させておきましょう。
Facebook
と言う単語のツイートをリアルタイムに取得しています。
これでMilkcocoa Node.js SDKがSocket.ioなどのWebsocketライブラリの代わりに動作してくれることがわかると思います。
Milkcocoaをデータベースとして利用してみる
第4回の初めのほうで、MilkcocoaはSocket.ioやmongoDBの肩代わりをしてくれると言う話をしました。
ここまでで、Milkcocoa Node.js SDKを使うことでSocket.ioなどのWebSocketライブラリの代わりになってくれることがわかったと思います。
次はmongoDBなどのデータベースの代替になることがわかるように、データベースとしてMilkcocoaを扱ってみたいと思います。
データストアに保存したツイートを検索する機能を作る
今回はデータベースから取得してくるだけなので、フロント実装だけです。
先ほどのwebsiteフォルダ
にget.html
とget.js
を作成します。
簡単なフォームとボタンをhtmlで作成しました。Milkcocoaのドキュメントを参考にQueryメソッド
を利用してみます。
ユーザ名でツイートを検索して表示する
あらかじめtweet.js
を実行させておき、ツイートを保存しておきましょう。今回はligincを検索ワードにしてツイートを取得しておきました。
確認するために、あらかじめ自分のTwitterアカウントでliginc
という文字列が入るツイートをしておきました。
その後、先ほどのget.html
にアクセスしてフォームからツイートを取得するユーザ名を入力しましょう。今回はn0bisuke
と入力します。
先ほどツイートした情報がMilkcocoaに保存されていたので、今回はフロント側だけの実装でユーザ名がn0bisukeのツイートをデータストアから検索して描画することができました。
まとめ
いかがでしたでしょうか?
Milkcocoa Node.js SDKを使い方を事例とともに紹介しました。Socket.ioとmongoDBを用意しなくてもサーバープログラム実装だけでリアルタイム通信やデータ保存が出来ていることがおわかりいただけたかと思います。
Milkcocoa Node.js SDKがとても簡単に利用できて、様々な場面で利用出来るという可能性を感じていただけたのではないでしょうか?
筆者は実際にLIGとSHIFTBRAINで企画したリアル連動イベントでMilkcocoa Node.js SDKを使って実装をしましたが、とても手軽に使えてスピーディな開発を可能にしてくれました。
興味を持たれた方はぜひMilkcocoa Node.js SDKを使って何かモノを作ってみましょう!
Milkcocoa Node.js SDKを使った事例集
最後になりますが、簡単にMilkcocoa Node.js SDKを使った事例を紹介したいと思います。こう言ったプラットフォームは実際に利用シーンがイメージ出来たほうが利用モチベーションが上がると思いますので、この事例を参考にアイディアを膨らませるきっかけにしてみてはいかがでしようか。