2.3K Views
May 18, 23
スライド概要
2023/4/21に実施されたHololab Conference 2023のセッションスライドです。
■セッションアーカイブはこちら
https://youtube.com/playlist?list=PLcIuMEVR3eYfERlJDNtlGCdLKFFBjC9Ap
ーーー
■公式HP
https://hololab.co.jp/
■公式Twitter
https://twitter.com/HoloLabInc
torinome の開発秘話 - PLATEAU 互換のXRデジタルツインプラットフォーム-
アジェンダ 1. はじめに 2. torinome のご紹介 3. Azure サービスへの移行 4. 大規模点群対応 5. リリースサイクルの効率化 6. おわりに
開発メンバー チーム MITHRIL 清水 聡 / 秋猫 オンラインゲーム開発から転職してWeb開発へ 上田 章雄 MRエンジニアとして入社 ⇒ WEB開発 丸山 純司 今年2月に入社。前職はWebシステム開発中心
アジェンダ 1. はじめに 2. torinome のご紹介 3. Azure サービスへの移行 4. 大規模点群対応 5. リリースサイクルの効率化 6. おわりに
torinome Cesium JS を用いた XR デジタルツインプラットフォーム 現実の位置に紐づく情報が集まるWebアプリ 様々なデータが重畳でき、簡単に可視化できる
torinome = 鳥の目 広い視野を持って全体を俯瞰する torinome = trinome 現実 デジタル 人 をつなぐ
torinome torinome = 鳥の目 広い視野を持って全体を俯瞰する torinome = trinome 現実 デジタル 人 をつなぐ ◆ 2D + 3D データを登録し、街レベルで俯瞰できる 1. 既存のデータを可視化できる 2. PLATEAU のデータが利用できる 3. ファイル種別に依らず同じフローで簡単登録 ◆ XRとの連携 1. torinome を基盤として XR アプリケーションと連携
◆ 既存のデータを可視化できる メッシュ 点群 GIS (GeoJSON, Shapefile) iPhone LiDAR データ テキスト/URL/動画 画像
◆ PLATEAU のデータが利用できる Project PLATEAU 国土交通省主導 日本全国の3D都市モデルの 整備・活用・オープンデータ化プロジェクト 自由に都市のデータを引き出して活用できる https://www.mlit.go.jp/plateau
◆ データが簡単に登録できる 登録したい場所を右クリック 名前を入力 ファイルを選択 完了
◆ torinome のデモ動画
◆ 他アプリとの連携 REST API を提供 torinome に登録した情報やデータの参照・登録・更新・削除が可能 この API を使うことで他アプリからの連携が簡単にできる 緯度経度高さを持ったデータなので Geospatial API 等の位置情報APIと 相性が良く、併用することで物理空間とリンクさせられる テキスト ・ 画像 ・ GLB 等を登録 連携アプリ 登録されたデータを提供 torinome
◆ 活用例 「パカパカAR」~まちあるき用アプリ
アジェンダ 1. はじめに 2. torinome のご紹介 3. Azure サービスへの移行 4. 大規模点群対応 5. リリースサイクルの効率化 6. おわりに
開発初期のアーキテクチャ
現在のアーキテクチャ
Azure サービスへの移行 動機 • 移行前は 1 台の仮想マシン上に全て構築し常時稼働させていた • この状態にはいくつかの問題や改善点があったので順に触れていきます 稼働費用の削減 • 問題点 • 常時稼働させているのでサービスが利用していない時も費用が加算される • マシン上で動く特定の重い処理だけに合わせてマシンスペックを上げる必要がある • 効果 • アクセスあった時など必要時のみ稼働し費用が加算されるようになった • それぞれの機能にあったマシンスペックの設定などのチューニングが行えるように なった
Azure サービスへの移行 データの冗長性の向上 • 問題点 • ファイルもデータベースのデータも仮想マシン上に保持していた • 日毎のバックアップは取っていたがその間に何かあれば失われる • バックアップからの復旧もマシン単位になる • 効果 • 専用のストレージサービスにより自動的にレプリケーションが作られる • 専用のデータベースサービスにより高度な可用性のある構成を楽に作れる • バックアップ・レプリケーション・フェイルオーバー・etc...
Azure サービスへの移行
Azure サービスへの移行 サービスの可用性の向上 • 問題点 • マシン1台では捌ける処理負荷もディスク容量も限界がある • マシン1台だと障害発生時にサービス全体が停止する • 自前で複数台にするには設定や実装コストがかかりメンテナンスコストも上がる • 効果 • 専用サービスと SDK を利用するだけで機能を分離できた • Azure 自体が落ちない限りはマシンメンテナンスなしで動き続けてくれる • 負荷に応じて自動的にマシンの増減に近いことをやってくれる
Azure サービスへの移行
アジェンダ 1. はじめに 2. torinome のご紹介 3. Azure サービスへの移行 4. 大規模点群対応 5. リリースサイクルの効率化 6. おわりに
大規模点群対応 大規模点群(5GB の las ファイル等)の対応が必要 【対応】 Azure サービス移行に伴い、 ファイルアップロードはAzure SDK を用いて ブラウザから直接 Blob Storage へアップロードするよう処理を最適化した 【効果】 Azure SDK を用いることで、ファイルサイズが大きな場合は分割して並列アップロードされる ため、分割アップロード実装の工数を吸収してくれた 独自 API を介さずブラウザから Blob Storage へ直接アップロードすることで、処理負荷 が軽減された
大規模点群対応 5GBのlasファイルを表示する例(場所:五反田)
拡張性を重視したファイル変換システム Cesium JS をコアライブラリとして使用 Webブラウザ用3D地図ライブラリ Las ファイルを Cesium JS で表示するためには、 専用のファイルフォーマット(3D Tiles)へ変換が必要
拡張性を重視したファイル変換システム
拡張性を重視したファイル変換システム • • • 変換処理モジュールは各ファイル形式ごとに Container Instances に分離 今後新たなファイル形式の対応が必要になった場合に機能拡張しやすい構成 Las ファイルの場合は 3D Tiles へ変換
アジェンダ 1. はじめに 2. torinome のご紹介 3. Azure サービスへの移行 4. 大規模点群対応 5. リリースサイクルの効率化 6. おわりに
CI/CD 品質の維持と 「開発→デプロイ→リリース」 のサイクルの迅速化 使用ツール IaC ツール: Terraform CI/CD ツール: GitHub Actions テストツール: Jest
CI/CD ソースコード変更時の自動テスト テストフレームワークの Jest を使って開発時にユニットテストを記述 • タスクランナーの husky で push 前に自動テストを実行 • GitHub Actions で Pull Request 時に自動テストを実行 ⇒品質を維持・保証できる ⇒安心して大きな変更ができる
CI/CD インフラ構築 Terraform を使用してコードで管理 ⇒ミスを削減できる ⇒トラブルがあった場合でも前の構成に簡単に戻せる 注意点 比較的新しいサービスは Terraform の AzureRM プロバイダーでカバーされていないことがある ⇒ AzAPI プロバイダーを使用する Azure REST API を管理するプロバイダーのため、新しいサービスも扱える
CI/CD 新環境作成時の手順 • 新環境に必要なパラメータを設定したファイルを用意する • terraform を実行する ⇒構築が簡単 ⇒ミスを削減できる 用意するのはこれだけ→
CI/CD 開発環境・本番環境へデプロイ時の手順 • GitHub Actions を使用 • 各環境へ GitHub でボタンを押す ⇒即時反映できる ⇒開発環境ですぐに動かして確認できる ボタンを押すだけ→ 今後は変更をマージ時に自動反映予定
アジェンダ 1. はじめに 2. torinome のご紹介 3. Azure サービスへの移行 4. 大規模点群対応 5. リリースサイクルの効率化 6. おわりに
おわりに 基調講演でリリース発表
おわりに https://hololab.co.jp/HoloMaps 常設 torinome 体験展示 16:00-16:45 テーブルセッション D4 「Ask the Speaker」