Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MoT Online Tech Talk Vol.2 - 車載Androidシステムの技術と開発チーム

MoT Online Tech Talk Vol.2 - 車載Androidシステムの技術と開発チーム

タクシー車内には、タクシーメーターや決済機などさまざまな車載機器があります。

今回はオンラインにて、それらの車載機器と連携するAndroidアプリの開発事情の話を、車載Androidアプリエンジニアチームのメンバーが語っていただきました。

YouTube
https://www.youtube.com/watch?v=E_Z6V-TIx-w

44a210d1299a727e9d601a47dfedeabf?s=128

MoT Tech Talk

March 09, 2021
Tweet

Transcript

  1. Vol.2 ⾞載Androidシステムの技術と開発チーム

  2. Mobility Technologies Co., • 何をつくっているのか • 登壇者のご紹介 • アプリの技術的な頑張りポイント •

    ⾞載システムグループの推しポイント 本⽇の内容
  3. Mobility Technologies Co., 何をつくっているのか

  4. Mobility Technologies Co., タクシー配⾞サービスの簡単な構成図 クラウド タクシー ユーザーアプリ ・位置 ・配⾞可否 ・タクシー位置

    ・到着予想時間
  5. Mobility Technologies Co., タクシー配⾞サービスの簡単な構成図 クラウド タクシー ユーザーアプリ ・位置 ・配⾞可否 ・タクシー位置

    ・到着予想時間
  6. Mobility Technologies Co., 6 タクシー⾞内の機器(システム構成の⼀例) Wi-Fi Direct Taxi Meter Taxi

    Printer 後部座席 タブレット 乗務員端末 決済機 外部デバイス ⾞両信号 DRIVE CHART BLEロガー AWS IoT 4G
  7. Mobility Technologies Co., 7 タクシー⾞内の機器(システム構成の⼀例) Wi-Fi Direct Taxi Meter Taxi

    Printer 後部座席 タブレット 乗務員端末 決済機 外部デバイス ⾞両信号 DRIVE CHART BLEロガー AWS IoT 4G
  8. 配⾞依頼 ➡ お迎えの流れ (乗務員端末視点)

  9. Mobility Technologies Co., ユーザーアプリで配⾞依頼

  10. Mobility Technologies Co., 配⾞依頼ダイアログ表⽰ 空⾞ 0円 空⾞ 迎⾞ 実⾞ ⽀払

  11. Mobility Technologies Co., OKボタンタップで承諾 空⾞ 0円 空⾞ 迎⾞ 実⾞ ⽀払

  12. Mobility Technologies Co., 迎⾞画⾯表⽰ 空⾞ 0円 空⾞ 迎⾞ 実⾞ ⽀払

  13. Mobility Technologies Co., タクシーメーターの迎⾞ボタン押す 空⾞ 0円 空⾞ 迎⾞ 実⾞ ⽀払

  14. Mobility Technologies Co., 迎⾞地へ移動開始 迎⾞ 310円 空⾞ 迎⾞ 実⾞ ⽀払

  15. Mobility Technologies Co., 迎⾞地へ到着 迎⾞ 310円 空⾞ 迎⾞ 実⾞ ⽀払

  16. Mobility Technologies Co., タクシーメーターの実⾞ボタンを押す 迎⾞ 310円 空⾞ 迎⾞ 実⾞ ⽀払

  17. Mobility Technologies Co., 実⾞画⾯表⽰ 実⾞ 1000円 空⾞ 迎⾞ 実⾞ ⽀払

  18. Mobility Technologies Co., 登壇者のご紹介

  19. Mobility Technologies Co., 三輪 智也(@tomoya0x00) 主な呼ばれ方:みわさん • 旧MOV車載システムのリーダー役 • 組み込み(カーナビなど)業界の出身

    • 低レイヤー(シリアル通信、BLE)得意 宮部 慎太郎(@shinmiy) 主な呼ばれ方:しんみーさん • 決済機周りのプロ • 「Androidエンジニアとは…?」が口癖 • 最近はFlutterをゴリゴリ
  20. Mobility Technologies Co., 空中 清高(@soranakk) 主な呼ばれ方:そらなかさん なかし • 専用端末向けAndroidアプリ開発を8年 •

    Androidは下回りが得意 • 「空中る」という言葉を生み出した 本戸 裕理(@yurihondo) 主な呼ばれ方:ほんどさん どし • 開発全般担当、スマホ型大体わかるマン • 弊社採用サイトに笑顔の写真が掲載 • 次男が爆誕(おめでとう!)
  21. Mobility Technologies Co., 安齋 祐紀(@off2white) 主な呼ばれ方:あんざいさん • タブレット端末のリーダー役 • 電話配車室との連携やナビ周り

    • Androidエンジニアとは一体…と悩む勢 松延 萌菜(@nb_matsu) 主な呼ばれ方:まつのぶさん • エンジニア採用のリーダー • 最近、スコッチブームがきている • 視聴者を代弁する質問役
  22. Mobility Technologies Co., アプリの 技術的な頑張りポイント

  23. Mobility Technologies Co., 社内のSlackで募集しました

  24. Mobility Technologies Co.,

  25. Kioskアプリ、タクシーメーターとの通信、BLEロガーのFWアップデート 機能、WiFi-Direct + VpnServiceで後席タブレットの通信費⽤削減、 multi module、ステートマシン、Feature Flagsの導⼊、Fluxに挑戦して 失敗、signature権限でむりやりOSのアレコレを変える、決済機連携、 gRPC、SIM制限を回避するために分散ダウンロード、JCenter問題、リモ ートログ収集、地図SDKまわり、端末在庫の問題、複数アプリでソースを

    共有しているキメラな構成、端末メーカーとやりとりして独⾃Broadcast ⾶ばしてもらう、画像データの形式でNV21とかNV12とかの判定とか変換、 普通のカーナビのルートとタクシーの乗務員さんが求めるルートが違う、 BLEロガーのキャラスタリスティックが新規追加される度に再ペアしなく ても検出する技術、⾳波ビーコン、AWS IoTのフォーク、etc..
  26. Mobility Technologies Co., 今回は下記に絞ってお話しします • Feature Flagsの導⼊ • タクシーメーターとの通信と決済機連携 •

    WiFi-Direct + VpnServiceで後席タブレットの通信費⽤削減
  27. Feature Flagsの導⼊

  28. Mobility Technologies Co., • メンバーが多いこともあり、プルリクのコンフリクトが発⽣ • releaseブランチとのコンフリクトも多発 • しかし、開発途中の機能をmasterブランチにマージは避けたい ◦

    開発途中のものが世に出てしまう可能性 Feature Flags導⼊の理由と効果 • Feature Flagsを参照して、デフォルトでは動作しないように実装 • ⼩さくこまめにmasterへマージし、コンフリクトはほぼゼロに
  29. Mobility Technologies Co., // 開発中機能のON/OFFチェッカー interface AvailableExperimentsChecker { fun isEnabled(feature:

    ExperimentalFeature): Boolean } // 開発中かつ、明示的にON/OFFを切り替えるべき機能の一覧 enum ExperimentalFeature { NEW_FUNCTION } Feature Flagsとは
  30. Mobility Technologies Co., HyperionでON/OFFを切り替え NEW_FUNCTION

  31. 雑談︓ Feature Flagsについて

  32. タクシーメーターとの通信

  33. What is タクシーメーター︖

  34. Mobility Technologies Co., BLEロガー What is タクシーメーター︖ BLE 34 タクシーメーター

    乗務員端末 決済機
  35. Mobility Technologies Co., 決済機 乗務員端末 BLEロガー What is タクシーメーター︖ BLE

    35 タクシーメーター
  36. Mobility Technologies Co., What is タクシーメーター︖ ざっくりいうと計量器 ▪ 運賃計算 ▪

    営業状態管理 ▪ バックオフィス作業 タクシー業務システムの中核
  37. Mobility Technologies Co., 誤⾃宅の様⼦

  38. メーターとのコミュニケーション

  39. Mobility Technologies Co., 決済機 BLEロガー メーターとのコミュニケーション BLE 39 タクシーメーター 乗務員端末

  40. Mobility Technologies Co., 決済機 BLEロガー メーターとのコミュニケーション BLE 40 タクシーメーター 乗務員端末

    • メーターを抽象化 • BLEでコミュニケーション • シリアル通信
  41. ⼀般的なAndroider⽈く シリアル通信のクセがすごい...!!!

  42. Mobility Technologies Co., メーターとのコミュニケーション No パラメーター バイト数 型 備考 1

    パラメーター1 1 BCD 00︓営業状態A 01:営業状態B 02:営業状態C 03:営業状態D 04:営業状態E 05:− 06:− 07:営業状態F 08:営業状態G ※ビッグエンディアン 2 パラメーター2 1 HEX 16進で8桁 3 パラメーター3 1 ASCII 7桁 番号 ※リトルエンディアン Android開発者とっては⼀般的なI/F仕様書の例
  43. Mobility Technologies Co., メーターとのコミュニケーション No パラメーター バイト数 型 備考 1

    パラメーター1 1 BCD 00︓営業状態A 01:営業状態B 02:営業状態C 03:営業状態D 04:営業状態E 05:− 06:− 07:営業状態F 08:営業状態G ※ビッグエンディアン 2 パラメーター2 1 HEX 16進で8桁 3 パラメーター3 1 ASCII 7桁 番号 ※リトルエンディアン Android開発者とっては⼀般的なI/F仕様書の例 BCD
  44. Mobility Technologies Co., ⼆進化⼗進表現のこと BCDとは︖ ⼗進数 BCD 3 0000_0011 12

    0001_0010 0_ 3 1_ 2
  45. Mobility Technologies Co., メーターとの通信 No パラメーター バイト数 型 備考 1

    パラメーター1 1 BCD 00︓営業状態A 01:営業状態B 02:営業状態C 03:営業状態D 04:営業状態E 05:− 06:− 07:営業状態F 08:営業状態G ※ビックエンディアン 2 パラメーター2 1 HEX 16進で8桁 3 パラメーター3 1 ASCII 7桁 番号 ※リトルエンディアン とある仕様書の例 ※ビッグエンディアン
  46. Mobility Technologies Co., ByteOrderとは︖ バイト配列、 Headから読むか︖ Tailから読むか︖

  47. Mobility Technologies Co., ByteOrderとは︖ 0000_001 1 0000_001 1 0000_001 1

    0000_001 1 リトルエンディアン ビックエンディアン
  48. まさかKotlinで ビット演算することになるとは...

  49. Mobility Technologies Co., BLEロガー メーターとの通信 BLE 49 タクシーメーター 乗務員端末 決済機

  50. Mobility Technologies Co., BLEロガー メーターとの通信 BLE 50 タクシーメーター 乗務員端末 決済機

    • 控えの印刷 • 決済の詳細情報
  51. 双⽅向通信

  52. Mobility Technologies Co., BLEロガー 双⽅向の通信 BLE 52 タクシーメーター 乗務員端末 決済機

    • 控えの印刷 -> Shift JIS?? • 決済の詳細情報
  53. Mobility Technologies Co., ⽂字コードとは ▪ エンコード ▪ ⽂字集合

  54. 雑談︓ タクシーメーターとの通信

  55. WiFi-Direct + VpnServiceで 後席タブレットの通信費⽤削減

  56. Mobility Technologies Co., 56 タクシー⾞内の機器(システム構成の⼀例) Wi-Fi Direct Taxi Meter Taxi

    Printer 後部座席 タブレット 乗務員端末 決済機 外部デバイス ⾞両信号 DRIVE CHART BLEロガー AWS IoT 4G
  57. Mobility Technologies Co.,

  58. Mobility Technologies Co.,

  59. WiFi Direct 全体図 VpnService SIM有 SIM無 Socket

  60. HTTPってどうやって動いてるの?🙄 問題1

  61. そもそもHTTPの仕組みを知らない → 流れてくるbyteデータを解釈できない → Packetに分割できない (例)WiFi Directで受け取った829byteに 何個のPacketデータが入ってる? 問題1

  62. VpnService Packetが丸ごと届く JavaのSocket通信 PacketのHeaderが除かれて届く 問題2

  63. VpnService vs Socket VpnService IP Packet IP Header TCP Header

    TCP Payload
  64. VpnService vs Socket Socket TCP Payload

  65. JavaのSocketはHeaderの処理を 内部で行ってくれる VpnServiceはHeaderも含め、すべての Packetを入出力する → 無いものは作るしかない Headerが無い

  66. VpnService SIM無 WiFi Direct IP Header TCP Header TCP Payload

    IP Header TCP Header TCP Payload
  67. WiFi Direct SIM有 IP Header TCP Header TCP Payload TCP

    Payload Socket
  68. WiFi Direct IP Header TCP Header TCP Payload IP Header

    TCP Header TCP Payload Socket TCP Payload
  69. VpnService SIM無 WiFi Direct IP Header TCP Header TCP Payload

    IP Header TCP Header TCP Payload
  70. よっしゃ、もう完成したね?😙

  71. HTTP通信、パケット、Socket、IPヘッダー、チェックサム、DNS、 UDP、TCP、3 way handshake、SYN、ACK、応答確認、Sequence Number、Acknowledgement Number、1の補数、擬似ヘッダー、MTU 設定、Window Size、IPv4、IPv6、Socketのゾンビ化問題、etc..

  72. 雑談︓ WiFi-Direct + VpnServiceで 後席タブレットの通信費⽤削減

  73. Mobility Technologies Co., ⾞載システムグループの 推しポイント

  74. Mobility Technologies Co., • Android的に新しい技術をどんどん取り⼊れるので ⾃然とスキルアップしていくよ(皆んな教えたがりだよ) • 専⽤のAndroid端末作っているよ ◦ 後席タブレット、乗務員タブレット、乗務員スマホ

    • 最近やった、普通のAndroidアプリではやらないことはな〜に︖ • アプリ統合の話 • PdM(プロダクトマネージャー)との関係性 ⾞載システムグループの推しポイント(TOP5)
  75. Mobility Technologies Co., • Android的に新しい技術をどんどん取り⼊れるので ⾃然とスキルアップしていくよ(皆んな教えたがりだよ) • 専⽤のAndroid端末作っているよ ◦ 後席タブレット、乗務員タブレット、乗務員スマホ

    • 最近やった、普通のAndroidアプリではやらないことはな〜に︖ • アプリ統合の話 • PdM(プロダクトマネージャー)との関係性 ⾞載システムグループの推しポイント(TOP5)
  76. Mobility Technologies Co., • Android的に新しい技術をどんどん取り⼊れるので ⾃然とスキルアップしていくよ(皆んな教えたがりだよ) • 専⽤のAndroid端末作っているよ ◦ 後席タブレット,

    乗務員タブレット, 乗務員スマホ • 最近やった、普通のAndroidアプリではやらないことはな〜に︖ • アプリ統合の話 • PdM(プロダクトマネージャー)との関係性 ⾞載システムグループの推しポイント(TOP5)
  77. Mobility Technologies Co., 普通のAndroidエンジニアが受けた、数々のカルチャーショック

  78. 採⽤情報︓ https://hrmos.co/pages/mo-t/jobs アンケート回答にご協⼒お願いいたします→ ※回答頂いた⽅の中から、抽選でGOクーポン¥2,000プレゼント︕ ご視聴ありがとうございました 次回予告︓ Vol.3 多彩な機能を実現しているiOSアプリの開発現場