Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Vol.2 ⾞載Androidシステムの技術と開発チーム
Slide 2
Slide 2 text
Mobility Technologies Co., ● 何をつくっているのか ● 登壇者のご紹介 ● アプリの技術的な頑張りポイント ● ⾞載システムグループの推しポイント 本⽇の内容
Slide 3
Slide 3 text
Mobility Technologies Co., 何をつくっているのか
Slide 4
Slide 4 text
Mobility Technologies Co., タクシー配⾞サービスの簡単な構成図 クラウド タクシー ユーザーアプリ ・位置 ・配⾞可否 ・タクシー位置 ・到着予想時間
Slide 5
Slide 5 text
Mobility Technologies Co., タクシー配⾞サービスの簡単な構成図 クラウド タクシー ユーザーアプリ ・位置 ・配⾞可否 ・タクシー位置 ・到着予想時間
Slide 6
Slide 6 text
Mobility Technologies Co., 6 タクシー⾞内の機器(システム構成の⼀例) Wi-Fi Direct Taxi Meter Taxi Printer 後部座席 タブレット 乗務員端末 決済機 外部デバイス ⾞両信号 DRIVE CHART BLEロガー AWS IoT 4G
Slide 7
Slide 7 text
Mobility Technologies Co., 7 タクシー⾞内の機器(システム構成の⼀例) Wi-Fi Direct Taxi Meter Taxi Printer 後部座席 タブレット 乗務員端末 決済機 外部デバイス ⾞両信号 DRIVE CHART BLEロガー AWS IoT 4G
Slide 8
Slide 8 text
配⾞依頼 ➡ お迎えの流れ (乗務員端末視点)
Slide 9
Slide 9 text
Mobility Technologies Co., ユーザーアプリで配⾞依頼
Slide 10
Slide 10 text
Mobility Technologies Co., 配⾞依頼ダイアログ表⽰ 空⾞ 0円 空⾞ 迎⾞ 実⾞ ⽀払
Slide 11
Slide 11 text
Mobility Technologies Co., OKボタンタップで承諾 空⾞ 0円 空⾞ 迎⾞ 実⾞ ⽀払
Slide 12
Slide 12 text
Mobility Technologies Co., 迎⾞画⾯表⽰ 空⾞ 0円 空⾞ 迎⾞ 実⾞ ⽀払
Slide 13
Slide 13 text
Mobility Technologies Co., タクシーメーターの迎⾞ボタン押す 空⾞ 0円 空⾞ 迎⾞ 実⾞ ⽀払
Slide 14
Slide 14 text
Mobility Technologies Co., 迎⾞地へ移動開始 迎⾞ 310円 空⾞ 迎⾞ 実⾞ ⽀払
Slide 15
Slide 15 text
Mobility Technologies Co., 迎⾞地へ到着 迎⾞ 310円 空⾞ 迎⾞ 実⾞ ⽀払
Slide 16
Slide 16 text
Mobility Technologies Co., タクシーメーターの実⾞ボタンを押す 迎⾞ 310円 空⾞ 迎⾞ 実⾞ ⽀払
Slide 17
Slide 17 text
Mobility Technologies Co., 実⾞画⾯表⽰ 実⾞ 1000円 空⾞ 迎⾞ 実⾞ ⽀払
Slide 18
Slide 18 text
Mobility Technologies Co., 登壇者のご紹介
Slide 19
Slide 19 text
Mobility Technologies Co., 三輪 智也(@tomoya0x00) 主な呼ばれ方:みわさん ● 旧MOV車載システムのリーダー役 ● 組み込み(カーナビなど)業界の出身 ● 低レイヤー(シリアル通信、BLE)得意 宮部 慎太郎(@shinmiy) 主な呼ばれ方:しんみーさん ● 決済機周りのプロ ● 「Androidエンジニアとは…?」が口癖 ● 最近はFlutterをゴリゴリ
Slide 20
Slide 20 text
Mobility Technologies Co., 空中 清高(@soranakk) 主な呼ばれ方:そらなかさん なかし ● 専用端末向けAndroidアプリ開発を8年 ● Androidは下回りが得意 ● 「空中る」という言葉を生み出した 本戸 裕理(@yurihondo) 主な呼ばれ方:ほんどさん どし ● 開発全般担当、スマホ型大体わかるマン ● 弊社採用サイトに笑顔の写真が掲載 ● 次男が爆誕(おめでとう!)
Slide 21
Slide 21 text
Mobility Technologies Co., 安齋 祐紀(@off2white) 主な呼ばれ方:あんざいさん ● タブレット端末のリーダー役 ● 電話配車室との連携やナビ周り ● Androidエンジニアとは一体…と悩む勢 松延 萌菜(@nb_matsu) 主な呼ばれ方:まつのぶさん ● エンジニア採用のリーダー ● 最近、スコッチブームがきている ● 視聴者を代弁する質問役
Slide 22
Slide 22 text
Mobility Technologies Co., アプリの 技術的な頑張りポイント
Slide 23
Slide 23 text
Mobility Technologies Co., 社内のSlackで募集しました
Slide 24
Slide 24 text
Mobility Technologies Co.,
Slide 25
Slide 25 text
Kioskアプリ、タクシーメーターとの通信、BLEロガーのFWアップデート 機能、WiFi-Direct + VpnServiceで後席タブレットの通信費⽤削減、 multi module、ステートマシン、Feature Flagsの導⼊、Fluxに挑戦して 失敗、signature権限でむりやりOSのアレコレを変える、決済機連携、 gRPC、SIM制限を回避するために分散ダウンロード、JCenter問題、リモ ートログ収集、地図SDKまわり、端末在庫の問題、複数アプリでソースを 共有しているキメラな構成、端末メーカーとやりとりして独⾃Broadcast ⾶ばしてもらう、画像データの形式でNV21とかNV12とかの判定とか変換、 普通のカーナビのルートとタクシーの乗務員さんが求めるルートが違う、 BLEロガーのキャラスタリスティックが新規追加される度に再ペアしなく ても検出する技術、⾳波ビーコン、AWS IoTのフォーク、etc..
Slide 26
Slide 26 text
Mobility Technologies Co., 今回は下記に絞ってお話しします ● Feature Flagsの導⼊ ● タクシーメーターとの通信と決済機連携 ● WiFi-Direct + VpnServiceで後席タブレットの通信費⽤削減
Slide 27
Slide 27 text
Feature Flagsの導⼊
Slide 28
Slide 28 text
Mobility Technologies Co., ● メンバーが多いこともあり、プルリクのコンフリクトが発⽣ ● releaseブランチとのコンフリクトも多発 ● しかし、開発途中の機能をmasterブランチにマージは避けたい ○ 開発途中のものが世に出てしまう可能性 Feature Flags導⼊の理由と効果 ● Feature Flagsを参照して、デフォルトでは動作しないように実装 ● ⼩さくこまめにmasterへマージし、コンフリクトはほぼゼロに
Slide 29
Slide 29 text
Mobility Technologies Co., // 開発中機能のON/OFFチェッカー interface AvailableExperimentsChecker { fun isEnabled(feature: ExperimentalFeature): Boolean } // 開発中かつ、明示的にON/OFFを切り替えるべき機能の一覧 enum ExperimentalFeature { NEW_FUNCTION } Feature Flagsとは
Slide 30
Slide 30 text
Mobility Technologies Co., HyperionでON/OFFを切り替え NEW_FUNCTION
Slide 31
Slide 31 text
雑談︓ Feature Flagsについて
Slide 32
Slide 32 text
タクシーメーターとの通信
Slide 33
Slide 33 text
What is タクシーメーター︖
Slide 34
Slide 34 text
Mobility Technologies Co., BLEロガー What is タクシーメーター︖ BLE 34 タクシーメーター 乗務員端末 決済機
Slide 35
Slide 35 text
Mobility Technologies Co., 決済機 乗務員端末 BLEロガー What is タクシーメーター︖ BLE 35 タクシーメーター
Slide 36
Slide 36 text
Mobility Technologies Co., What is タクシーメーター︖ ざっくりいうと計量器 ■ 運賃計算 ■ 営業状態管理 ■ バックオフィス作業 タクシー業務システムの中核
Slide 37
Slide 37 text
Mobility Technologies Co., 誤⾃宅の様⼦
Slide 38
Slide 38 text
メーターとのコミュニケーション
Slide 39
Slide 39 text
Mobility Technologies Co., 決済機 BLEロガー メーターとのコミュニケーション BLE 39 タクシーメーター 乗務員端末
Slide 40
Slide 40 text
Mobility Technologies Co., 決済機 BLEロガー メーターとのコミュニケーション BLE 40 タクシーメーター 乗務員端末 ● メーターを抽象化 ● BLEでコミュニケーション ● シリアル通信
Slide 41
Slide 41 text
⼀般的なAndroider⽈く シリアル通信のクセがすごい...!!!
Slide 42
Slide 42 text
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仕様書の例
Slide 43
Slide 43 text
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
Slide 44
Slide 44 text
Mobility Technologies Co., ⼆進化⼗進表現のこと BCDとは︖ ⼗進数 BCD 3 0000_0011 12 0001_0010 0_ 3 1_ 2
Slide 45
Slide 45 text
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桁 番号 ※リトルエンディアン とある仕様書の例 ※ビッグエンディアン
Slide 46
Slide 46 text
Mobility Technologies Co., ByteOrderとは︖ バイト配列、 Headから読むか︖ Tailから読むか︖
Slide 47
Slide 47 text
Mobility Technologies Co., ByteOrderとは︖ 0000_001 1 0000_001 1 0000_001 1 0000_001 1 リトルエンディアン ビックエンディアン
Slide 48
Slide 48 text
まさかKotlinで ビット演算することになるとは...
Slide 49
Slide 49 text
Mobility Technologies Co., BLEロガー メーターとの通信 BLE 49 タクシーメーター 乗務員端末 決済機
Slide 50
Slide 50 text
Mobility Technologies Co., BLEロガー メーターとの通信 BLE 50 タクシーメーター 乗務員端末 決済機 ● 控えの印刷 ● 決済の詳細情報
Slide 51
Slide 51 text
双⽅向通信
Slide 52
Slide 52 text
Mobility Technologies Co., BLEロガー 双⽅向の通信 BLE 52 タクシーメーター 乗務員端末 決済機 ● 控えの印刷 -> Shift JIS?? ● 決済の詳細情報
Slide 53
Slide 53 text
Mobility Technologies Co., ⽂字コードとは ■ エンコード ■ ⽂字集合
Slide 54
Slide 54 text
雑談︓ タクシーメーターとの通信
Slide 55
Slide 55 text
WiFi-Direct + VpnServiceで 後席タブレットの通信費⽤削減
Slide 56
Slide 56 text
Mobility Technologies Co., 56 タクシー⾞内の機器(システム構成の⼀例) Wi-Fi Direct Taxi Meter Taxi Printer 後部座席 タブレット 乗務員端末 決済機 外部デバイス ⾞両信号 DRIVE CHART BLEロガー AWS IoT 4G
Slide 57
Slide 57 text
Mobility Technologies Co.,
Slide 58
Slide 58 text
Mobility Technologies Co.,
Slide 59
Slide 59 text
WiFi Direct 全体図 VpnService SIM有 SIM無 Socket
Slide 60
Slide 60 text
HTTPってどうやって動いてるの?🙄 問題1
Slide 61
Slide 61 text
そもそもHTTPの仕組みを知らない → 流れてくるbyteデータを解釈できない → Packetに分割できない (例)WiFi Directで受け取った829byteに 何個のPacketデータが入ってる? 問題1
Slide 62
Slide 62 text
VpnService Packetが丸ごと届く JavaのSocket通信 PacketのHeaderが除かれて届く 問題2
Slide 63
Slide 63 text
VpnService vs Socket VpnService IP Packet IP Header TCP Header TCP Payload
Slide 64
Slide 64 text
VpnService vs Socket Socket TCP Payload
Slide 65
Slide 65 text
JavaのSocketはHeaderの処理を 内部で行ってくれる VpnServiceはHeaderも含め、すべての Packetを入出力する → 無いものは作るしかない Headerが無い
Slide 66
Slide 66 text
VpnService SIM無 WiFi Direct IP Header TCP Header TCP Payload IP Header TCP Header TCP Payload
Slide 67
Slide 67 text
WiFi Direct SIM有 IP Header TCP Header TCP Payload TCP Payload Socket
Slide 68
Slide 68 text
WiFi Direct IP Header TCP Header TCP Payload IP Header TCP Header TCP Payload Socket TCP Payload
Slide 69
Slide 69 text
VpnService SIM無 WiFi Direct IP Header TCP Header TCP Payload IP Header TCP Header TCP Payload
Slide 70
Slide 70 text
よっしゃ、もう完成したね?😙
Slide 71
Slide 71 text
HTTP通信、パケット、Socket、IPヘッダー、チェックサム、DNS、 UDP、TCP、3 way handshake、SYN、ACK、応答確認、Sequence Number、Acknowledgement Number、1の補数、擬似ヘッダー、MTU 設定、Window Size、IPv4、IPv6、Socketのゾンビ化問題、etc..
Slide 72
Slide 72 text
雑談︓ WiFi-Direct + VpnServiceで 後席タブレットの通信費⽤削減
Slide 73
Slide 73 text
Mobility Technologies Co., ⾞載システムグループの 推しポイント
Slide 74
Slide 74 text
Mobility Technologies Co., ● Android的に新しい技術をどんどん取り⼊れるので ⾃然とスキルアップしていくよ(皆んな教えたがりだよ) ● 専⽤のAndroid端末作っているよ ○ 後席タブレット、乗務員タブレット、乗務員スマホ ● 最近やった、普通のAndroidアプリではやらないことはな〜に︖ ● アプリ統合の話 ● PdM(プロダクトマネージャー)との関係性 ⾞載システムグループの推しポイント(TOP5)
Slide 75
Slide 75 text
Mobility Technologies Co., ● Android的に新しい技術をどんどん取り⼊れるので ⾃然とスキルアップしていくよ(皆んな教えたがりだよ) ● 専⽤のAndroid端末作っているよ ○ 後席タブレット、乗務員タブレット、乗務員スマホ ● 最近やった、普通のAndroidアプリではやらないことはな〜に︖ ● アプリ統合の話 ● PdM(プロダクトマネージャー)との関係性 ⾞載システムグループの推しポイント(TOP5)
Slide 76
Slide 76 text
Mobility Technologies Co., ● Android的に新しい技術をどんどん取り⼊れるので ⾃然とスキルアップしていくよ(皆んな教えたがりだよ) ● 専⽤のAndroid端末作っているよ ○ 後席タブレット, 乗務員タブレット, 乗務員スマホ ● 最近やった、普通のAndroidアプリではやらないことはな〜に︖ ● アプリ統合の話 ● PdM(プロダクトマネージャー)との関係性 ⾞載システムグループの推しポイント(TOP5)
Slide 77
Slide 77 text
Mobility Technologies Co., 普通のAndroidエンジニアが受けた、数々のカルチャーショック
Slide 78
Slide 78 text
採⽤情報︓ https://hrmos.co/pages/mo-t/jobs アンケート回答にご協⼒お願いいたします→ ※回答頂いた⽅の中から、抽選でGOクーポン¥2,000プレゼント︕ ご視聴ありがとうございました 次回予告︓ Vol.3 多彩な機能を実現しているiOSアプリの開発現場