12/23(火) ベルサール渋谷ファーストにてKDDIのFirefoxOSスマートフォン「Fx0」の発表会に参加しました。この発表会は田中社長からのプレス発表だけではなく、集まったたギークたちの手で作った作品の発表もありました。Fx0やFirefoxOSを用いて何が出来るかを示すハッカソンが舞台裏で行われていたのです。今回そのハッカソンメンバとして製作に加わりましたので内容を紹介します。
私はこれまで通信キャリアはオープン系の活動に熱心ではない印象を持っていたのですが、大きく変化が起こってきているのだと考えを改めました。大企業と個人が、ビジネス上の損得もなしにweb技術の浸透に寄与しようという想いを共有できたのは大きな変革です。
ハッカソンメンバは全員が個人意思で参加した一般人ボランティアです。会社員もいればフリーランスもいて属性はバラバラです。新製品のプレス発表のようなしっかりしたイベントをこういう寄せ集めメンバで運営するのは高度なマネジメント力と人間力が必要だと思いました。多くのことを学ぶことができたイベントでした。
(ハッカソン会場の風景)
(司会者)
ハッカソン発表の司会進行は女優の池澤あやかさんでした。ギークな女優として有名だそうです。申し訳ないのですが私は芸能人に詳しくないので・・全然知りませんでした。。
ハッカソンは3チームで構成され、私はシマダイチームに所属していましたのでシマダイチームの技術紹介をします。私はソフト開発を主に担当しました。
ドローンを飛ばす
サンタがドローンでプレゼントを運ぶ演出です。さすがに重くて運べないのでトナカイさんの役割が重要だったというストーリの流れになり、ドローンはその後ビデオカメラとして使います。
ドローンはiOSやAndroid向けに操作アプリが出ていますが、FirefoxOS向けにはありません。APIは明確でしたのでFirefoxOS向けに操作アプリを作りました。 ドローンはWiFiのAPになっているのでスマホはまずドローンWiFiにぶら下がります。そしてドローンに対してUDPで操作コマンドを出す仕組みです。しかしFirefoxOSにはmozTCPSocketのようなTCPはありますがUDPのプロトコルスタックがありません。それを追加したのが工夫ポイントのひとつです。 ドローンの飛行に関してはワールドビジネスサテライトの取材で実際に映像がテレビでも放送されましたので、下記リンクで動画を参照ください。
(撮影の様子)
照明を点灯する
ドローンが近くまで飛んでくればクリスマスツリーに明かりが灯る演出です。 ドローンにBLEのビーコンを取り付けておき、OpenWebBoardがそのRSSIを読み取ることで近づいたかどうかを検出します。OpenWebBoardはBluetooth4.0(BLE)に対応しているので利用できました。
OpenWebBoardにはUSBでArduinoを接続しました。OpenWebBoard側にシリアルデバイスドライバを入れてinsmodし、あとはmozTCPSocketを使ってポート9943に接続すればシリアル通信が実現できます。こちらの記事を参考にさせて頂きました。 http://flatbird.github.io/2014/11/05/owb-serial/
ArduinoにはIrモジュールを取り付けてあります。これは特定パターンで明滅させる事でリモコンとしてのコマンド送信を代行できます。つまりよく家電で使われる赤外線リモコンになるわけです。ツリーに付ける照明には赤外線リモコンでOn/OffできるリモコンコンセントOCR-05を使いました。これです。
ドローンがOpenWebBoardに近接するとArduinoを経由してIrモジュールにリモコンコマンドが出され、電源がOnされる仕掛けです。
FirefoxOSのBLEの制御方法としては mozBle というのがOpenWebBoardに用意されていました。使い方説明が無いので少々難儀しましたがサンプルのアプリを解析することでなんとかなりました。
音楽を届ける
WoTでサーバ側から音楽や体験を届けるという演出です。Fx0のポイントのひとつであるWebCast技術の応用です。
スマホからスマホへNFCを使ってURLを渡します。受信側スマホは渡されたURLへHTTPでアクセスすることでデータを受信できます。この場合audioタグの書かれたhtmlを受信させました。 送信側スマホはNFCでURLを送るだけではなく、HTTPサーバをも兼ねています。htmlも音楽データも送信側スマホに入っているのです。 HTTPサーバは 「httpd.js」Fx0をWebサーバ化するライブラリ-Creator Showcase を使っています。 データ転送量がそれなりに大きかったので通信環境の不安定さに苦労しました。
あらかじめペアリングしてあったBluetoothスピーカから音楽が出力されるという仕掛けです。
ハンドベルを鳴らす
スマホからの遠隔操作でハンドベルを鳴らす演出です。 デバイスがWebにつながることは、空間を超え、Real/Virtual の溝も超えて実世界に影響することを可能にします。シマダイチームは全体を通して「サーバからの送信で体験を届ける」というテーゼを持っており、その意味では音楽とハンドベルのギミックはその中心的な役割に相当します。
スマホからスマホへ渡したアプリ(html)のbutton要素のアクションで、送信側スマホ(サーバ)を経由し、緑の箱の中に仕込んだOpenWebBoardへコマンドが行きます。これにはGluinの技術を流用しました。つまりwebSocketです。OpenWebBoardはArduinoにつながっており、Arduinoはモータ2個(SG90を使用)と接続しています。このモータの動力でハンドベルを動かしています。
給電にはモバイルバッテリーを使用しました。最初はモータ3個をつなげていたのですが3個同時に駆動するには電力が足りないようで2個になりました。IoT、WoTは電源供給が課題ですね。
ハコを開く
ハンドベルと同じ技術です。SG90でハコの留め金を外すとフタが開く仕掛けです。異なるIDを割り振ったデバイスに向けてコマンドを飛ばすことでハンドベル・ハコを制御し分けています。中心的な司令塔となるサーバも実体はスマホです。これらの演出にPCやクラウド上のサーバは使っておらずクローズドなネットワーク内にスマホとOpenWebBoardをつなげて実現しました。
ハコの中にはタイガースの衣装を着せたフォクすけを入れてありました。従来系世界観によるプレゼントの在り方です。
音楽や体験をそれぞれWoTの世界観で届けることをモチーフにした発表にしたつもりですが、発表会の制限時間がたいへん短かったこともあり意図を正確には伝えきれなかったかもしれないですね。
苦労した点ですが、なんといってもwifiです。Mozilla CTOの Andreas Gal氏も講評で仰っていましたように、現場は2.4GHz帯の無線が入り乱れておりさっぱり安定しません。舞台裏の壁際ぎりぎりまでAPを持ってきても不安定は変わらず。速度が遅いだけならまだしも切断されるのはデモの大敵でした。ハッカソンチーム毎に使用チャネルを寄せる工夫は取られていましたが観客席の方からもモバイルwifiの電波が多数飛んできていますので効果は薄かったようです。
あと、OpenWebBoardの仕様で苦労しました。入れたアプリを起動するには画面とマウスが不可欠なのです。USBで電源供給をするだけでOSが起動するのはいいのですがその後アプリを立ち上げるには画面+マウスにつながなければなりません。立ち上げたあと画面+マウスを外して仕掛け箱にセットする、という作業に気を使いました。 B2G_HOMESCREEN環境変数にアプリURLを設定してしまってオートスタートできるようにしようとトライしたのですがうまく行かず。mozTCPSocketやmozBluetoothを使用している箇所でパーミッションエラーが出てしまい起動できない現象に悩まされ時間内では解決できませんでした。ちゃんとCertifiedアプリとしてmanifestも書いたのですが・・。
最後に、KDDIやハッカソンチームのみなさま、おもしろい活動の場をありがとうございました。 これからもFx0・FirefoxOSでいろいろ作っていきましょう!