オープンソースプロジェクトCHIRIMEN Open Hardwareに参加して:B2G(OSS版FirefoxOS)が動 く小型ボードコンピュータ 「CHIRIMEN」の開発
はじめまして。KDDI研究所でWeb関連の技術調査・開発に従事している関口です。私は今、Webという切り口でスマートフォンやその周辺環境の未来を模索し、CHIRIMEN Open Hardwareというオープンソースプロジェクトに参加しています。
CHIRIMEN Open Hardwareプロジェクトとは?
CHIRIMEN Open Hardwareプロジェクトとは、Mozilla Japanによって発足されたMozilla Factoryという活動の中から登場したプロジェクトです。このプロジェクトでは、近年IoT/WoTといった言葉で注目を集めているように、様々なモノがネットワークで繋がっていく未来の社会において、「Webのあるべき姿」を考え、作り上げていくことを目的としています。
プロジェクトの詳しい説明に入る前に、IoT/WoTについて触れておきましょう。IoT(Internet of Things)とは、モノのインターネットと言われるとおり、モノ同士がインターネットを通じて相互に情報をやり取りすることを可能にする技術の総称です。WoT(Web of Things)とはIoTに更にアプリケーションの機能を付加し、モノ同士を連携して制御するための仕組みやそれによって実現できるサービスを指して使われています。WoTの浸透した世界では、PCやタブレット、スマートフォンといったいわゆるスマートデバイスの中だけでなく、エアコン、照明、車や各種センサなど身の回りに分散しているあらゆるモノを連携させ、より私達が暮らしている実世界に近いところでサービスが形作られていくことでしょう。そんなWoTの世界の実現のため、様々なデバイスをWeb技術で制御できるようにする仕組みについて盛んに議論が行われています。その中で提案されている案の一つが、家電などの組み込み機器とスマートデバイスの間にゲートウェイとなるサーバーを設けて、Webのインターフェースを形作ろうというものです。こうすることで、組み込み機器側はWebに解放するインターフェースを用意しておけばよく、スマートデバイス側も解放されたインターフェースを利用してアプリケーションを作ることができるので、現在注目を集めています。(図1左)
しかし、この方法では機器内部の制御にWebが踏み込むことはできません。確かに、スイッチのオンオフのような簡単な制御にWebブラウザが動作する環境はオーバースペックであるし、低消費電力が求められる環境などを考えるとそれは現実的な方法ではありますが、コンピュータの進歩の速さを考えると、組み込み機器で用いられるようなマイクロコンピュータに当然のようにフルブラウザが搭載される世界もそう遠くないとも思えます。プログラムの実行環境としてブラウザが使われ、あらゆるモノをWebという共通のインターフェース、共通のプログラムによって自由に制御することができる世界では、Webページのソースコードが自由に閲覧・利用できるのと同様に、自由にプログラムを改変して新しいモノを作り出していくことができるようになると考えられます。CHIRIMEN Open HardwareではそんなWoTの姿を目指したいと考えています。(図1右)そういった意味ではCHIRIMEN Open Hardwareで目指すWoTは、Webのアプリケーションとしての側面よりむしろWebのオープン性という側面に着目していると言えるかもしれません。
図1WoTの姿
そんなWoTの世界を実現するため、私たちは今、WoTデバイスの開発環境としてBoot to Gecko(B2G)搭載の小型ボードコンピュータ「CHIRIMEN」の開発を進めています。B2Gとは、FirefoxOSのブランド使用許諾前の オープンソースソフトウェア(OSS)版FirefoxOSのことです。コード的には同じものとなります。
WoTデバイス開発環境CHIRIMEN
図2B2G搭載の小型ボードコンピュータ「CHIRIMEN」
上の写真(図2)は現在開発中のボードコンピュータ「CHIRIMEN」です。CHIRIMENという名前は2本の糸を織り込んで作る織物のように、「Web」という糸と「モノ」という糸を織り込んで新しいものを作っていきたい、そして日本発のプロジェクトであるという点からCHIRIMEN(縮緬)と名付けられています。その名の示す通り、様々なモノ、デバイスをすべてWebアプリケーション(HTML,Javascript,CSS)から制御することが可能になっています。
秋葉原などで売っているようなLEDやセンサなどの電子デバイスは通常GPIOやI2CといったLowレベルなインターフェースを通して送られる電気信号によって制御されます。CHIRIMENはこういったGPIO,I2Cといったデバイス制御のための端子を備えており、それらをWebアプリケーションから制御するためのAPIが用意されています。これらのAPIはWebGPIOAPI、WebI2CAPIという形でW3Cに提案していく予定であり、現在Browsers and Robotics Community Groupというグループを作って議論を行いながら仕様書の作成を進めています。Web標準の世界では、標準化よりも実装が先行する場合が常ですので、私たちもB2G上でこれらのAPIを実装してCHIRIMENに組み込 んでいるというわけです。実際にCHIRIMENを使うとどのようにデバイスを制御できるのか、サンプルプログラムを元に紹介したいと思います。まずはこちらのプログラムをご覧ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <script> window.addEventListener("load", function() { var btnEle = document.getElementById("btn"); btnEle.onclick = function(){ document.body.style.background = "#000000"; }; }); </script> </head> <body> <button id="btn">Change DisplayColor</button> </body> </html> |
Webページを作ったことのある人ならすぐに理解できると思いますが、こちらはWebページ上のボタンを押したら背景色が変わるというシンプルなプログラムです。続いてこちらのプログラムをご覧ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <script src="geckoGpio.js"></script> <script> window.addEventListener("load", function() { Promise.all([ navigator.setGpioPort(198,"in"), navigator.setGpioPort(199,"out"), ]).then(ports => { var btnPort=ports[0],ledPort=ports[1]; btnPort.onchange = function(value){ ledPort.write(1); }; }); }); </script> </head> <body> </body> </html> |
こちらはCHIRIMEN上で物理ボタンデバイスを押したらLEDを点灯させるというプログラムです。ライブラリの読み込みやGPIOポートの初期化なども行っていますが、これらは決まり文句の部分で、重要なのは13~15行目の部分です。先ほどのWebページのプログラムとほぼ同様のコードで、物理ボタンの入力に設定したポートの値が変化したら(物理ボタンを押したら)LEDの出力に設定したポートに1を出力する(LEDを点灯する)、という機能を実現しています。
このようにCHIRIMEN上ではディスプレイ上のボタンや色などのバーチャル部品と物理的なボタンやLEDなどのフィジカル部品を同様に扱うことができます。まさに、Webページを書くようにデバイス制御プログラムを作ることができるようになります。結果として、WebデベロッパーやWebデザイナーといった、これまで組み込みの世界に入ってこれなかったような人たちでも気軽にデバイス開発に参加することができるようになり、これまでに無いような面白いデバイスやサービスが登場してくると期待しています。
オープンコミュニティでの活動を通して
冒頭で言ったように、CHIRIMEN Open Hardwareプロジェクトはオープンソースのプロジェクトです。私は主に「CHIRIMEN」へのB2Gのポーティング作業やWebGPIO、WebI2Cの実装、各種展示会に向けたデモの開発といったソ フトウェア開発の部分に関わっていますが、この他にも実に様々な方がプロジェクトに参加しています。大手メーカーのエンジニア、組み込みエンジニア、Web関連企業、大学教授、デザイナー、海外のスタートアップ、コミュニティ作りの専門家、中学、高校、大学生など、会社で仕事をしているだけでは触れ合えないような多種多様なバックグラウンドを持つ方々と意見交換をさせてもらっており、新鮮な刺激を受けることができています。また、コミュニティ活動を通して国内外の様々な展示会に参加したり、世界中の開発者と議論するといった貴重な経験をさせてもらっています。(図3)こういった新しいアイディアの獲得や経験の蓄積も、オープンコミュニティに参加することの大きなメリットの一つだと私は考えています。
図3コミュニティ活動例。左はMaker Faire 台北での出展の様子(写真奥でCHIRIMENを持っているのが私です。)、右はMozilla Japanオフィスで行われたWoTワークウィーク。
今後の予定
直近の予定としては、8月1,2日に行われるMakerFaire東京に出展を行う予定です。こちらではCHIRIMENの実物やデモをご覧頂けます。また、CHIRIMENの量産にあたってはクラウドファンディングサービスKickstarterに出品する計画もあるのでご注目下さい。プロジェクトの詳細やイベントの案内はCHIRIMEN Open HardwareのWebページやfacebookのコミュニティページ等でアナウンスしていきますので是非ウォッチしてみてください。もちろんコミュニティへの参加も大歓迎です。
カテゴリ | |
---|---|
タグ |