API Meetup Online #1 〜加速するデジタルシフト〜 での発表資料です。
Mini Tokyo 3D は東京の公共交通のリアルタイム3Dマップです。今、実際に動いている列車や発着している旅客機をリアルな3Dマップ上に滑らかなアニメーションで表現します。これは、現実世界とそっくりな双子をデジタルの世界に表現した「デジタルツイン」です。
ユーザーは自由に3Dマップ上を動き回り、見たいところにズームインして東京の「今」を知ることができます。路線図として乗り換えルートを調べる、出かける前に目的地の街と天気を下調べする、列車を自動追跡して沿線の様子をただひたすら眺める、終電に逃さないためにダッシュすべきかどうか列車の現在位置から判断するなど、さまざまな使い方ができます。
Mini Tokyo 3D は PC、スマートフォン、タブレット、セットトップボックスなど、デバイスを問わず Web ブラウザさえあれば利用できる Web アプリケーションです。下記の URL からアクセスしてください。
https://minitokyo3d.com
より詳しい情報は Mini Tokyo 3D ユーザーガイド https://github.com/nagix/mini-tokyo-3d/blob/master/USER_GUIDE-ja.md をご覧ください。ソースコードは GitHub リポジトリhttps://github.com/nagix/mini-tokyo-3d にて公開されています。開発の経緯は、Mini Tokyo 3D 開発日誌 https://togetter.com/li/1413307 にまとめています。
2. ⾃⼰紹介
u 草薙 昭彦 (くさなぎ あきひこ)
u コグナイト株式会社 チーフソリューションアーキテクト兼CTO Japan
u シンガポール在住
u 過去は
u MapR Technologies
u EMC (Greenplum)
u Oracle
u Sun Microsystems
Twitter: @nagix
8. Mini Tokyo 3D 概要
u 東京の公共交通のリアルタイム3Dマップ
u 今、実際に動いている列⾞やバス、発着して
いる旅客機をリアルな3Dマップ上に滑らかな
アニメーションで表現
u 現実世界とそっくりな双⼦をデジタルの世界
に表現した「デジタルツイン」
u ユーザーは⾃由に3Dマップ上を動き回り、⾒
たいところにズームインできる
u PC、スマートフォン、タブレット、セット
トップボックスなど、デバイスを問わず Web
ブラウザさえあれば利⽤できる Web アプリ https://minitokyo3d.com
9. 利点・特徴
u 全てがリアルタイム
u 現実の時刻表やリアルタイムの遅延情報に従って運⾏する列⾞や旅客機を上
空の好きな視点から観覧
u 東京の⽇の出・⽇の⼊り時刻に合わせて景⾊の明るさが変化
u リアルタイムの気象情報を基にした降⽔アニメーション
u 鉄道路線図の⾒やすさをそのままに
u 路線図や案内で使われているものと同じラインカラー
u 乗り換え駅の接続の表⽰
u 列⾞・旅客機はシンプルな単⾊の直⽅体にしてシンボル性を向上
u 操作性とパフォーマンス
u 1,200以上の列⾞や旅客機が同時運⾏するラッシュ時、スマートフォンでも⾮
常にスムーズな運⾏アニメーションを実現
u ⽇英中韓の4ヶ国語対応
u 駅名検索にも対応
u 現実に限りなく近づけた列⾞運⾏と表⽰
u 実際の列⾞と同じ動きになるように、列⾞の起動加速度や最⾼速度を微調整
u 地上を⾛る列⾞の地下トンネル部分、地下鉄の地上⾛⾏区間も完全に再現
u 地上・地下の表⽰切り替え
u 地上と地下の路線網を切り替えて表⽰することで⾒やすさを追求
11. 技術的な
⼯夫事項
u 地上・地下を含めた3Dモデルの表⽰
u 複数のオープンソースライブラ
リ (Mapbox, deck.gl, three.js)
を多層的に融合して地上・地下
の路線と列⾞の動きを表現
u 性能の追求
u 最適化の数々
u 路線上の始点からの距離、⽅⾓、傾斜の事前計算と⼆分探索
u 描画時の三⾓関数の使⽤の回避
u 画⾯外の⾞両のフレームレートを1fpsに
u 圧縮によるロード時のデータ量削減
u 降⾬パーティクルの動的な更新、データの遅延更新
u 降⽔データの解析
u WebGLパーティクルを使った
3D降⽔アニメーション
u 降⽔ナウキャスト画像からピク
セルを解析して降⽔強度を取得
14. u 活⽤している官⺠データ
u 交通データ: 東京公共交通オープンデータチャレンジ
u 地図データ: Mapbox (https://www.mapbox.com)
OpenStreetMap (https://www.openstreetmap.org)
u 降⽔データ: 気象庁降⽔ナウキャスト (https://www.jma.go.jp/jp/radnowc/)
u 離着陸ルートデータ: 国交省東京航空局 (https://www.ntrack.mlit.go.jp)
u 活⽤しているオープンソースライブラリ
u Mapbox GL JS, Turf.js, deck.gl, three.js, Shader Particle Engine, SunCalc, pako,
Font Awesome, Loaders.css
u Mini Tokyo 3D ⾃⾝もオープンソースで公開中
u https://github.com/nagix/mini-tokyo-3d
データとオープンソースコード
18. u データ
u セマンティクスの概念をベースとしたucR形式(具体的にはJSON-LD)
u 実在する概念(エンティティ)に対して識別⼦(ucode)を付与
u 鉄道の例
u 列⾞、駅、路線、駅時刻表、運⾏情報、・・・
u これらのエンティティ間に存在する関係性(Relation, Link)を記述
u 本APIで提供する情報は全てトリプル(triple)をベースとした情報記述が⾏われる
u 現実に存在するモノの関係性を主語(subject)、述語(predicate)、⽬的語(object)の 3要
素で表現したものはトリプルと呼ばれる
ODPT API
20. u REST API クエリの例︓JR⼭⼿線の東京と五反⽥の駅情報を取得
ODPT API
https://<ODPT_URL>/api/v4/odpt:Station?
odpt:railway=odpt.Railway:JR-East.Yamanote&
dc:title=東京,五反⽥&
acl:consumerKey=<ACL_CONSUMERKEY>
駅情報を検索
JR⼭⼿線
東京、五反⽥
APIトークン
21. u 路線・駅データ、時刻表データの事前準備
u アプリのビルド時、Node.js コードから
u 必要な静的データを整形・圧縮して、ページロード時にクライアントに送信
u 動的な列⾞在線情報と路線運⾏情報の取得
u ブラウザのクライアントコードから
u 1分毎
u 動的な離発着スケジュールの取得
u ブラウザのクライアントコードから
u 1分毎
Mini Tokyo 3D での API 利⽤