Androidアプリと現実世界のハードウェアを繋ぐ開発は、時としてレガシーで泥臭い作業を伴います。
本セッションでは店舗などで使われるUSBサーマルプリンタの制御を題材に低レイヤのハードウェア通信を、Kotlinの言語機能とJetpack Composeを使ったモダンで宣言的な開発体験に書き換える例を紹介します。
ハードウェア制御プロトコルの多くは、突き詰めるとバイト列とマジックナンバーで構成されるコマンド体系です。従来の素朴な実装では接続不良、シーケンスの考慮漏れといった不具合とその解析に多くの時間を費やすことになります。
実例としてレシートの印字に使われるESC/POSコマンドの仕様から始まり、それをKotlin DSLで型安全にラップする手法、最後にCompose UIでのオフスクリーンレンダリングを通じたテスタブルな環境づくりという現代のアプリ開発のテクニックを駆使します。