AR開発で必要な開発環境やライブラリをまとめて解説!
近年利用者が増加し、技術の発展が目まぐるしいAR(Augmented Reality)は、GPSなどの位置情報やオブジェクトの解析情報などから、デバイスが取り込んだ現在位置にデジタル情報を付加し、現実を拡張する技術です。 例えばQRコードを読み込むとARが表示されるものや、顔を認識してメイクやアクセサリーをARで表示させるものなどがあります。また、利用範囲はゲーム、イベント、技術研修など多岐にわたります。 このようなARを開発するには、アプリの開発環境とは別に、AR用のライブラリを使用する必要があります。ここでは、AR開発に必要なライブラリや開発環境の構築について、弊社のAR実績をもとに解説していきます。 AR開発を行なうために必要なこと AR開発には、アプリ本体の開発に使用する開発環境と、AR用のライブラリの2つが必要になります。それぞれ、どのような統合開発環境やライブラリがあるのか見ていきましょう。 開発環境 開発環境に関しては、通常のアプリの開発環境と基本的に変わりません。使用する言語に合わせて、利用する開発環境を選択します。開発するARのターゲットによって使用する環境が変わるため、まずはターゲットとなるデバイスを明確にしましょう。 アプリ開発向けのIDEは、Appleが提供するXcodeや、Googleが提供するAndroid Studioのほか、VR・ARに強みを持つUnityや、MicrosoftのVisual Studioなどが挙げられます。 ARの開発に使用される言語は、iOS向けにはSwift、Android向けにはKotlinやJavaが挙げられます。またUnityを使用する場合はC#、アプリではなくWebでARを実装するWeb ARの場合はHTML+JavaScriptになります。 なお、Web ARについては次の記事で詳しく解説していますので併せてご確認ください。Web ARとは?事例や開発に必要なものなどを紹介 AR用のライブラリ AR用のライブラリには、AppleやGoogleが提供する公式のライブラリのほかに、AmazonやFacebookが提供するライブラリもあります。また、Magic Leap、HoloLensなどのデバイスに最適化された専用ライブラリや、Unityなどで使用できiOS/Androidどちらでも利用可能なライブラリも複数あり、最近ではWeb ARに対応したものも増加しています。 ライブラリによって機能面での特徴が異なるため、開発予定のARの用途に併せてライブラリを選択する必要があります。特別に複雑な機能を搭載したいなどの理由がなければ、まずはプラットフォームを提供する企業の公式ライブラリを利用するのをおすすめします。 AR開発で使用するライブラリ AR開発で使われているライブラリ・フレームワークについて、プラットフォームの公式が提供しているライブラリを中心に、代表的な6つについて解説していきます。なお、今回紹介するライブラリのほかに、Web ARの開発でよく用いられるA-FrameやAR.jsなどのライブラリも存在します。 Apple ARKit Apple社が提供する、iOS向けのARライブラリです。動作にはARKitに対応したCPUを搭載したデバイスが必要になります。開発に使用するプログラミング言語はSwiftまたはObjective-Cで、最新バージョンは2020年6月にリリースされたARKit4です。 強力なフェイストラッキング機能などを持つARKitですが、最新のARKit4の特徴的な機能は「Location Anchors(ロケーション・アンカー)」でしょう。この機能はApple社の3D地図データをもとに、現実に存在する有名なスポットやランドマークにARオブジェクトを設置できます。 従来のARでは端末ごとにARを個別に表示していましたが、ロケーション・アンカーを使用したARでは、現実の世界にある特定の場所にCGのオブジェクトを設置するため、複数の人が同じARを見ることが可能になりました。設置されたARオブジェクトを自由な角度から見たり、歩くことができ、よりインタラクティブな体験を共有できます。 AR Core Google社が提供するARライブラリです。Apple社のデバイス上で動作することを前提としたARKitと異なり、ARCoreは幅広いデバイスで動作し、以下の開発環境に対応しています。 ・Androidネイティブ(Java、Kotlin)・Unity・Unreal・iOSネイティブ(Objective-C、Swift) iOS上でも動作するため、クロスプラットフォームのARアプリを開発する際に、ライブラリとしてARCoreを選択する事例もあります。例えばARCore+Unityで開発した場合、AndroidとiOSのクロスプラットフォームで開発が可能になります。しかし、ARKitと比較すると、物体トラッキングやモーションキャプチャが弱いなどのデメリットも存在します。 Amazon Sumerian Amazonが提供するAWSをベースとしたAR開発ライブラリです。複数のプラットフォームで動作し、WebGLやWebVRをサポートするほか、ウェブブラウザ (Chrome や Firefox など)、モバイルブラウザ (iOS、Android など)、Oculus Go、Oculus Rift、HTC Vive、HTC Vive Pro、Google Daydream、Lenovo Mirageにも対応しています。 開発言語はHTMLとJavaScriptです。開発環境もブラウザベースで比較的敷居が低く、特別なプログラミングや3Dグラフィックスの処理に関する専門知識がなくても、VRやARのアプリを簡単に作成して、既存のWebサイトに埋め込むことができます。 Spark AR Studio Facebookが開発したARライブラリで、Instagramのストーリーで使用するARのエフェクトフィルターを作成するIDEとして知られています。 ツールは無償で提供されており、詳細なチュートリアル動画に加え、簡単にARを作成できるテンプレートが豊富に用意されているため、簡単なARであれば一切コードを書かずに開発できるます。そのため、まったく知識がない状態からでもARのエフェクトを作成することが可能です。他のAR開発ツールと比較すると、開発の敷居はとても低いのが特徴といえます。 Spark AR Studioを利用して作成したエフェクトはFacebookやInstagram上で公開できます。エフェクトを作成して公開することでフォロワーの獲得や購買行動に繋げることができ、SNSでのコマースに活用できます。 Magic Leap Toolkit ヘッドマウント型のARディスプレイMagic Leap専用のARライブラリです。Magic Leap向けのコンテンツを開発する際に必要となる機能が最適化されており、Unityに取り込んで使用します。 Magic Leap向けコンテンツの開発はC系言語やHTML+JavaScriptにも対応していますが、提供されているライブラリはUnityのみになります。 Mixed Reality Toolkit Microsoftが提供するHoloLens用の開発フレームワークです。HoloLens向けのコンテンツはUnrealまたはUnityで行ないますが、HoloLens向けのフレームワークはUnity版のみ公開されています。 そのため、HoloLensのARコンテンツを作成する際には、IDEはVirtual Studio、開発言語はUnity、開発フレームワークはMixed Reality Toolkitの組み合わせがほぼ必須となります。 おすすめのAR開発の始め方とは? 初めてAR開発を行なう場合は、つまずくポイントを減らすためにも、極力使い慣れた開発環境で行なうのがおすすめです。 しかしターゲットとなるデバイスがiOS端末なのかAndroid端末なのか、それともHoloLensなのかなど、プラットフォームによって、構築する開発環境が異なります。そのため、どの層をターゲットとしてARアプリをリリースするのか、明確な方向性を定めた上でAR開発を始めましょう。 iOS用のアプリを作る Xcodeでの開発に慣れている場合は、Xcode+ARKitがおすすめです。特に理由がなければ、iOS向けのARコンテンツはApple公式が提供する環境を使用するほうが無難でしょう。この場合、開発言語には主にSwiftを使用します。 他のプラットフォームとのクロスプラットフォーム開発が必要なケースや、Unityでの開発に慣れている場合は、Unity+ARKitでの開発も可能です。 Android用のアプリを作る Android Studioでの開発に慣れている場合は、Android Studio+AR Coreでの開発がよいでしょう。Android Studioを使用する場合は、開発言語はKotlinやJavaが中心になります。 前述の通り、AR CoreはUnreal EngineやUnity、Swift、Objective-Cにも対応しているため、クロスプラットフォーム開発を行ないたい場合や、Android以外のプラットフォームで動作するARを開発する場合は、Unityを始めとしたほかの言語を選択するケースもあります。 Magic Leap用のアプリを作る Magic Leap公式の推奨開発環境は、Unity+Magic Leap Toolkitの組み合わせになります。 Magic Leap用のアプリはUnreal Engine...