2013_2_22

神芸2013 〜Node.js×Azure×Androidが奏でる楽しい夢〜

みなさん、こんにちは。HACKstの一階です。

このたび、以前公開した「ご長寿祈願 白蛇様」をベースに、02/17にテレビ朝日系列で放送された神芸2013の観客審査員用投票システムを構築しました!

実にめでたいことですので、記念にこのシステムの技術面の話を軽くしようと思います。(システムの内容はこちらのプレスリリースを参照してください)

開発のきっかけはAndroidタブレットを利用して、100人以上で同時投票を行いたい(しかも1ヶ月以内!)という相談が来たことでした。

期間が非常にタイトなため、普通なら受けようか受けまいか迷うところですが、こんなこともあろうかと(本当ですよ)実験として「白蛇様」を開発していたので、これはいいチャンスだと思い、すぐに「任せて!」と回答しました。

「白蛇様」の経験を生かし、仕様は以下としました。

・100人以上の同時接続=Node.js(実際はiisnode)

・Andorid上でアニメーションが必要だが、期間が短い=HTML+jsで画面を作成

・サーバとのソケット接続=jsでソケット接続

・Androidアプリ=単なるWebView

・Node.jsをサポートしていて、運用/スケールアウトが容易そう=WindowsAzure

~サーバにAzureを利用している以外は普通の構成ですね。

基本順調にシステムを開発していたのですが、途中1つ問題が。できあがったHTML+jsのロジックをAndroidのWebViewに入れてもNode.jsがピクリとも動かないのです。

Google先生にお伺いを立てたところ、iPhoneの標準ブラウザもUIWebViewもNode.js(というかSocket)に対応しているけれど、Androidは標準ブラウザもWebViewもNode.jsをサポートしていないことが判明。

・・・技術的に進んでて自由がきくのがAndroidの大事な取り柄では・・・(T.T)

まあ、駄目なものは駄目なのでAndroidアプリでSocket接続を行うよう変更しました。

ただ、Android×node.jsはまだしも、Android×iisnodeの組み合わせ事例がなく、
githubで公開されているSocketクラスなどを参考にいろいろ苦労したのが、技術的な山場でした。

さほど広くない空間で100台以上のタブレットをどうやってWifiに同時接続するかや、手動でタブレットに作成したアプリをインストールするなど技術以外の所も大変でしたが、非常に楽しい経験ができました!

[アプリインストール中]

[タブレット充電中]

[投票画面]

HACKistは今後も様々な技術で楽しいものを作っていきますので、ご期待ください!