この四か月、装置をひとつずつ繋いできた。
2月は GUI のないチップだった。WeAct STM32H723 を USB で挿し、ボード自身に画面定義を差し出させた。3月は三社の計測器を一枚の画面に並べた。4月はドライブレコーダーから映像に触れる道具そのものを無くした。5月は温室のセンサーを差し替えても規則が変わらないようにした。
毎月ひとつ作れば良い話は増える。それが本当にひとつのものなのか、似た顔の四つなのかは分からないままだ。 そこで今月は新しい装置を作らず、これまで作ったものを数えた。
数え方
バージョン番号を突き合わせても証拠にならない。バージョンは手で上げる数字で、同じ番号のまま乖離した複製はありふれている。
だから 実際に画面を描き、保持している三つのファイルのバイトを比べた。
RENDERER="lib/src/renderer/renderer.dart"
FACTORY="lib/src/widgets/widget_factory.dart"
STATE="lib/src/state/state_manager.dart"
各サンプルは自分の中にランタイムをベンダリングして抱えている。単体でダウンロードして動かせる必要があるからだ。つまり複製が二十七部あり、乖離する機会も二十七回あった。
結果
sample version renderer widget_factory state_manager
bench-instruments 0.5.1 5d4989b6a199 fb156b4a17be 850341b1e8a3
board-over-serial 0.5.1 5d4989b6a199 fb156b4a17be 850341b1e8a3
booking-slots 0.5.1 5d4989b6a199 fb156b4a17be 850341b1e8a3
clinic-flow 0.5.1 5d4989b6a199 fb156b4a17be 850341b1e8a3
club-dues 0.5.1 5d4989b6a199 fb156b4a17be 850341b1e8a3
dashcam-boundary 0.5.1 5d4989b6a199 fb156b4a17be 850341b1e8a3
...
taxi-dashboard 0.5.1 5d4989b6a199 fb156b4a17be 850341b1e8a3
two-shops 0.5.1 5d4989b6a199 fb156b4a17be 850341b1e8a3
waiting-line 0.5.1 5d4989b6a199 fb156b4a17be 850341b1e8a3
27 copies of the runtime · renderer, widget_factory and state_manager
identical byte for byte · 0.5.1
一行も離れていない。
ところが背後のものは何ひとつ似ていない
この突き合わせに意味があるためには、背後の装置が互いに違っていなければならない。 全部同じ種類なら、画面が同じなのは当たり前だ。
sample device backing
bench-instruments c-sim instruments/instruments.c
board-over-serial hardware STM32H723 over USB serial, ESP32 over Wi-Fi TCP
booking-slots dart server process
greenhouse-independent c-sim greenhouse_bus/greenhouse_bus.c
lcd-hmi c-sim panel_firmware/panel_firmware.c
pos-kiosk-kds c-sim terminal_sim/terminal_sim.c
taxi-dashboard c-sim vehicle_bus/vehicle_bus.c
三種類だ。 実機のボード(USB シリアルと Wi-Fi TCP の両方)、C で書いたファームウェア・バスのシミュレータが五つ、そして Dart のサーバー。
検証がこれを明示的に守っている — 種類が三つ未満なら失敗し、実機ハードウェアが一覧に無くても失敗する。
[ "$NKIND" -ge 3 ] || { echo " only $NKIND kind(s) of device"; exit 1; }
grep -q "hardware STM32H723" "$S" || { echo " no real hardware in the corpus"; exit 1; }