JapanTaxiを支えるIoT技術の今

大林直樹 氏(以下、大林):JapanTaxiの大林と申します。ちょっとタイトルを変えてしまったのですが、「タクシーの今 レガシーからモダンへ」というタイトルで話をさせていただきます。

普段はAndroidエンジニアをしていて、JapanTaxiタブレットという、お客様の目の前の後部座席に付いているQRコード決済など決済機能の付いたAndroidアプリの開発を担当しています。最近はQRコード決済の導入をやっていました。

ざっくり「どんな会社なの?」ということを説明させていただきます。

「移動で人を幸せに。」を掲げてモビリティを変えていこうということでやっています。去年はGoogle Playのベストアプリとして「JapanTaxi」アプリが選ばれています。みなさんはこちらは詳しいかなと思いますが、今日はアプリではなく、タクシー車内の車載機の話をさせてただきます。

タクシーというと、古い、レガシーなイメージがありますが「最近はいろんな車載機を導入してかなりモダンになっているんだぞ」という話です。いろいろな車載機があり、どうやって連動して1つの情報を伝えあっているのか、その技術について簡単に話をさせていただき、具体的にどういった情報を流しているのかについても紹介させていただきます。

私事ですが、この業界に入ってまだ3年ぐらいなので、詳しい話と言うよりも「こういう技術を使っているよ」とか、あとは「こういうことを考えてIoTの技術を使って開発をしているよ」ということを伝えていきます。

タクシーの中で活躍する車載機たち

タクシーの車載機ということで、今はこれだけ積まれています。

ドライブレコーダーから始まって、タクシーメーターまではわかると思いますが、真ん中にあるJapanTaxi DRIVER'Sというのは、お客様の「JapanTaxi」アプリから注文がとんできて乗務員さんが迎えに行くためのナビだったり、そういったものを表示するものです。

その他に、後部座席にはJapanTaxiタブレットと呼ばれている、決済ができて広告が流れるタブレットがあります。

先に話してしまいますが、これらを1つにするためにこの小さくて黒いものがあります。BLEと呼ばれていて、Bluetooth Low Energyを使っているんですけど、タクシーメーターの情報をJapanTaxiタブレット側に飛ばして表示したり、連動させてDRIVER'S側にも表示させるといった役割もしている黒くて小さい中継器があります。

現在は実際にこれだけの機械が車載機として積まれていて、昔のように古めかしい決済器があったり無線機があったりという感じではなく、Androidアプリがガンガン積まれていてBluetoothが飛んでる。タクシーの車内はそういった世界になっています。

車載機の無線接続に使われる技術

もう少し詳しく説明をすると、JapanTaxiタブレットはタクシーに乗られる方はご存知かもしれませんが、後部座席のところについていて、お客様が乗ると広告が配信されたり、降りるときにはクレジットカード決済や交通系IC、QRコード決済ができるようなアプリを積んだAndroidの端末になっています。

あとは、乗務員席側にもDRIVER'SというAndroidの端末が積まれていて、ナビや配車情報を受け取るといった役割としています。

今までは、タクシーメーターと決済器、交通系ICやクレジットカード決済ができる端末は有線でつながっているケースが圧倒的に多かったんですね。ですが今では、先ほど説明したようにBLEを使ってメーターの情報を決済器やDRIVER'S、JapanTaxiタブレットに無線で飛ばすことができるので、設置コストを下げています。

また、有線でつないでしまうと線が経年劣化してしまいます。この線は車体の下を這っているので、交換する際は全部はがして交換しなければならないので、無線にすることで故障交換コストがだいぶ下がります。Bluetooth Low Energyに対応していれば、いろいろな端末との互換性があるので「あらゆる端末とアプリと」というところでいろいろな可能性が広がり、タクシーメーターから飛ぶ情報がモダンになっています。

あとはBluetoothだけではなく、タクシー同士の車載機をつなぐために、AWSIoTというものを使っています。

例えば後部座席でお客様がクレジットカード決済を選ぶと、これは実はカードリーダーが付いているので、完全にセルフ決済なんですね。クレジットカードカードを挿すのもお客様、交通系ICをかざすのもお客様なので、乗務員からすると何をしているかわかりません。

なので、何か操作をされたときに乗務員の前のDRIVER'Sに通知するために、AWSIoTを使っています。なぜAWSIoTを使っているかと言うと、まず、料金データやお客様の配車情報も飛んでくるので、セキュアなものが必要です。あとは台数が台数で、全国約1万台の車載機とDRIVER'Sをつなげているのでスケーラブルにしないと耐えられません。ということで、AWSIoTを使ってJapanTaxiタブレットとDRIVER'Sの同期を取っていたりもします。

車両位置のリアルタイム監視

これらを使ってどんな感じにモダンになっているかという話をしていきます。

昔はタクシーの位置やタクシーメーターの情報、空車なのかお客様を乗せている実車なのかはかなり遅い間隔でサーバーに送られてくるので、実際に「ここにこの車両を配車させて」という指示を送った時には通り過ぎてしまっていて、迎えに行っているお客様と進行方向が逆になってしまったり、ちゃんと検索すればもっと近い車がいたとか、そういったケースがかなり多かったんですね。

今は車両情報をほぼリアルタイムに監視しています。

DRIVER'S端末の高精度なGPSとメーターの連動をリアルタイムに行っているので、ほぼリアルタイムなタクシーの位置情報が共有されて探索できます。今までだと特定の1台が精一杯だったのが、リアルタイムなのでお客様に近い車両を円で探索できます。なのでお客様にとっては近い車両、乗務員にとっても行きやすいお客様のところに配車をすることができる。

これをどうやって実現しているかと言うと、そもそも今までは各タクシー会社の配車システムにつないでいたため、配車のロジックをJapanTaxiがコントロールできない状況でした。まず、そこをDRIVER'Sを導入することで、自社の配車ロジックにすることができますし、DRIVER'S側の挙動を一括管理することができる。そういったことを実現しています。

私はAndroidのエンジニアなのであまり詳しくは知りませんが、配車ロジックと配車のサーバに関してもかなり近代的になっていて……。

(会場笑)

ここに書いてある通り、今のタクシーの位置、状態、空車、実車というのはWebsocketで1秒間隔で取っているので、ここもリアルタイムです。

車載機Androidアプリの自動更新の仕組み

ただ、こういったリアルタイムに支える配車ロジックができても、Androidはアプリを更新しなければいけません。ふだんのみなさんの場合はアプリストアに公開されるアプリを開発されている方が多いと思うので「ストアに上げればいいじゃん」と思うんですけど、そもそもタクシー会社側のシステムは、非公開のものなので、簡単にストアに上げられないんですね。

では、どうやって自動更新をして配車ロジックに対応して成立しているかと言うと、Androidにはデバイスに権限があって、これでアプリに権限を付与してあげる。アプリのパーミッションで「カメラを使っていいですか?」といったことを毎回聞かれると思いますが、そういったことを全部強制的に許可できたりするんですね。

加えて、そこにインストールセッションという形式でアプリをインストールできるんですが、これを組み合わせることによってユーザの許可無しにアプリを更新、インストールできます。そうすることでアプリストアに出さなくても更新をすることで、配車ロジックやいろんなロジックがサーバ側の改良が、かなりリアルタイムに全国に広がるタクシー車両に搭載される製品に反映できるようになってきています。

参考までに、こういったQiitaの記事があります。これはかなり参考になると思うので興味がある方はぜひ読んでみてください。

お客様向けタブレットの仕組み

今まで話したことは「JapanTaxi」アプリから配車をして乗務員さんが向かうところまで、いろいろな技術を使うことによってリアルタイムになり、配車ロジックが綺麗になってAndroidによってそれを実現することができるようになりました。ここまで、お客様を迎えに行くところまでは説明したので、ここからは実際にお客様が乗ったあとについてお話します。

お客様の目の前にあって広告が流れてくるJapanTaxiタブレット。それをどうやって実現しているかと言うと、実はBluetoothでメーターからこういったデータが飛んできています。

実際のデータを載せるとパケット解析をされて困るので、今お見せしているのは、偽物のデータです。

こういった状態で解析をするんですね。02ときたらデータの開始かな? 01ときたらどれかメータの情報を表すんだなとか、03なので「実車なんだな」といった解析をAndroidのアプリ側でやっています。なので、モダンな言語も扱いますが、こういったバイト配列、バイトで解析というのもバリバリやっていて、そこはB to BやB to C向けにアプリストアに出すようなアプリの開発とはまた違う側面でもあります。

こういったBluetoothによって飛んでくる情報を解析して、メーターの情報をリアルタイムに後部座席に反映することができる。おそらく多くの会社さんはこういった情報をBluetoothや無線で飛ばして通信して、お客様が乗ったことを反映して広告を流しているんですね。

あとは、実はこちらがもらうだけではなく、何か決済をしたときにその情報をメーターに返すということもしています。

こういった情報をメーターに返してあげると印字がされたり領収書が出てきたり、そういったこともやっています。

あまりまとまりのない話で申し訳ないんですけど、いろいろなテクノロジーを使ってタクシーがモダンになっています。JapanTaxiタブレットの中でも、マルチ決済に対応するタイプは、現在全国1万台を超えています。ただこういった技術は、IoTと言うと輝かしく見えますが、実際にはモノを設置するので、フィールドエンジニアさんがいたりとか、意外とIoTのプロダクトはみなさんが思っているよりも泥臭いところがあります。

弊社も人を募集しております。Androidのエンジニアで車載機に興味があったり、こういった物をつなげることに興味のある人、もしよろしければ後でお話を聞かせてください。

以上で終わります。ご清聴ありがとうございます。

(会場拍手)