x86/x64 ARM (が多い) n CPUアーキテクチャとは主に2種類ある n x86/x64 : サーバ、パソコン n ARM : IoTデバイス、スマートフォン n 難しい箇所 n MacOSやクラウドの仮想マシンでコンパイルしたバイナリは動かない n →クロスコンパイルが必要 n どうやってクロスコンパイルするか n Go⾔語やRustが開発しやすい n →JapanTaxiドライブレコーダではメモリ管理に厳格なRust⾔語を採⽤
気にしたこと無い。 磁気ディスクやSSDの容量は 100 Gbyte以上ある。 フラッシュディスクは16Gbyte〜 64Gbyte程度 n 難しい箇所 n プログラムのコンパイル後のサイズを気にする必要がある n ライブラリは潤沢には使えない n →他のモジュールと同じライブラリを使う n 開発⾔語は複数使えない n →Rust⾔語のみ
n サーバ側でどこまで処理したかを管理し、再接続時にレジュームできるようにする n ハマった箇所 n 無線通信が⼲渉する n Wifiの2.4GHz帯の電波は、他のwifi機器やbluetooth機器と⼲渉する n →デバイス間のチャンネル調整が必要 n 無線電波が弱い n →天井がないと電波が反射が少ない ネットワークは切れることがある 9 Webの場合 IoTデバイスの場合 通信品質 安定 たまにパケットが落ちるぐらい 不安定 場所によって切れる
n エンジンがオンの場合はよいが、オフの場合はバッテリーの電⼒を⽤いた動作になる n ⻑時間の起動はバッテリーあがりを引き起こす可能性がある n ⾞との調整が必要 n 最⼤起動時間を決めて、それ以内に処理を終わらせるようにする Webの場合 IoTデバイスの場合 消費電⼒ え?なんですかそれ? 省電⼒を⼼がける。 起動時間を気にする。
n デバイス側がオンラインになったときに、アップロードプログラムを確認し、あれば⾃ ⾝を更新する仕組み n すべてのモジュール更新がOTAでできるわけではない n インストールメディアをいれたSDカードを持ってタクシー⾞両に⾏き、SDカードをド ライブレコーダに指してインストール作業が必要 n 数百台の作業になることもあり、⼈海戦術となる アップデートは⼀⼤イベント 14 Webの場合 IoTデバイスの場合 デプロイの⽅法 git pull ポチー OTA (Over The Air) or ⼈海戦術