2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【前編】GTFSを用いた交通情報表示アプリケーションを開発してみた【Unity+ARCore】

Last updated at Posted at 2025-11-13

はじめに

今回、株式会社GENEROSITY様でインターンシップをさせていただき、AR交通アプリを開発しました。開発過程やその中で得られた知見や詰まった点について前・中・後編の記事にさせていただきます。
また、今回作成した作品はMVPであり、機能としては不十分であることを予めご了承ください。

概要

突然ですが、みなさんは朝の通勤・通学は苦痛ではありませんか?特に公共交通機関を使っている方は、満員の車内や遅延など様々な苦痛や不安のタネがあると思います。私もJRや地下鉄、バスを乗り継いでおり、毎朝それぞれのアプリを開いて遅延状況や走行位置を基に乗り換えを行っています。そんな「毎朝の煩わしさを減らしたい」という思いから今回は複数の公共交通機関の情報一括で見ることができるアプリとして開発を行いました。ARを用いることで最寄り駅の入力や路線選択などの段階を削減できるようにしていきます。

Videotogif (3).gif

本記事で出来ること

ARCore Geospatialを用いて、現在位置の緯度経度などを測定することができる。

Videotogif (2).gif

目次

使用した主要なツール/API

今回使用したツールは以下の通りです。
・Unity
 ARシステムを作成するためのゲームエンジン。
・ARCore API (ARCore Geospatial)
 カメラ画像を基に位置情報平面検出光の推定などができるAPI。
 今回、Geospatialを利用して緯度経度や向いている方角の検出を行う。
・Open Trip Planner(OTP)
 後述のOSMGTFSと言った地図データ、交通データを基に経路探索を行うことができるオープンソースソフトウェア。

・Open Street Map(OSM)
 誰でも編集・利用することができるオープンプロジェクトの地図データ。

・GTFS/GTFS-RT
 交通機関の情報をアプリで使用できるようにした世界基準のデータ形式。
 時刻表などの静的な情報を扱うGTFS、遅延時間や走行位置などの動的な情報を扱うGTFS-RTの2種類がある。

・DockerDeskTop
 アプリケーションを構築・実行するための仮想環境を作成し、実行するためのプラットフォーム。

そしてこれらのデータたちをこのような形でまとめました
スクリーンショット 2025-11-13 182044.png

事前準備

下記リンクからUnityのインストールを行い、「Universal 3D」テンプレートでプロジェクトを作成してください。
今回は下記のような環境で開発しました。
・Unity 6000.0.59f2
・AR Foundation 6.3.0
・Windows 11
・Google Pixel 8a(Android16)

警告
UnityEditorのインストール時にAndroid Build Supportモジュール一式をインストールしてください。インストールを忘れた場合はUnityHubの InstallsManageAdd modulesで追加できます。

注釈
今回、InferenceEngineを搭載するためにUnity6で開発を行いましたが、ARFoundationと競合し断念したため、2022.3LTSなどでも問題なく開発できると思います

アカウント作成

GTFSおよびGTFS-RTを利用するため、「公共交通オープンデータセンター」(以下ODPT)の開発者サイトで予めアカウントを取得しておいてください。

注釈
アカウントの認証には2~3営業日かかります。
早めに登録を行うことをお勧めします。

ARCore APIもアカウントの認証が必要です。下記リンクからGoogleアカウントの認証を行ってください。

注意
アカウントの認証時、支払方法の登録が必須です。今回使用するARCoreAPIは2025年11月現在、完全無料で使用できますが、今後有料化する恐れがあります。

アカウントの認証・プロジェクトの立ち上げが出来たら、APIライブラリからARCore APIの有効化を行います。

スクリーンショット 2025-11-06 122722.png

有効化が出来たらプロジェクトの認証情報からAPIキーを作成、保存してください。

スクリーンショット 2025-11-06 122818.png

注釈
APIキーの作成時、APIの制限は行わなくても問題は無いですが、念のためARCore APIのみに制限しておくと、有料のAPIを叩いてしまい引き落としが起こるといったケースを抑えられます。

実装

前編の今回はプロジェクト設定~Geospatialを利用した現在位置の測定までを実装していきます。

パッケージインストール・プロジェクト設定

プロジェクトが立ち上がったら、まずは必要なパッケージのインストールとプロジェクト設定をします。

パッケージインストール

上部バーWindowPackageManager→画面左UnityRegistryから以下のパッケージを検索し、ダウンロードします。
・ARFoundation 6.3.0
・Google ARCore XR Plugin 6.3.0
・Newtonsoft Json 3.2.1
・Android Logcat 1.4.6 (必須ではありませんが、デバッグ効率化のため推奨)

注釈
2025年10月時点での、ARFoundation及びARCore XR Pluginの推奨は6.0.6です。バージョンが異なる場合は、パッケージを選択し画面右に出るVersion HistorySee other versionsから適宜バージョンアップやダウンを行ってください。

次に、ARCoreAPIのパッケージをダウンロードします。
下記リンクからarcore-unity-extensions-1.50.0-arf6.tgzをダウンロードしてください。ダウンロードに成功したら、PackageManage→画面左上のタブからInstall Package from tarball...を選択し、ダウンロードしたtgzファイルをインストールしてください。
InprojectARcore Extensions 1.50.0というパッケージが表示されたら成功です。

これで今回使うパッケージはインストールが終わりました。次にプロジェクト設定を変更していきます。

プロジェクト設定

上部バーEditProject Settingsを選択して設定を変えます。変更点は下記の通りです。

GraphicsRender Pipeline AssetMobile_RPAssetに変更
  変更したMobile_RPAssetにアタッチされてるRenderer(既定だとMobile_Renderer)にAR Background Renderer FeatureAR Command Buffer Support Renderer Featureの2つが追加されてるか確認してください。

注意
この工程を忘れると、実機でテストした際に黒背景のままになります。忘れやすい工程なので注意してください。

スクリーンショット 2025-11-06 154933.png

Player→Androidマーク→Other Settingsタブを開いて
 1. Minimum API LevelAndorid 7.0 `Nought`(API level 24)に変更
 2. Target ArchitecturesARM64に✅を付ける

スクリーンショット 2025-11-06 155200.png

XR Plug-in Management→Androidマーク→Google ARCoreに✅を付ける

スクリーンショット 2025-11-06 155249.png

XR Plug-inManagementのタブ内ARCore Extensinos項目を選択して 
 1. Android Authentication StrategyAPI Keyに変更
 2. Android API Key事前準備で保存したAPIキーを入力
 3. Geospatialに✅を付ける

注意
Unity2022.3LTSなどUnity6より過去のバージョンで開発を行う場合、PlayerOtherSettingsGraphics APIから必ずVulkan
抜いてください。Unity6以前のAR機能ではVulkanをAndroidでは使用できません。

最後に、上部バーFileBuild ProfilesAndroidSwitch Platformを行います。

以上でプロジェクトの設定も終了です。

ARカメラの実装/起動

ここから本格的な制作・実装に入っていきます。まずは、HierarchyMainCameraDirectional Lightを削除し、HierarchyXRAR SessionXR Origin(Mobile AR)を作成してください。

警告
ARでは端末のカメラを使用するため、MainCameraが残っているとカメラ同士が競合してエラーが起きます。

ここまで出来たら一度ARカメラが起動できるか確認します。テスト端末をUSBで接続し、FileBuild&Runを行ってください。ビルドに成功するとこのように画面がカメラ映像のみの状態になると思います。

注釈
No Android devices connectedというダイアログが出た場合は、下記リンクを参考にしてUSBデバッグを有効にしてください。
https://developer.android.com/studio/debug/dev-options?hl=ja

Geospatialの実装

スクリプトの設定

では、次に端末の現在位置を特定するGeospatialを実装していきます。
HierarchyXRARCore Extensionsを作成してください。その後、Assetsフォルダに新規フォルダ(Settingsなどがお勧め)を作成し、新規フォルダ内でCreateXRARCore Extensions Configを作成、ConfigのGeospatial Mode必ずEnableにしてください。

スクリーンショット 2025-11-06 154845.png

Configの作成・設定が終わったら、先ほど作成したARCore Extensionsに各オブジェクトをアタッチしていきます。MainCameraXR Originの子供にあります。Config FilterはNoneで問題ありません。

スクリーンショット 2025-11-06 144216.png

また、XROriginにAR Anchor ManagerAR Earth Managerを追加します。
こちらのAnchor ManagerもList is empty、Anchor PrefabはNoneで問題ありません。

スクリーンショット 2025-11-06 145447.png

スクリプト作成

アタッチが終了したら次にスクリプトを書いていきます。
下記リンクの 6.VPSの起動 と 7.位置情報を取得 を参考に、VPSの起動とデバッグテキストの実装を行います。

テスト

スクリプトが書き終わったら、HierarchyUIText-TextMeshProCanvasTextCreate Emptyで空オブジェクトを作成してください。
空オブジェクトにはVPS Starter.csTextにはDebugText.csをアタッチし、DebugTextにはVPS StarterXR Originをアタッチしてください。CanvasRender ModeScreen Space - Overlayに変更してください。

スクリーンショット 2025-11-06 151004.png
スクリーンショット 2025-11-06 150953.png

ここまで出来たら再度Build & Runを行ってください。画像のように、DebugTextが表示され、緯度経度などが取得できているのが分かると思います。

まとめ

今回は、各APIのセットアップとプロジェクト設定、Geospatilを用いた現在位置の測定までを行いました。

次回は、GTFSを用いた交通情報の取得~UI表示を行います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?