はじめに
今回、株式会社GENEROSITY様でインターンシップをさせていただき、AR交通アプリを開発しました。開発過程やその中で得られた知見や詰まった点について前・中・後編の記事にさせていただきます。
また、今回作成した作品はMVPであり、機能としては不十分であることを予めご了承ください。
概要
突然ですが、みなさんは朝の通勤・通学は苦痛ではありませんか?特に公共交通機関を使っている方は、満員の車内や遅延など様々な苦痛や不安のタネがあると思います。私もJRや地下鉄、バスを乗り継いでおり、毎朝それぞれのアプリを開いて遅延状況や走行位置を基に乗り換えを行っています。そんな「毎朝の煩わしさを減らしたい」という思いから今回は複数の公共交通機関の情報を一括で見ることができるアプリとして開発を行いました。ARを用いることで最寄り駅の入力や路線選択などの段階を削減できるようにしていきます。
本記事で出来ること
ARCore Geospatialを用いて、現在位置の緯度経度などを測定することができる。
目次
使用した主要なツール/API
今回使用したツールは以下の通りです。
・Unity
ARシステムを作成するためのゲームエンジン。
・ARCore API (ARCore Geospatial)
カメラ画像を基に位置情報、平面検出、光の推定などができるAPI。
今回、Geospatialを利用して緯度経度や向いている方角の検出を行う。
・Open Trip Planner(OTP)
後述のOSMやGTFSと言った地図データ、交通データを基に経路探索を行うことができるオープンソースソフトウェア。
・Open Street Map(OSM)
誰でも編集・利用することができるオープンプロジェクトの地図データ。
・GTFS/GTFS-RT
交通機関の情報をアプリで使用できるようにした世界基準のデータ形式。
時刻表などの静的な情報を扱うGTFS、遅延時間や走行位置などの動的な情報を扱うGTFS-RTの2種類がある。
・DockerDeskTop
アプリケーションを構築・実行するための仮想環境を作成し、実行するためのプラットフォーム。
事前準備
下記リンクからUnityのインストールを行い、「Universal 3D」テンプレートでプロジェクトを作成してください。
今回は下記のような環境で開発しました。
・Unity 6000.0.59f2
・AR Foundation 6.3.0
・Windows 11
・Google Pixel 8a(Android16)
警告
UnityEditorのインストール時にAndroid Build Supportモジュール一式をインストールしてください。インストールを忘れた場合はUnityHubの Installs→Manage→Add modulesで追加できます。
注釈
今回、InferenceEngineを搭載するためにUnity6で開発を行いましたが、ARFoundationと競合し断念したため、2022.3LTSなどでも問題なく開発できると思います
アカウント作成
GTFSおよびGTFS-RTを利用するため、「公共交通オープンデータセンター」(以下ODPT)の開発者サイトで予めアカウントを取得しておいてください。
注釈
アカウントの認証には2~3営業日かかります。
早めに登録を行うことをお勧めします。
ARCore APIもアカウントの認証が必要です。下記リンクからGoogleアカウントの認証を行ってください。
注意
アカウントの認証時、支払方法の登録が必須です。今回使用するARCoreAPIは2025年11月現在、完全無料で使用できますが、今後有料化する恐れがあります。
アカウントの認証・プロジェクトの立ち上げが出来たら、APIライブラリからARCore APIの有効化を行います。
有効化が出来たらプロジェクトの認証情報からAPIキーを作成、保存してください。
注釈
APIキーの作成時、APIの制限は行わなくても問題は無いですが、念のためARCore APIのみに制限しておくと、有料のAPIを叩いてしまい引き落としが起こるといったケースを抑えられます。
実装
前編の今回はプロジェクト設定~Geospatialを利用した現在位置の測定までを実装していきます。
パッケージインストール・プロジェクト設定
プロジェクトが立ち上がったら、まずは必要なパッケージのインストールとプロジェクト設定をします。
パッケージインストール
上部バーWindow→PackageManager→画面左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 History→See other versionsから適宜バージョンアップやダウンを行ってください。
次に、ARCoreAPIのパッケージをダウンロードします。
下記リンクからarcore-unity-extensions-1.50.0-arf6.tgzをダウンロードしてください。ダウンロードに成功したら、PackageManage→画面左上+のタブからInstall Package from tarball...を選択し、ダウンロードしたtgzファイルをインストールしてください。
Inproject→ARcore Extensions 1.50.0というパッケージが表示されたら成功です。
これで今回使うパッケージはインストールが終わりました。次にプロジェクト設定を変更していきます。
プロジェクト設定
上部バーEdit→Project Settingsを選択して設定を変えます。変更点は下記の通りです。
・Graphics→Render Pipeline AssetをMobile_RPAssetに変更
変更したMobile_RPAssetにアタッチされてるRenderer(既定だとMobile_Renderer)にAR Background Renderer FeatureとAR Command Buffer Support Renderer Featureの2つが追加されてるか確認してください。
注意
この工程を忘れると、実機でテストした際に黒背景のままになります。忘れやすい工程なので注意してください。
・Player→Androidマーク→Other Settingsタブを開いて
1. Minimum API LevelをAndorid 7.0 `Nought`(API level 24)に変更
2. Target ArchitecturesのARM64に✅を付ける
・XR Plug-in Management→Androidマーク→Google ARCoreに✅を付ける
・XR Plug-inManagementのタブ内ARCore Extensinos項目を選択して
1. Android Authentication StrategyをAPI Keyに変更
2. Android API Keyに事前準備で保存したAPIキーを入力
3. Geospatialに✅を付ける
注意
Unity2022.3LTSなどUnity6より過去のバージョンで開発を行う場合、Player→OtherSettings→Graphics APIから必ずVulkanを
抜いてください。Unity6以前のAR機能ではVulkanをAndroidでは使用できません。
最後に、上部バーFile→Build Profiles→Android→Switch Platformを行います。
以上でプロジェクトの設定も終了です。
ARカメラの実装/起動
ここから本格的な制作・実装に入っていきます。まずは、Hierarchy→MainCameraとDirectional Lightを削除し、Hierarchy→XR→AR SessionとXR Origin(Mobile AR)を作成してください。
警告
ARでは端末のカメラを使用するため、MainCameraが残っているとカメラ同士が競合してエラーが起きます。
ここまで出来たら一度ARカメラが起動できるか確認します。テスト端末をUSBで接続し、File→Build&Runを行ってください。ビルドに成功するとこのように画面がカメラ映像のみの状態になると思います。
注釈
No Android devices connectedというダイアログが出た場合は、下記リンクを参考にしてUSBデバッグを有効にしてください。
https://developer.android.com/studio/debug/dev-options?hl=ja
Geospatialの実装
スクリプトの設定
では、次に端末の現在位置を特定するGeospatialを実装していきます。
Hierarchy→XR→ARCore Extensionsを作成してください。その後、Assetsフォルダに新規フォルダ(Settingsなどがお勧め)を作成し、新規フォルダ内でCreate→XR→ARCore Extensions Configを作成、ConfigのGeospatial Modeを必ずEnableにしてください。
Configの作成・設定が終わったら、先ほど作成したARCore Extensionsに各オブジェクトをアタッチしていきます。MainCameraはXR Originの子供にあります。Config FilterはNoneで問題ありません。
また、XROriginにAR Anchor ManagerとAR Earth Managerを追加します。
こちらのAnchor ManagerもList is empty、Anchor PrefabはNoneで問題ありません。
スクリプト作成
アタッチが終了したら次にスクリプトを書いていきます。
下記リンクの 6.VPSの起動 と 7.位置情報を取得 を参考に、VPSの起動とデバッグテキストの実装を行います。
テスト
スクリプトが書き終わったら、Hierarchy→UI→Text-TextMeshProでCanvasとText、Create Emptyで空オブジェクトを作成してください。
空オブジェクトにはVPS Starter.cs、TextにはDebugText.csをアタッチし、DebugTextにはVPS StarterとXR Originをアタッチしてください。CanvasはRender Mode→Screen Space - Overlayに変更してください。
ここまで出来たら再度Build & Runを行ってください。画像のように、DebugTextが表示され、緯度経度などが取得できているのが分かると思います。
まとめ
今回は、各APIのセットアップとプロジェクト設定、Geospatilを用いた現在位置の測定までを行いました。
次回は、GTFSを用いた交通情報の取得~UI表示を行います。












