2015年3月17日、Firefox OSコミュニティが主催するFirefox OS勉強会が開催された。今回の勉強会では、スマホ以外のデバイスでのFirefox OS活用例などが紹介された。その模様を紹介したい。

組み込み向けのFirefox OSとWebAPI

図1 本間雅史氏

1つめのセッションは、本間雅史氏による、GPIOやI2Cなどの組み込み向けインターフェイスを操作するWebAPIとそのFirefox OSへの実装や標準化である。

まずは、WoT(Web of Things)について再確認を行った。すでにIoT(Internet of Things)という言葉は普及しつつある。インターネットにIT関連機器(PCやプリンタなど)以外のモノを接続し、モノにあるセンサーからその状態をインターネットを経由して情報を収集する、さらにモノをコントロールすることで、より快適な生活を実現することだ。

では、WoTと何が違うのか? 本間氏は、IoTはアプリからモノへ直接繋がる。そのためにC言語などが使われる。それに対しWoTでは、アプリからブラウザを介して繋がる、つまりすべてJavaScriptで記述されるようになると説明する。IoTで繋がるモノに関する議論で、複雑な動作が可能なSmartエンドポイントと単純な動作しかできないDumbエンドポイントのどちらがよいかがある。本間氏は、両極端で考えることがいけない、その中間に位置するフォグコンピューティングという考えを紹介した。

図2 フォグコンピューティング

情報をフォグがいったん収拾し、ある程度の処理を行う。クラウドでは、フォグから送られた統計情報からより高度な判断を行うようになる。すでにCiscoなどから対応製品があるが、非常に高価である。そこで、フォグコンピューティングにFirefox OSを使うことを考えてみたとのことである。その理由であるが、他のエンジンと比較して、ハードウェアにアクセスするWeb APIがもっとも充実している点にあるという。

そして、必要となる点であるが、JavaScriptでハードウェアを制御しなければいけないことだ。ネットワーク経由については、すでに実装されている。しかし、ローカルでの制御はまだ可能ではない。

図3 ローカルで制御

そこで、新たなWeb API(JavaScript API)を実装しようという取り組みである。具体的には、Geckoにコードを追加することで行う。

図4 Firefoxを修正する

IoTで使われるインターフェイスには、GPIOやI2Cが使われるので、それに対応するAPIを作ることになる。具体的には、Web GPIO APIでは、アクセスオブジェクトを取得するnavigate.requestGPIOAccess()などが作られた。Web I2C APIは検討中であるが、同様な実装が検討されている。将来であるが、V8やTridentでもWoTが利用可能になる必要がある、つまり標準化は求められる。そこで、Web GPIOに関しては、W3Cのコミュニティグループとして、仕様の検討を進めているところである。

また、議論が進められている1つに、Promiseにするか戻り値にするかなどがある。非同期処理、ネストの深さなどが、相反する結果となっている。

図5 議論の例

Promiseの方が、同じ処理でも長くなっているのがわかる。現時点では、Promiseを採用する方向でまとまりつつあるとのことだ。