あんパン

こしあん派

Open Web Boardでなに作る?

これはFirefox OS Advent Calendar 21日目の記事です。昨日はにしむねあさんの「How HTML Injection Is Bad on Firefox OS」でした。

こんにちはこんにちは、id:masawadaです。本当はTwitterクライアントを作った話をしようと思ったのですが、諸般の事情によりもう少し時間がかかりそうです。なお、昨年のFirefox OS Advent CalendarでもVimをFirefox OSで動かしたいと思ったけど無理だった、みたいなことを書いていて結局やらなかったのでTwitterクライアントも作らない可能性があります。

ということで、今日はOpen Web Boardで作るなら何がいいのかなぁという話を真面目にします。コードも書いていません。

Open Web Board概要

いまさらOpen Web Boardについて解説されても... という方も多いと思いますが、一応解説しておきます。

Open Web BoardはKDDIが開発したFirefox OSが載っている開発ボードです。スペックは以下の通りです。

項目 バージョン等
Firefox OS 1.4
SoC RK3066 (Cortex-A9 Dual) 1.6GHz
System Memory 1GB RAM
Storage 8GB Flash
Video Out HDMI
USB 1x USB 2.0 host port
Power 1x micro USB port
WiFi 802.11b/g/n
Bluetooth 2.1(HFP/A2DP/AVRCP) / 4.0 GATT

参考:
Firefox OSベースの開発者向けクリエイティブプラットフォームを開発 | 2014年 | KDDI株式会社
KDDI Unveils Tiny BLE/Zigbee Development Board Running Mozilla Firefox OS

なお、GPIOはありません*1

いろいろなWebサイトでGluinというサービスと一緒に紹介されていますがこれらは全くの別モノで、Open Web BoardはOpen Web Board単体で動きます。

いまのところ購入することはできず、KDDI主催のハッカソン等に参加すると無償で貰うことができるデバイスになっています。

なに作る?

じゃあ何を作ったらいいのだろうかという話ですが、結論から言うと何らかのサイネージにするのが最適と考えています。

スペックを見ての通り外部と双方向に通信できるインターフェースはUSBかBluetooth、無線LANしかありません。そのため、おそらくOpen Web BoardでできるほとんどのことはRaspberry Piを用いれば簡単にできるのではと思います。

これに対してOpen Web Board(もとい、Firefox OSであること)の利点は

  • 上っ面が完全にHTML/CSSなのでそれなりにまともなGUIを作ることができる
    • Raspberry PiだとQtとかGTKとかでごにょごにょする必要がある
    • または、貧弱なブラウザで表示する必要がある
  • systemXHRとか使えばCORSの有無を気にせずにWeb上のAPIにアクセスできる
    • Raspberry PiだとNode.jsとかでサーバ建ててそれをプロキシにする必要がある
    • そもそもNode.jsとかその類いをいれるのも面倒
    • JSがサーバとクライアントに分かれてるのが冗長に感じられる*2
  • Firefox OSアプリは何も考えなくてもフルスクリーンで起動する

ということで

  • テレビに出力して使う
  • ちょいちょい外部と連携できる(Web上のAPIでも、GluinでもUSBでもBluetoothでも)

の2点が達成できるものだと良さそうです。特に一つ目は重要で、テレビに出力して綺麗なGUIが出てこないならそれRaspberry PiとかArduinoとかEdisonとかでいいじゃん、となると思います。最近INFOJARが話題ですが、これは制御部がOpen Web Boardと(多分USB経由でシリアル通信してる)Arduinoになっていて、手前の表示がAQUOS PADという構成で少し残念でした。企画は滅茶苦茶おもしろいのに、表示をOpen Web BoardでしないならそれArduino+WiFiシールドとかでいいじゃん!という気持ち。ちなみにOpen Web Board、多少フレームレートは落ちるもののしっかりYouTube再生ができて、USBスピーカーを挿すと音もでので結構優秀です。

実はFirefox OS Advent Calendar 8日目のひらとりさんの記事がまさにさきほどの条件を満たしていて、心からこれは面白いなーと思いつつ記事を読みました。もっとはてブ伸びろ!という感じ。

もちろんここまでやり込む必要はないと思います。アメッシュのページをただ表示するだけのアプリを作って表示するのもアリです。Twitterの新着を表示したり、RSSを読み込んでニュースの見出しを表示したり、その他いろいろと活用方法はあると思います。

今のところ

  • アメッシュの表示
  • 今日の天気情報
  • 電車の遅延 / 次に列車が発車する時刻の表示
  • 室内温度 / 湿度などの表示
  • カレンダー / タスクの表示 (Todoist APIで幸せになれそう)
  • エアコンの情報表示 (IRKitとかと連携したい)

などを考えています。モニタに関してもわざわざ23インチとか大きいものには刺さず、CENTURYが8インチのHDMIモニタを出しているのでこれを使うというのもよさそうです。

plus one HDMI 8インチマルチモニターLCD-8000VH [LCD-8000VH] | センチュリーダイレクト(CENTURY DIRECT)

今年の年末は久々に時間に余裕があるので、もう少し使い道を考えつつなにか書けたらなぁと思っています。

明日はHideki Sunaharaさんの記事です。

*1:中の人曰く、触れないで...とのこと

*2:ここは設計思想の問題だし、いろいろ反論あるかも