JavaScriptで動作可能なデバイスたち
では、どんなデバイスがJavaScriptで動作するのでしょうか? JS Boardをいくつかご紹介していきます。
Arduino
Arduinoは初心者でも簡単に扱えるように設計されたオープンソースのマイコンボードです。
世界的に著名なハードウェアで、その使い方や利用方法などが非常に多くWeb上に掲載されています。 Arduinoのプログラミングは通常、C++ライクなArduino言語を使いますが、JavaScriptでプログラミングするためのライブラリがいくつか公開されています。
Johnny-FiveはFirmataプロトコルを使って通信し、JavaScriptのプログラムをArduinoで実行させるフレームワークです。 同様のフレームワークにCylonJSがあります。どちらもArduinoだけでなく多くのプラットフォームをサポートしています。
Edison
EdisonはIntelが開発したIoT向けの小さなコンピュータです。
Linuxが動作する小型高性能のコンピュータで、開発用言語にC、C++、Python、Node.js(JavaScript)がサポートされています。 EdisonのIOポートを制御するライブラリとしてmraaが公開されています。mraaのJavaScriptサンプルコードをのぞいてみると、Lチカ(LEDを点滅させる)サンプルコードが収録されているほか、SPIやUARTなどデバイス制御でよく使われるシリアル通信のサンプルコードを見ることができます。
Tessel
TesselはJavaScriptで動作するメインボードと専用のモジュール群からなる開発用ボードです。
メインボードは4つの専用ポートと1つの汎用ポートがからなり、Node.js互換のJavaScript実行環境を持っています。上記のArduino、Edisonと異なり、JavaScriptのみをサポートしています。
Tesselの特長はメインボードにワンタッチ接続できる専用のモジュールが販売されている点です。モジュールは加速度センサ、GPS、BLE、サーボコントローラなど様々あり、電子工作でよくある配線の知識がなくても取り付けができます。
センサーを接続したあと、プログラムで対象センサーのビルトインライブラリを読み込むだけでセンサー情報を取得できるようになります。Tesselでのプログラミングは次章で詳しく解説します。
Espruino
Espruinoは、Tesselと同じようにJavaScriptのみをサポートする小さなマイコンです。2013年にKickStarterで資金調達に成功し開発されました。
EspruinoはUSB経由でPCと接続し、転送されたJavaScriptコードを直接コンパイルして実行します。専用のIDEを備え、動作も軽快なのでカジュアルなプロトタイプ開発が可能です。
Espruinoは現時点で国内販売されておらず、adafruintなど海外の通販サイトから購入できます。また最近さらに小型の後継機 Espruino Picoの販売が開始されました。
WeIO
WeIOはWi-Fiチップを搭載したOpenWRT LinuxベースのSBC(Single Board Computer)でJavaScript、Pythonが動作します。
WeIOはJavaScriptだけでなくHTML5, CSSを利用してアプリケーションを開発でき、例えばJavaScriptでセンサーの値を取得し、HTML5で画面に表示するようなアプリケーションを開発することができます。
WebブラウザベースのIDEを搭載するなど、入手してすぐに開発ができるよう配慮されています。
Open Web Board
Open Web BoardはKDDI社が開発したFirefox OSベースの開発用ボードです。
HDMI、USBをサポートしており、ディスプレイやマウスを接続することでボード上で開発できるほか、カメラ、オーディオ機器などをUSBで接続することが可能です。
いままで紹介したデバイス達のようなセンサーとシリアル接続するための汎用IOはサポートしていませんが、BLE(Bluetooth Low Energy)をサポートしているのでBLE対応センサーと通信して利用することが可能です。
Firefox OSベースなので、Firefox OSスマートフォンと同じWeb標準技術を利用してアプリケーションを開発することができます。
CHIRIMEN
CHIRIMENはMozOpenHardプロジェクトで開発されているBoot to Gecko(Firefox OSのオープンソース版)ベースの開発用ボードです。2015年11月時点ではまだ発売されていません。
CHRIMENには汎用IOポートが装備され、EdisonやTesselなどと同じようにいろいろなセンサーを接続することができます。
I2Cによるシリアル通信をサポートしており、UART、SPIなどのピンも搭載しているため多くのセンサー機器と通信することが可能なようです。