ROCK
ROCKのコンセプト
ROCKはRover/RoboCar Open Console Kitの略称である。TriClopsの持つリソースを余すことなく使えるようにしたWebアプリの実装である。基本的なコンセプトは、RoboCarが持つ、各種のデバイスをWebアプリで網羅的に扱うにはどうすればいいか?の一つの答えだ。
ROCK前夜
老害が、Webアプリを最初に始めた時、Webと言うかHTMLと言うか、この辺りには元々Responsiveみがあるようなないような、そんな気がした。ROCKの画面を単一画面で構成しようとし、tableで区切ろうとするも、内容物で大きさが変わってしまう。その動きに随分と悩まされた…
ROCKの仕組み
上記の問題点を克服するためにサイズを固定した。単位として、600x300ピクセルのパネルを定義する。そのパネルにセンサやアクチュエータなどのデバイスが持つ機能を一つずつ割り当てる。これによりデバイスの動きとそれに伴う画面構成をカプセル化するわけだ。画面構成する時はそれを組み合わせる。パネルはデバイスの数だけあるので、システムを構成する時は、適宜パネルを取捨選択する。
- パネル
パネルのサイズは基本的には600x300ピクセルだが、カメラは1200x600となる。代表的なパネル例を以下に示す。
| CPUステータス | 環境系 | 赤外線リモコン |
|---|---|---|
![]() |
![]() |
![]() |
| CPU負荷/RAM容量/温度/電池残量 | 室温/湿度/気圧 | irMagician制御 |
- ファイル構成
ROCKでは一つのペインで以下の3個のファイルを使う。処理の規模に応じて、javascriptのファイルは増えることがある。
| 拡張子 | 役割 |
|---|---|
| xxx.html | 画面構成、一般的なWebでのレイアウトや要素を定義する |
| xxx.css | カスケードスタイルシート、Web要素のスタイルなどを定義する |
| xxx.js | javascriptファイル、そのページに動作が必要な時に用いる |
- サーバ連携
サーバの実装は大きく分けて2種類ある。
- 配信
ラズパイからの配信としてのサーバ、この用途にはexpressを使う。 - デバイスハンドリング
Web内で完結できない処理の場合(ROCKはデバイスを扱っているために大抵はこの場合だ)は、デバイスに対応したスクリプトを呼び出すためのhttpサーバやWebソケットのサーバを設定する。デバイスハンドラがpythonで書かれている場合はflaskが相性がいいし、Webソケットを使う場合は、上記のexpressの配信サーバに同居させることもある。
- 配信
ROCKのPros/Cons
-
Pros
まずはProsから見てみよう。まず、網羅性が挙げられる。必要な情報を取捨選択出来るのは、複数のデバイスを取り扱う場合に強みとなる。カプセル化により独立性が高くなり、一枚からでも動作可能だ。Webアプリのため、実行環境を選ばない。PCはもちろんだが、iPadやアンドロイドのゲームコンソールでも動作が可能だ。 -
Cons
Consは、そのDASH Board的な構造にある。どうしても大画面が必要になる(FHD:1920x1080以上を推奨)。全てのデバイスの情報を同一の面積で扱うので重要性の強弱を付けにくくなる。画面サイズが物理的に小さいデバイスだと取り扱いしにくい。


