MQTT as a Service: sango のリリースをお手伝いしました
本日 2014年8月29日より、親会社の時雨堂はMQTTをインターネット上で簡単に利用できるサービスである「sango」を提供開始しました。
ダッシュボードはこんな感じで、MQTTへの接続情報が載っています。
GitHubアカウントがあれば、すぐに使いはじめることが出来ます。現在のところ無料プランだけが提供されており、加えて五百円プランを10月をめどに始める予定です。無料プランはずっと提供する予定です。
詳細はプレスリリースを見ていただくとして、ここでは軽く使い方と中身を紹介します。
sangoの使い方
sangoはGitHubアカウントで簡単にログインできます。
ログインするとMQTT接続情報として、
- 接続先 : tcp://<MQTTサーバーのアドレス>:1883
- WebSocket接続先: ws://<MQTTサーバーのアドレス>:8080/mqtt
- アクセス先トピック: /shirou@github/#
- ユーザー名: shirou@github
- パスワード: ひみつ <-- クリックすると表示されます
が出てきます。各ユーザーに対して、アクセス先トピックが割り振られていることに注意してください。
mosquittoを使ってコマンドラインから簡単に試すことが出来ます。(事前にmosquittoをインストールしてください)
mosquitto_sub \
-h <MQTTサーバーのアドレス> \
-u shirou@github \
-t "/shirou@github/#"
-P <パスワード>
とすると、/shirou@github/#に送られたメッセージを受け取れます。各ユーザーに対して割り当てられているトピック以外に送ってもだめなので注意してください。
subを実行しておき、別ターミナルから
echo "MQTT is Cooooool" |
mosquitto_pub \
-h <MQTTサーバーのアドレス> \
-u shirou@github \
-t "/shirou@github/#"
-P <パスワード> \
-s
とすると、さっきのsubしている部分に表示されます。
sangoの中身
sangoは
- Erlang/OTPで書かれた MQTT Server
- Go言語で書かれた Webアプリ
の2つの機能で構成されています。弊社ツキノワはこのWebアプリ部分を担当しました。
やってることはたいした事なく、MQTT Server側のAPIを叩くだけです。OAuthもrevelのサイトにサンプルがあり、一瞬で実装できたりしました。
中身の構成
使っているライブラリは以下のとおりです。
- Webフレームワーク: revel (http://revel.github.io/)
- ORM: gorm (https://github.com/jinzhu/gorm)
revelに関してはrevelの紹介記事を参照してください。
gormですが、結構簡単に使えました。今回はテーブル構造もシンプルなのですが、それでもSQLを一行も書かずに実装できました。
あとは、CLIを作る部分で
- CLI: codegangsta/cli (https://github.com/codegangsta/cli)
を使いました。これも簡単に使えていいですね。
まとめ
「MQTT as a Service: sango」のリリースのお手伝いをしました。
この記事はsangoの紹介、使い方と、その中身を軽く紹介しました。
MQTTはいろいろな使い道が出来るプロトコルだと思います。sangoを使ってアイデアを簡単に試してみるのはいかがでしょうか。
今後の展開
現在無料プランしか用意しておりませんが、10月をめどに五百円プランをスタートする予定です。
五百円プランは
- 同時接続数: 10コネクションまで使用可
- QoS: 1,2に対応
- セキュリティ: TLS対応
- 月間最大メッセージ数: 100,000
というように、さらに実用的に使えるようになる予定です。ご期待ください。