AR(拡張現実)技術は、スマートフォンやスマートグラスを通して現実世界にデジタル情報を重ね合わせることで、私たちの生活やビジネスに新たな可能性をもたらしています。ゲームやエンターテインメントはもちろん、教育、医療、製造、小売など、さまざまな分野でその活用が急速に広がっています。
このようなARアプリケーションを開発するためのプラットフォームとして、世界中の開発者から絶大な支持を得ているのがゲームエンジン「Unity」です。そして、UnityでAR開発を行う上で、現在最も標準的で強力なフレームワークが「AR Foundation」です。
この記事では、UnityのAR Foundationとは何かという基本的な概念から、具体的な機能、メリット・デメリット、そして実際にARアプリ開発を始めるためのステップまで、網羅的かつ分かりやすく解説します。これからAR開発に挑戦したいと考えている方にとって、必携の知識となるでしょう。
目次
AR Foundationとは
AR Foundationは、UnityにおけるARアプリケーション開発の根幹をなす非常に重要なフレームワークです。まずは、その基本的な概念と特徴を3つのポイントに分けて詳しく見ていきましょう。
Unity公式のAR開発フレームワーク
AR Foundationは、Unityを開発・提供するUnity Technologiesが公式に提供しているAR開発専用のフレームワークです。フレームワークとは、アプリケーション開発における共通の機能や構造をまとめた土台のようなもので、開発者はこれを利用することで、ARアプリの複雑な処理をゼロから実装する必要がなくなり、より効率的に開発を進めることができます。
AR技術の黎明期、開発者は各プラットフォーム(主にAppleのiOSとGoogleのAndroid)が提供する別々の開発キット(SDK)を使い、それぞれの仕様に合わせて個別にアプリを開発する必要がありました。これは開発者にとって大きな負担であり、時間もコストもかかる非効率なプロセスでした。
この課題を解決するために登場したのがAR Foundationです。Unityという使い慣れた統合開発環境の中で、ARKit(iOS向け)やARCore(Android向け)といったプラットフォーム固有の技術を、統一されたインターフェースで扱えるように設計されています。これにより、開発者はプラットフォーム間の差異を強く意識することなく、AR体験の創造という本質的な部分に集中できるようになります。Unity公式であるため、Unityエディタのアップデートとの親和性も高く、安定した開発環境が保証されている点も大きな特徴です.
ARKitとARCoreを統合的に扱える
AR Foundationの最大の特徴であり、最も強力な利点が、Appleの「ARKit」とGoogleの「ARCore」という、モバイルARにおける二大プラットフォームを統合的に扱える点です。
- ARKit: Appleが提供するiOSデバイス(iPhoneやiPad)向けのAR開発フレームワークです。
- ARCore: Googleが提供するAndroidデバイス向けのAR開発プラットフォームです。
これらはそれぞれ異なる仕組みで動作しており、本来であれば別々の知識とコードが必要になります。しかし、AR FoundationはこれらネイティブSDKの上に位置する「抽象化レイヤー」として機能します。
この「抽象化」という概念は、通訳に例えると分かりやすいでしょう。ARKitとARCoreがそれぞれ異なる言語(仕様)を話す話者だとすると、AR Foundationはその間に立つ優秀な通訳者のような存在です。開発者はAR Foundationという共通言語で指示を出すだけで、AR Foundationがそれを適切にARKitとARCoreそれぞれの言語に翻訳し、デバイス上で実行してくれます。
具体的には、平面検出、画像トラッキング、顔認識といったARの基本的な機能が、AR Foundationの共通API(Application Programming Interface)を通じて提供されます。開発者はARPlaneManager
やARImageTrackingManager
といったコンポーネントを使うだけで、iOSでもAndroidでも同じように機能するARアプリを開発できるのです。このクロスプラットフォーム対応により、開発効率は飛躍的に向上し、より多くのユーザーにアプリケーションを届けることが可能になります。
対応しているプラットフォームとデバイス
AR Foundationは、主にARKitとARCoreをターゲットとしていますが、そのサポート範囲はモバイルデバイスに留まりません。近年では、HoloLensやMagic LeapといったAR/MR(複合現実)ヘッドセットにも対応を広げています。
以下に、AR Foundationが対応する主要なプラットフォームと、その基盤となるネイティブSDKをまとめます。
プラットフォーム | ネイティブSDK / バックエンド | 主な対応デバイス |
---|---|---|
iOS | ARKit | iPhone SE (第2世代) 以降、iPad Pro、iPad (第6世代) 以降など、ARKit対応のiOSデバイス |
Android | ARCore | Google Pixelシリーズ、Samsung Galaxyシリーズ、Sony Xperiaシリーズなど、公式にARCoreがサポートされているAndroidデバイス |
HoloLens | Windows Mixed Reality (OpenXR) | Microsoft HoloLens 2 |
Magic Leap | Magic Leap SDK (OpenXR) | Magic Leap 2 |
重要な注意点として、AR Foundationを利用できるかどうかは、最終的にエンドユーザーが使用するデバイスに依存するということが挙げられます。例えば、ARCore対応のAndroidアプリを開発しても、ユーザーのスマートフォンがARCoreをサポートしていなければ、そのアプリのAR機能は動作しません。
そのため、アプリをリリースする際には、ターゲットとするデバイスが各プラットフォームの要件を満たしているかを確認することが不可欠です。対応デバイスの最新リストは、AppleのARKit公式サイトやGoogleのARCore Supported Devicesページで常に確認するようにしましょう。(参照:Google for Developers「ARCore Supported Devices」, Apple Developer「iOS and iPadOS – Feature Availability」)
このように、AR FoundationはUnity公式のフレームワークとして、主要なARプラットフォームを抽象化し、幅広いデバイスに対応することで、現代のAR開発におけるデファクトスタンダードとしての地位を確立しています。
AR Foundationでできること
AR Foundationは、現代のARアプリケーションに求められる多様な機能を網羅的に提供しています。これらの機能を組み合わせることで、開発者は豊かで没入感のあるAR体験を創造できます。ここでは、AR Foundationが提供する主要な機能について、それぞれ詳しく解説します。
平面検出 (Plane Detection)
平面検出は、AR技術の最も基本的な機能の一つであり、デバイスのカメラを通して床、壁、テーブルといった水平または垂直な平面を認識する技術です。AR FoundationではARPlaneManager
コンポーネントを通じてこの機能を利用できます。
この機能により、ARオブジェクトを現実空間の平面上に「置く」ことが可能になります。例えば、ARの家具を部屋の床に配置したり、壁にバーチャルな絵画を飾ったりすることができます。平面検出がなければ、ARオブジェクトは空中に浮いているように見えてしまい、現実感に乏しいものになってしまいます。平面検出は、ARコンテンツを現実世界に正しく接地させ、没入感を高めるための土台となる重要な機能です。
画像トラッキング (Image Tracking)
画像トラッキングは、事前に登録した特定の2D画像を現実世界で認識し、その位置や向きを追跡する機能です。ARTrackedImageManager
コンポーネントを使用して実装します。
ポスター、商品のパッケージ、雑誌のページ、名刺などをマーカーとして使用できます。デバイスのカメラが登録された画像を認識すると、その画像の上や周囲に3Dモデル、動画、情報パネルといったARコンテンツを重ねて表示できます。
この機能は、特にマーケティングやプロモーションとの相性が非常に良いです。例えば、商品のポスターにカメラをかざすと、その商品の3Dモデルが飛び出してきたり、プロモーションビデオが再生されたりする、といったインタラクティブな体験を提供できます。また、博物館の展示品の説明パネルに使うなど、教育分野での活用も進んでいます。
3Dオブジェクトトラッキング (Object Tracking)
3Dオブジェクトトラッキングは、画像トラッキングをさらに発展させ、現実世界の特定の立体物(3Dオブジェクト)をスキャン・登録し、追跡する機能です。ARObjectTrackingManager
コンポーネントで利用できます。
開発者は、まず専用のスキャニングアプリなどを使って追跡したいオブジェクト(おもちゃ、工業製品、彫刻など)の3Dデータを生成し、それを参照オブジェクトとして登録します。その後、アプリケーションがそのオブジェクトをカメラで捉えると、その位置と向きをリアルタイムで認識します。
これにより、例えば工業製品のARマニュアルを作成し、特定の部品にカメラをかざすと、その部品の名称やメンテナンス手順を表示するといった応用が可能です。また、おもちゃのフィギュアを認識して、その周りにエフェクトや追加キャラクターを表示するような、インタラクティブな遊びを提供することもできます。
フェイストラッキング (Face Tracking)
フェイストラッキングは、人の顔を検出し、目、鼻、口、輪郭といった各パーツの位置や動き、さらには表情までをリアルタイムで追跡する機能です。ARFaceManager
コンポーネントで実装します。
この機能は、いわゆる「自撮りアプリ」のフィルターで広く使われています。顔に仮想的なメガネや帽子をかぶせたり、動物の耳や鼻をつけたり、メイクをシミュレーションしたりすることが可能です。AR Foundationは、顔の表面にフィットする3Dメッシュを生成するため、非常に自然な形でエフェクトを適用できます。また、「喜んでいる」「驚いている」といった表情の変化(ブレンドシェイプ)も検出できるため、ユーザーの表情に連動して変化するインタラクティブなコンテンツも作成できます。
ボディトラッキング (Body Tracking)
ボディトラッキングは、人の全身の骨格(ジョイント)の位置と動きを追跡する機能です。AR Foundationでは、2D(画面上の人物)と3D(現実空間内の人物)の両方のトラッキングをサポートしています。
- 2Dボディトラッキング:
ARHumanBodyManager
を使い、画面に映った人物の骨格を2D座標で追跡します。フィットネスアプリで、ユーザーのポーズが正しいか判定する、といった用途に利用されます。 - 3Dボディトラッキング: こちらはより高度で、LiDARセンサーなどを搭載したデバイスで利用可能です。現実空間における人物の正確な3D位置と動きを捉えることができます。これにより、バーチャルな衣装を試着する「バーチャル試着」や、自分の動きをそのままアバターに反映させる、といった高度な体験が実現できます。
オクルージョン (Occlusion)
オクルージョンは、ARで表示している仮想オブジェクトが、現実の物体によって隠される現象を正しく描画する技術です。これがなければ、ARオブジェクトは常に手前にあるすべてのものを無視して表示されてしまい、ARの没入感を大きく損ないます。
AR Foundationは、主に2種類のオクルージョンをサポートしています。
- 人物オクルージョン (People Occlusion): デバイスが人物を認識し、その人物がARオブジェクトの前を通過した際に、ARオブジェクトが人物の後ろに隠れるように描画します。これにより、キャラクターが現実の人々と自然に共存しているような映像を作り出せます。
- 環境オクルージョン (Environment Occlusion): LiDARスキャナーなどの深度センサーを搭載したデバイスで利用できます。デバイスが周囲の環境(壁、家具、床など)の形状をリアルタイムでメッシュとして認識し、ARオブジェクトがそれらの物体の後ろに隠れるようにします。
オクルージョンは、ARコンテンツが「本当にその場に存在する」という感覚を生み出す上で、極めて重要な技術です。
環境プローブ (Environment Probes)
環境プローブは、デバイスの周囲の環境光や色情報を取得し、それをARオブジェクトのライティングや反射に適用する機能です。AREnvironmentProbeManager
コンポーネントで利用します。
この機能を使うと、ARオブジェクトが周囲の光景を反射したり、部屋の照明の色(例えば、夕日の赤い光や蛍光灯の白い光)の影響を受けたりするようになります。これにより、CGで作られたオブジェクトが、まるでその場に実在するかのように現実空間の光環境に自然に溶け込みます。リアリティを追求するAR体験において、見た目の説得力を大きく向上させる機能です。
点群 (Point Clouds)
点群(ポイントクラウド)は、デバイスが空間を認識する過程で検出した特徴点(feature points)を3D座標の集合として可視化する機能です。ARPointCloudManager
コンポーネントで管理されます。
通常、エンドユーザーが直接この機能を使うことはありませんが、開発者にとっては非常に有用です。点群を表示させることで、デバイスが現在どの程度空間を正しく認識しているかを視覚的に確認できます。トラッキングが不安定な場合など、デバッグ目的で空間認識の状態を把握するために役立ちます。
アンカー (Anchors)
アンカーは、現実世界の特定の場所と向きを記憶し、そこにARオブジェクトを「固定(アンカーリング)」するための仕組みです。ARAnchorManager
を通じて利用します。
デバイスが動き回っても、アンカーを設定したオブジェクトはワールド座標系での位置を維持しようとします。これにより、ユーザーが一度配置したARオブジェクトが、意図せずずれてしまうのを防ぎます。
さらに、永続的なアンカー(Persistent Anchors)やクラウドアンカー(Cloud Anchors)といった発展的な機能を使えば、アプリを一度終了して再起動しても、同じ場所にオブジェクトを再表示させたり、複数のユーザー間で同じAR空間を共有したりすることも可能になります。これは、マルチプレイヤーARゲームや共同作業を支援するARツールなど、より高度なアプリケーションを構築する上で不可欠な技術です。
AR Foundationを利用するメリット
AR Foundationを選択することは、ARアプリケーションを開発する上で多くのメリットをもたらします。特に、開発の効率性、拡張性、そして将来性において、他の選択肢と比較して大きなアドバンテージがあります。ここでは、その主要なメリットを3つの側面に分けて掘り下げていきます。
1つのコードでマルチプラットフォームに対応できる
AR Foundationを利用する最大のメリットは、単一のコードベースでiOSとAndroidの両プラットフォームに対応できる点です。これは「Write once, run anywhere(一度書けば、どこでも実行できる)」という思想をAR開発にもたらすもので、開発プロセス全体に絶大な効果をもたらします。
- 開発コストと期間の大幅な削減: 本来であれば、iOS向けにはSwift/Objective-CとARKitを、Android向けにはKotlin/JavaとARCoreを使って、それぞれ別々にアプリケーションを開発する必要がありました。これは単純に考えても2倍の開発リソース(人員、時間、予算)を要します。AR Foundationを使えば、C#とUnityエディタで開発した一つのプロジェクトから、iOSアプリとAndroidアプリの両方をビルドできます。これにより、開発コストと市場投入までの時間を劇的に短縮できます。
- メンテナンス性の向上: アプリケーションはリリースして終わりではありません。バグの修正、機能の追加、OSのアップデートへの対応など、継続的なメンテナンスが必要です。コードベースが一つにまとまっていることで、修正や変更を一度行うだけで両プラットフォームに反映させることができます。これにより、メンテナンスの工数が削減され、品質管理も容易になります。
- 幅広いユーザーへのリーチ: iOSとAndroidという世界の二大モバイルプラットフォームに同時に対応できるため、より多くのユーザーにアプリケーションを届けることが可能になります。ビジネスの観点から見ても、これは非常に大きな利点です。
このクロスプラットフォーム対応は、特にリソースが限られている中小規模の開発チームや個人開発者にとって、AR開発への参入障壁を大きく下げる要因となっています。
Unityエディタ上で効率的に開発できる
Unityは、もともとゲーム開発エンジンとして発展してきた経緯から、非常に高機能で直感的な統合開発環境(IDE)である「Unityエディタ」を備えています。AR FoundationはUnityに深く統合されているため、これらの強力な機能をAR開発に最大限活用できます。
- 直感的なシーン構築: 3Dモデルの配置、マテリアルの設定、UIのレイアウトなどを、視覚的なシーンビューを使ってドラッグ&ドロップで直感的に行えます。プログラマーだけでなく、デザイナーやアーティストも開発プロセスに直接参加しやすくなります。
- XR Simulationによる高速なイテレーション: 従来、ARアプリの動作確認は、プロジェクトをビルドしてスマートフォン実機に転送するという時間のかかる作業でした。しかし、近年のAR Foundationには「XR Simulation」という機能が搭載されています。これにより、Unityエディタ内でキーボードとマウスを使って仮想的なデバイスを操作し、平面検出やオブジェクト配置といった基本的なAR機能の動作をシミュレートできます。実機ビルドの頻度を減らし、開発サイクルを高速化(高速イテレーション)できるのは、生産性向上において非常に大きなメリットです。
- 豊富なデバッグツール: Unityエディタには、コンソール、プロファイラ、フレームデバッガなど、問題の原因特定を助ける強力なデバッグツールが標準で備わっています。これらを活用することで、パフォーマンスのボトルネックを発見したり、複雑なバグを効率的に修正したりできます。
Unityエディタという成熟した開発環境の恩恵を受けられることは、開発体験の質を大きく向上させ、より複雑で洗練されたARアプリケーションの実現を可能にします。
豊富なアセットやコミュニティを活用できる
Unityが世界中の開発者に支持される理由の一つに、その巨大なエコシステムが挙げられます。AR Foundationを使った開発も、このエコシステムの恩恵を存分に受けることができます。
- Unity Asset Storeの活用: Unity Asset Storeは、3Dモデル、エフェクト、オーディオ、エディタ拡張、開発ツールなど、ありとあらゆるデジタルアセットが売買されている世界最大級のマーケットプレイスです。AR開発に特化したアセットも数多く存在し、例えば「ARコンテンツを簡単に配置できるUIシステム」や「高度なインタラクションを実現するスクリプト」などを購入・導入することで、開発時間を大幅に短縮し、アプリのクオリティを高めることができます。すべてを自前で開発する必要がないため、開発者はアプリのコアとなるユニークな体験の創造にリソースを集中させられます。
- 巨大で活発な開発者コミュニティ: Unityは世界中に数百万人の開発者コミュニティを擁しています。公式のUnity Forum、Q&AサイトのUnity Answers、あるいは技術ブログ(Qiita, Zennなど)、Stack Overflow、Discord、YouTubeなど、さまざまな場所で活発な情報交換が行われています。開発中に問題に直面したとき、検索すれば大抵のことは先人が解決策を残してくれています。また、質問を投稿すれば、世界中の開発者からアドバイスをもらえる可能性もあります。この集合知の存在は、特に初学者にとって心強い支えとなるでしょう。
これらのメリットが組み合わさることで、AR Foundationは単なる技術的なフレームワークに留まらず、開発者を強力にサポートする包括的な開発プラットフォームとして機能しているのです。
AR Foundationを利用するデメリット・注意点
AR Foundationは非常に強力で便利なツールですが、万能というわけではありません。そのアーキテクチャに起因するいくつかのデメリットや、開発を進める上で注意すべき点が存在します。これらを事前に理解しておくことで、技術選定のミスを防ぎ、より現実的な開発計画を立てることができます。
プラットフォーム間の機能差が存在する
AR FoundationはARKitとARCoreの差異を吸収する「抽象化レイヤー」であると説明しましたが、この抽象化は完璧ではなく、すべての機能差を完全に隠蔽できるわけではありません。プラットフォーム(iOS/Android)のハードウェアやOSの進化に伴い、どうしても機能的な差分が生じてしまいます。
例えば、以下のようなケースが考えられます。
- 特定のセンサーに依存する機能: AppleがiPhone Proモデルに搭載したLiDARスキャナを活用する高度な機能(例:高速な平面検出、リアルタイムの環境メッシュ生成)は、同等のセンサーを持たない多くのAndroidデバイスでは利用できません。AR Foundationでこれらの機能を使おうとしても、対応デバイスでなければ動作しない、あるいは機能が制限されることになります。
- OSレベルで提供される新機能: AppleがWWDC(世界開発者会議)でARKitの新機能を発表した場合、その機能がARCoreに同等レベルで実装されるとは限りません。逆もまた然りです。例えば、特定のバージョンのARKitのみがサポートする「人物オクルージョン」や「ボディトラッキング」の精度が、ARCoreのそれよりも高い、といった差が生じることがあります。
開発者は、アプリケーションのコア機能として利用したい技術が、ターゲットとする両プラットフォームで安定して動作するかを事前に確認する必要があります。Unityの公式ドキュメントには、各機能がどのプラットフォームでサポートされているかを示す対応表(Feature support matrix)が用意されているため、プロジェクト開始前に必ず目を通しておくべきです。
機能の例 | ARKit (iOS) | ARCore (Android) | 注意点・考慮事項 |
---|---|---|---|
平面検出 | ✅ | ✅ | 垂直平面の検出安定性などに差が出る可能性がある |
人物オクルージョン | ✅ | ✅ | サポートされるデバイスの範囲や精度に差が存在する |
環境メッシュ生成 | ✅ (LiDAR搭載機) | △ (一部対応) | ARKitのLiDARベースのメッシュは非常に高精細 |
5G/GPS連携機能 | プラットフォーム固有 | プラットフォーム固有 | AR Foundationの標準機能外。ネイティブ実装が必要になる場合も |
このような機能差を考慮せず、一方のプラットフォームでのみ動作する機能を前提に企画を進めてしまうと、後からもう一方のプラットフォームで実現できないことが判明し、大幅な仕様変更を余儀なくされる可能性があります。
最新機能への対応が遅れることがある
AR Foundationは、ARKitとARCoreのアップデートに追従する形で開発が進められています。つまり、AppleやGoogleがそれぞれのSDKで画期的な新機能を発表しても、その機能がAR Foundationに正式に組み込まれ、安定して利用できるようになるまでには、ある程度のタイムラグが発生するのが一般的です。
このタイムラグは、数週間から数ヶ月に及ぶこともあります。そのため、以下のような要件を持つプロジェクトには、AR Foundationが不向きな場合があります。
- 最先端のAR技術をいち早く製品に導入したい場合: 例えば、発表されたばかりの最新センサーやOSの機能を活用した、競合他社にないユニークな体験を最速で市場に投入したい場合、AR Foundationの対応を待っているとビジネスチャンスを逃す可能性があります。このようなケースでは、ネイティブSDK(ARKit/ARCore)を直接使って開発する方が有利になります。
- プラットフォームのベータ版機能を試したい場合: OSの次期バージョンのベータ版で公開されるような実験的な機能を試したい場合も同様です。AR Foundationは基本的に安定版のSDKをサポート対象とするため、ベータ機能への対応は保証されません。
開発者は、AR FoundationのパッケージがUnityのパッケージマネージャを通じて頻繁にアップデートされることを認識し、常にリリースノートをチェックして、どのバージョンのネイティブSDKに対応しているか、どの新機能が追加されたか、といった情報を追い続ける必要があります。
ネイティブの全機能が使えるわけではない
AR Foundationは、多くの開発者にとって必要十分な機能を提供するために、ARKitとARCoreの機能を共通のAPIセットとして「最大公約数」的にまとめています。その結果、ネイティブSDKが提供している非常に細かい、あるいは特殊な機能の一部は、AR FoundationのAPIからは直接アクセスできない場合があります。
例えば、以下のような高度なカスタマイズを行いたい場合です。
- カメラの解像度やフレームレートを細かく制御したい。
- センサーフュージョン(複数のセンサー情報を統合する処理)のアルゴリズムに独自の設定を加えたい。
- プラットフォーム固有の低レベルなAPIを呼び出して、パフォーマンスを極限まで最適化したい。
このようなケースでは、AR Foundationの標準機能だけでは対応できない可能性があります。解決策としては、C#からネイティブコード(iOSならObjective-C/Swift、AndroidならJava/Kotlin)を呼び出すためのブリッジを作成したり、ネイティブプラグインを自作したりといった、より高度な開発スキルが求められます。
結論として、AR Foundationは大多数のARアプリ開発において最適な選択肢ですが、その「抽象化」という特性が、特定の状況下では制約となりうることを理解しておくことが重要です。プロジェクトの要件と、これらのデメリットを天秤にかけ、適切な技術選定を行うことが成功への鍵となります。
AR Foundationを使ったARアプリ開発の始め方【5ステップ】
ここからは、実際にAR Foundationを使ってARアプリケーション開発を始めるための具体的な手順を、5つのステップに分けて解説します。Unityのインストールからプロジェクトの初期設定まで、この手順に沿って進めれば、誰でもAR開発のスタートラインに立つことができます。
① Unity HubとUnity Editorをインストールする
まず、Unityの開発環境を整えます。Unityの開発は「Unity Hub」というランチャーアプリケーションを通じて行うのが一般的です。
- Unity Hubのダウンロード: Unityの公式サイトにアクセスし、Unity Hubをダウンロードしてインストールします。Unity Hubは、複数のUnity Editorのバージョンを管理したり、プロジェクトを一元管理したりするための便利なツールです。
- Unity IDの作成: Unity Hubを起動すると、Unity IDでのサインインを求められます。持っていない場合は、画面の指示に従って無料で作成してください。
- Unity Editorのインストール: Unity Hubの「インストール」タブを開き、「エディターをインストール」ボタンをクリックします。バージョンの選択画面が表示されたら、「LTS」と記載されているバージョンを選択するのがおすすめです。LTS(Long-Term Support)版は、長期間にわたってサポートが提供される安定したバージョンであり、安心して開発を進められます。
- モジュールの追加: インストールするUnity Editorのバージョンを選択する際、「モジュールを加える」という画面が表示されます。ここで、自分が開発したいプラットフォームのビルドサポートを追加する必要があります。
- Android向けに開発する場合: 「Android Build Support」にチェックを入れ、その中の「OpenJDK」と「Android SDK & NDK Tools」にもチェックが入っていることを確認します。
- iOS向けに開発する場合: 「iOS Build Support」にチェックを入れます。(iOSアプリのビルドにはmacOSが必須です)
これで、AR開発に必要なUnityの基本環境が整いました。
② 新規プロジェクトを作成する
次に、ARアプリを開発するための新しいUnityプロジェクトを作成します。
- Unity Hubの「プロジェクト」タブを開き、「新しいプロジェクト」ボタンをクリックします。
- エディターのバージョンが、先ほどインストールしたLTS版になっていることを確認します。
- テンプレートの選択画面では、「3D (URP)」または「3D」を選択します。URP (Universal Render Pipeline) は、比較的新しい描画パイプラインで、さまざまなプラットフォームで高いパフォーマンスと美しいグラフィックスを実現できるため、近年はこちらが推奨されることが多いです。
- プロジェクト名(例: MyFirstARApp)とプロジェクトの保存場所を入力し、「プロジェクトを作成」ボタンをクリックします。
しばらく待つと、Unity Editorが起動し、空の3Dプロジェクトが表示されます。
③ 必要なパッケージをインストールする
AR Foundationは、Unityに標準で組み込まれているわけではなく、追加の「パッケージ」としてインストールする必要があります。
- Unity Editorの上部メニューから
Window > Package Manager
を選択し、Package Managerウィンドウを開きます。 - ウィンドウ左上の「Packages」というドロップダウンメニューをクリックし、「Unity Registry」を選択します。これで、Unityが公式に提供しているパッケージの一覧が表示されます。
- リストの中から、以下のパッケージを探してインストールします。検索バーに名前を入力すると簡単に見つけられます。
AR Foundation
これがAR Foundationの本体です。リストから「AR Foundation」を選択し、右下の「Install」ボタンをクリックしてインストールします。バージョンは、特に理由がなければ最新の安定版を選択しましょう。
ARCore XR Plugin / ARKit XR Plugin
次に、ターゲットとするプラットフォームに対応するプラグインをインストールします。
- Android向け: リストから「ARCore XR Plugin」を探してインストールします。
- iOS向け: リストから「ARKit XR Plugin」を探してインストールします。
両方のプラットフォーム向けに開発する予定であれば、両方ともインストールしておくのが一般的です。
④ XR Plug-in Managementを設定する
パッケージをインストールしただけでは、プロジェクトでAR機能が有効になりません。次に、どのARプラグイン(ARKitやARCore)を使用するかをプロジェクト設定で指定する必要があります。
- 上部メニューから
Edit > Project Settings
を選択し、Project Settingsウィンドウを開きます。 - 左側のリストから「XR Plug-in Management」を選択します。
- ウィンドウに複数のタブ(PCのアイコン、Androidのアイコン、Appleのアイコン)が表示されます。まず、Androidのアイコンのタブを選択し、「ARCore」のチェックボックスをオンにします。
- 次に、Appleのアイコンのタブを選択し、「ARKit」のチェックボックスをオンにします。
これにより、プロジェクトがAndroidでビルドされる際にはARCoreが、iOSでビルドされる際にはARKitが自動的に有効になります。
⑤ ビルド設定をおこなう
最後に、各プラットフォーム固有のビルド設定を調整します。
- 上部メニューから
File > Build Settings
を選択し、Build Settingsウィンドウを開きます。 - 「Platform」のリストから、まず開発・テストしたいプラットフォーム(例: Android)を選択し、「Switch Platform」ボタンをクリックします。
- 「Player Settings…」ボタンをクリックして、Project SettingsのPlayer設定を開きます。
- Android向けの設定(Androidタブ):
Other Settings > Rendering
: 「Graphics APIs」のリストから「Vulkan」を削除し、「OpenGLES3」が一番上に来るようにします。(互換性の問題を防ぐため)Other Settings > Identification
: 「Minimum API Level」をARCoreの要件を満たすレベル(例: API Level 24: Android 7.0)以上に設定します。Other Settings > Configuration
: 「Scripting Backend」を「IL2CPP」に設定し、「Target Architectures」で「ARM64」にチェックを入れます。(Google Playストアの要件)
- iOS向けの設定(iOSタブ):
Other Settings > Identification
: 「Camera Usage Description」に、なぜアプリがカメラへのアクセスを必要とするかの説明文(例: AR機能を利用するためにカメラを使用します)を入力します。これは、ユーザーに許可を求める際に表示されます。Other Settings > Configuration
: 「Requires ARKit support」のチェックボックスをオンにします。
以上で、AR Foundationを使った開発の基本的な準備は完了です。次のステップとして、シーンにARコンポーネントを配置していきます。
AR Foundationの基本的な使い方(シーンのセットアップ)
プロジェクトの初期設定が完了したら、次は実際にAR体験の舞台となる「シーン」をセットアップします。AR Foundationでは、いくつかの基本的なGameObjectをシーンに配置するだけで、ARの基本的な仕組みを構築できます。ここでは、ARシーンに必須となる3つの要素について解説します。
AR Session Originを配置する
「AR Session Origin」は、AR空間における原点(0, 0, 0)を定義し、現実世界のデバイスの動きとUnityシーン内のカメラを連動させるための中心的な役割を担います。
- Unity EditorのHierarchy(階層)ウィンドウで、何もないところを右クリックします。
- コンテキストメニューから
XR > AR Session Origin
を選択します。(UnityのバージョンによってはXR > XR Origin (AR)
という名前の場合もあります) - シーンに「AR Session Origin」という名前のGameObjectが配置されます。
このAR Session Originには、AR Session Origin
コンポーネントがアタッチされています。このコンポーネントは、デバイスのトラッキング情報(位置と回転)を受け取り、自身のTransform(位置・回転・スケール情報)に反映させます。その結果、このAR Session Originの子オブジェクトであるカメラも、ユーザーがスマートフォンを持って動き回るのに合わせて、シーン内を移動・回転することになります。
ARで表示する3Dオブジェクトなどは、すべてこのAR Session Originの子オブジェクトとして配置するか、AR Session Originを基準として座標を計算するのが基本となります。これにより、ARコンテンツが現実空間の特定の位置に固定されているように見せることができます。
AR Sessionを配置する
「AR Session」は、AR体験全体のライフサイクル(開始、一時停止、再開、終了)を管理する、いわばARシステムの司令塔のような存在です。
- Hierarchyウィンドウで右クリックします。
- コンテキストメニューから
XR > AR Session
を選択します。 - シーンに「AR Session」という名前のGameObjectが配置されます。
このGameObjectには、AR Session
コンポーネントがアタッチされています。このコンポーネントは、デバイスのAR機能(ARKitやARCore)を起動し、ワールドトラッキング(自己位置推定)を開始する役割を持ちます。また、トラッキングが失われたり、アプリがバックグラウンドに移行したりした際の挙動も制御します。
AR機能を有効にするためには、シーン内に必ず1つのAR Sessionが存在している必要があります。これがなければ、平面検出や画像トラッキングといったAR Foundationの機能は一切動作しません。AR Session OriginとAR Sessionは、ARシーンを構築する上での「両輪」と考えることができます。
AR Cameraを設定する
ARアプリケーションでは、デバイスの物理的なカメラで撮影している現実の風景を背景として描画し、その上に3Dの仮想オブジェクトを重ねて表示する必要があります。この役割を担うのが「AR Camera」です。
AR Session Originをシーンに配置すると、その子オブジェクトとして「Main Camera」が自動的に作成されます。このカメラがAR Cameraとしての役割を果たします。このMain Cameraオブジェクトを選択し、Inspectorウィンドウを確認すると、通常のCamera
コンポーネントに加えて、以下の重要なコンポーネントがアタッチされていることがわかります。
Tracked Pose Driver
: デバイスのトラッキング情報(ARKit/ARCoreから得られる位置と回転)を、このカメラのTransformに適用します。これにより、カメラが物理的なデバイスの動きと完全に同期します。AR Camera Manager
: デバイスのカメラから送られてくる映像の制御や、ライティング推定(環境プローブ)、カメラのフォーカス設定などを管理します。AR Camera Background
: 物理カメラの映像を、カメラの背景として描画するためのコンポーネントです。これがなければ、シーンには3Dオブジェクトしか映らず、背景は真っ黒(またはスカイボックス)のままになってしまいます。このコンポーネントが、現実の風景をレンダリングすることで、ARの「拡張現実」たる表示が実現されます。
通常、これらの設定はAR Session Originを配置した際に自動的に行われるため、開発者が細かく変更する必要はほとんどありません。しかし、ARシーンが正しく機能するための中心的な要素として、これら3つ(AR Session Origin, AR Session, AR Camera)が正しく配置され、設定されていることを確認することが、開発の第一歩となります。
【実践】平面を検出してオブジェクトを配置する方法
AR Foundationの基本的なセットアップが完了したところで、最も代表的なARのユースケースである「現実の床やテーブルを認識し、タップした場所に3Dオブジェクトを配置する」という機能を実装してみましょう。このプロセスを通じて、AR Foundationのマネージャーコンポーネントやスクリプトの基本的な使い方を学ぶことができます。
AR Plane Managerを追加する
まず、シーンに平面検出機能を追加します。これは「AR Plane Manager」というコンポーネントが担当します。
- Hierarchyウィンドウで、前回作成した「AR Session Origin」GameObjectを選択します。
- Inspectorウィンドウの下部にある「Add Component」ボタンをクリックします。
- 検索ボックスに「AR Plane Manager」と入力し、表示されたコンポーネントをクリックして追加します。
AR Plane Manager
コンポーネントにはいくつかの設定項目があります。
- Detection Mode: 検出する平面の種類を設定します。
Horizontal
(水平)、Vertical
(垂直)、Everything
(両方)から選択できます。今回は床やテーブルに置くことを想定し、Horizontal
を選択します。 - Plane Prefab: 検出した平面を可視化するために使用するPrefab(プレハブ)を指定します。これを設定しないと、平面が検出されても画面には何も表示されません。次に、このPrefabを作成します。
平面を可視化するためのPrefabを作成する
ユーザーがどこにオブジェクトを配置できるのか視覚的に示すため、検出した平面を半透明のメッシュなどで表示するのが一般的です。
- Hierarchyウィンドウで右クリックし、
XR > AR Default Plane
を選択します。シーンに「AR Default Plane」というGameObjectが作成されます。 - このGameObjectには、検出された平面の形状に合わせてメッシュを生成する
AR Plane Mesh Visualizer
コンポーネントや、メッシュを描画するためのMesh Renderer
などが最初から設定されています。 - Projectウィンドウ(プロジェクトファイル一覧)の
Assets
フォルダ内に、新しく「Prefabs」というフォルダを作成します。 - Hierarchyウィンドウにある「AR Default Plane」を、Projectウィンドウの「Prefabs」フォルダにドラッグ&ドロップします。これで、「AR Default Plane」がPrefab化されました。
- Hierarchyウィンドウ上の「AR Default Plane」は不要になったので、削除します。
- 再びHierarchyウィンドウで「AR Session Origin」を選択し、Inspectorウィンドウの
AR Plane Manager
コンポーネントを見ます。 - 「Plane Prefab」の項目に、先ほど作成した「AR Default Plane」のPrefabをProjectウィンドウからドラッグ&ドロップで設定します。
これで、アプリを実行して床などをカメラで映すと、認識された平面が半透明のメッシュとして表示されるようになります。
タップした場所にオブジェクトを配置する
最後に、画面をタップした位置に対応する平面上の場所に、任意の3Dオブジェクトを配置する機能をスクリプトで実装します。
- 配置するオブジェクトの準備:
- Hierarchyウィンドウで右クリックし、
3D Object > Cube
を選択して、Cube(立方体)をシーンに配置します。 - 大きすぎると邪魔なので、InspectorでScaleを(0.1, 0.1, 0.1)程度に調整します。
- このCubeを、先ほどと同様に「Prefabs」フォルダにドラッグ&ドロップしてPrefab化し、シーン上のCubeは削除します。
- Hierarchyウィンドウで右クリックし、
- Raycast Managerの追加:
- タップした画面上の点から、AR空間に向かって「Ray(光線)」を飛ばし、それが平面と交差したかどうかを判定する必要があります。この機能は「AR Raycast Manager」が提供します。
- 「AR Session Origin」GameObjectに、「Add Component」から
AR Raycast Manager
コンポーネントを追加します。
- C#スクリプトの作成:
- Projectウィンドウの
Assets
フォルダ内に「Scripts」フォルダを作成します。 - その中で右クリックし、
Create > C# Script
を選択し、スクリプトに「PlaceObjectOnPlane」という名前を付けます。 - 作成したスクリプトをダブルクリックして開き、以下のコードを記述します。
“`csharp
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.ARFoundation;
using UnityEngine.XR.ARSubsystems;[RequireComponent(typeof(ARRaycastManager))]
public class PlaceObjectOnPlane : MonoBehaviour
{
[SerializeField]
private GameObject objectToPlacePrefab; // 配置したいオブジェクトのPrefabprivate ARRaycastManager raycastManager; private List<ARRaycastHit> hits = new List<ARRaycastHit>(); void Awake() { raycastManager = GetComponent<ARRaycastManager>(); } void Update() { // 画面がタップされたかどうかを検出 if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) { // タップされた位置からRayを飛ばし、平面と衝突したか判定 if (raycastManager.Raycast(Input.GetTouch(0).position, hits, TrackableType.PlaneWithinPolygon)) { // 最初の衝突点のPose(位置と回転)を取得 Pose hitPose = hits[0].pose; // Prefabから新しいオブジェクトを生成 Instantiate(objectToPlacePrefab, hitPose.position, hitPose.rotation); } } }
}
“` - Projectウィンドウの
- スクリプトのアタッチと設定:
- Unity Editorに戻り、作成した「PlaceObjectOnPlane」スクリプトを、「AR Session Origin」GameObjectにドラッグ&ドロップしてアタッチします。
- Inspectorウィンドウを見ると、
PlaceObjectOnPlane (Script)
コンポーネントに「Object To Place Prefab」という項目が追加されています。 - ここに、先ほど作成したCubeのPrefabをProjectウィンドウからドラッグ&ドロップで設定します。
以上で実装は完了です。プロジェクトを実機でビルドして実行し、カメラで床を映して平面が検出されたら、画面をタップしてみてください。タップした場所にCubeが正しく配置されれば成功です。この一連の流れが、AR Foundationを使った開発の最も基本的なワークフローとなります。
AR Foundationの学習におすすめのリソース
AR Foundationは非常に多機能であり、そのすべてを独学でマスターするのは簡単ではありません。幸いにも、Unityの巨大なエコシステムのおかげで、学習に役立つリソースが豊富に存在します。ここでは、初心者から上級者まで、スキルレベルに応じて活用できるおすすめの学習リソースを紹介します。
Unity公式ドキュメント
最も正確で信頼性の高い情報源は、何と言ってもUnity公式のドキュメントです。新しいバージョンがリリースされた際の変更点や、各コンポーネントの詳細な仕様、APIリファレンスなど、開発に必要な一次情報がすべてここに集約されています。
- AR Foundation マニュアル: AR Foundationの概要、セットアップ方法、各機能の基本的な使い方などが体系的にまとめられています。まずはここを一度通読することで、全体の構造を理解できます。
- スクリプティング API:
ARPlaneManager
やARAnchorManager
といった各クラスやメソッドの詳細な仕様が記載されています。特定の機能を実装する際に、どのようなメソッドが利用できるのか、引数に何を指定すればよいのかなどを確認するために不可欠です。
公式ドキュメントは英語で書かれていることが多いですが、ブラウザの翻訳機能を使ったり、重要な専門用語を覚えたりしながら読み進めることが、正確な知識を身につける上で非常に重要です。開発中に行き詰まったら、まずは公式ドキュメントを参照する習慣をつけましょう。(参照:Unity Technologies「AR Foundation Documentation」)
Unity Learn
Unity Learnは、Unityが公式に提供している無料のオンライン学習プラットフォームです。ビデオチュートリアル、ハンズオンプロジェクト、記事など、多様な形式の学習コンテンツが提供されており、AR Foundationに特化したコースも多数用意されています。
- 初心者向けチュートリアル: 「はじめてのARアプリ制作」のような、環境構築から簡単なオブジェクト配置までをステップバイステップで学べるコースがあります。動画を見ながら実際に手を動かして学べるため、プログラミング初心者でも取り組みやすいのが特徴です。
- 中級者向けプロジェクト: 画像トラッキングやフェイストラッキングといった、より具体的な機能を実装するサンプルプロジェクトが提供されています。完成したプロジェクトをダウンロードして、その構造やスクリプトを分析することも、スキルアップに非常に役立ちます。
Unity Learnは体系的に知識を整理しながら学びたい方に特におすすめです。自分のペースで進められるため、忙しい社会人や学生でも継続しやすいでしょう。
技術ブログやコミュニティ
Unity開発者コミュニティは非常に活発で、世界中の開発者がブログやフォーラムで有益な情報を共有しています。公式ドキュメントには載っていない、より実践的なノウハウや、特定の問題に対する解決策が見つかることも少なくありません。
- 技術ブログ: 日本国内ではQiitaやZenn、海外ではMediumなどが代表的です。多くの開発者がAR FoundationのTips、実装例、エラーの解決策などを記事として公開しています。特定の機能を実装したいときに「AR Foundation 画像トラッキング やり方」のように検索すると、参考になる記事が見つかることが多いです。
- Unity Forum: Unity公式のフォーラムには、AR Foundation専用のセクションがあります。ここでは、開発者同士が質問をしたり、バグ報告をしたり、新機能について議論したりしています。過去の投稿を検索するだけでも、多くの問題が解決する可能性があります。
- ソーシャルメディアやDiscord: X (旧Twitter) やDiscordにも、Unity開発者やAR/VR開発者が集まるコミュニティが存在します。リアルタイムで情報を交換したり、他の開発者と交流したりすることで、モチベーションの維持にも繋がります。
オンライン学習プラットフォーム
より体系的で深い知識を求める場合や、講師から直接指導を受けたい場合には、有料のオンライン学習プラットフォームも有効な選択肢です。
- Udemy: 世界最大級のオンライン学習プラットフォームで、AR Foundationに関する講座も多数公開されています。初心者向けから上級者向けまで、さまざまなレベルのコースがあり、セール期間中には手頃な価格で購入できることも多いです。レビューを参考に、自分の目的に合ったコースを選ぶと良いでしょう。
これらのリソースを組み合わせることで、効率的かつ継続的にAR Foundationのスキルを向上させることができます。まずは公式のチュートリアルから始め、興味のある機能を技術ブログで深掘りし、分からないことがあればコミュニティで質問する、というサイクルを回していくのがおすすめです。
AR Foundationに関するよくある質問
これからAR Foundationを始めようとする方が抱きがちな、いくつかの一般的な質問についてQ&A形式で回答します。
AR Foundationは無料ですか?
はい、AR Foundationのパッケージ自体は無料です。追加のライセンス料などを支払う必要はありません。
ただし、AR Foundationを利用するにはUnity Editorが必要であり、そのUnityのライセンス体系に従うことになります。Unityには、個人の学習や小規模なプロジェクト向けの無料ライセンス「Unity Personal」が用意されています。過去12ヶ月の収益または資金調達額が10万米ドル未満である場合、このUnity Personalライセンスを無料で利用でき、AR Foundationを使ったアプリケーションの開発・リリースが可能です。
収益がこの基準を超える企業や個人は、有料の「Unity Pro」や「Unity Industry」といったライセンスに移行する必要があります。結論として、ほとんどの個人開発者やスタートアップにとって、AR Foundationは無料で利用開始できると言えます。(参照:Unity Technologies「Unityプランと価格」)
どのバージョンのUnityを使えばいいですか?
AR開発においては、ツールの安定性が非常に重要です。そのため、基本的には最新の「LTS (Long-Term Support)」バージョンを使用することを強く推奨します。
LTSバージョンは、2年間にわたってUnity Technologiesによるサポートとアップデートが提供される、最も安定したリリースです。新機能の追加よりも安定性やバグ修正が優先されるため、長期的なプロジェクトや製品開発に適しています。
一方、最新の「TECHストリーム」と呼ばれるバージョンは、新機能が積極的に追加される反面、LTS版に比べて不安定な場合があります。最先端の機能を試したい場合を除き、まずはLTS版から始めるのが無難です。
また、AR Foundationの各バージョンは、特定のUnity Editorバージョンとの互換性が保証されています。UnityのPackage ManagerでAR Foundationをインストールする際に、自分のUnity Editorのバージョンに対応したパッケージが自動的に選択されますが、念のため公式ドキュメントでバージョン間の対応関係を確認しておくと、予期せぬトラブルを避けられます。
Vuforiaとの違いは何ですか?
Vuforia Engineは、Unityで利用できるもう一つの有名なAR開発SDKであり、AR Foundationとしばしば比較されます。両者はARアプリを開発するためのツールという点では共通していますが、その出自や得意分野に違いがあります。
項目 | AR Foundation | Vuforia Engine |
---|---|---|
提供元 | Unity Technologies | PTC Inc. |
ベース技術 | ARKit (Apple), ARCore (Google) | 独自のコンピュータービジョン技術 |
主な強み | クロスプラットフォーム開発の容易さ、平面検出、フェイストラッキングなど、OS標準のAR機能を活用することに長ける。 | 独自の高度な画像認識技術。特にModel Targets(3Dオブジェクト認識)やArea Targets(空間認識)といったマーカーベースARに強力な実績と機能を持つ。 |
ライセンス | Unityライセンスに準拠(Personal版は無料) | 無料プランあり(Vuforiaの透かしロゴが表示される)。ロゴなしでの商用利用には有料ライセンスが必要。 |
統合 | Unityに標準で統合(パッケージとして導入) | Unity Asset StoreからSDKをダウンロードして導入 |
どちらを選ぶべきか?
- AR Foundationがおすすめの場合:
- 無料でAR開発を始めたい。
- iOSとAndroidの両方に対応するアプリを効率的に開発したい。
- 平面検出やフェイストラッキングなど、マーカーレスのAR体験を主軸にしたい。
- Vuforiaがおすすめの場合:
- 特定の工業製品や玩具などを高精度に認識・追跡する「Model Targets」機能を使いたい。
- 特定の空間(部屋や工場など)をスキャンし、その空間全体をマーカーとして利用する「Area Targets」機能を使いたい。
- ARKit/ARCoreがサポートしていない古いデバイスにも、ある程度対応したい(Vuforiaは独自の技術で動作するため)。
近年、AR Foundationの機能も大幅に向上しており、多くのユースケースで十分な性能を発揮します。そのため、特別な要件がない限り、まずはUnity公式で無料のAR Foundationから試してみるのが標準的なアプローチと言えるでしょう。
まとめ
本記事では、UnityにおけるAR開発の標準フレームワークである「AR Foundation」について、その基本概念から具体的な機能、メリット・デメリット、そして実践的な使い方までを包括的に解説しました。
最後に、この記事の要点をまとめます。
- AR FoundationはUnity公式のAR開発フレームワークであり、AppleのARKitとGoogleのARCoreを統合的に扱えるクロスプラットフォーム対応が最大の特徴です。
- 平面検出、画像トラッキング、フェイストラッキング、オクルージョンなど、現代のARアプリに求められる豊富な機能を網羅しており、これらを組み合わせることで多様なAR体験を創造できます。
- 利用するメリットとして、「1つのコードでマルチプラットフォーム対応」「Unityエディタによる効率的な開発」「豊富なアセットとコミュニティの活用」が挙げられ、開発コストの削減と生産性の向上に大きく貢献します。
- 一方で、プラットフォーム間の機能差や、ネイティブSDKの最新機能への対応の遅れといった注意点も存在するため、プロジェクトの要件に応じて技術選定を行う必要があります。
- 開発を始めるには、Unity HubとLTS版のUnity Editorをインストールし、必要なパッケージ(AR Foundation, ARCore/ARKit XR Plugin)を導入後、XR Plug-in Managementで有効化するという手順を踏みます。
AR Foundationの登場により、かつては専門的な知識を要したARアプリケーション開発は、より多くの開発者にとって身近なものとなりました。Unityという強力な開発環境の上で、iOSとAndroidという広大な市場に向けて、統一された手法で開発を進められることの価値は計り知れません。
この記事が、あなたのAR開発への第一歩を踏み出すための助けとなれば幸いです。まずは簡単なサンプルを作成することから始め、平面にオブジェクトを置いたり、画像を認識させたりする面白さを体験してみてください。そこから、あなたのアイデア次第で、世界を拡張する無限の可能性が広がっていくはずです。