第2章 ARKit 堤 修一/@shu223
ARKitは、AR(Augmented Reality / 拡張現実)を構築するためのフレームワークです。iOS 11の新機能の中でも非常に期待度が高く、正式リリースを待たずしてネットではすでに多くの画期的なデモが公開され、開発者の間だけではなく一般ユーザーの間でも話題になっています。本章では、そういったARKitを使った画期的なアイデアをいち早く具現化できるようになることを主眼に、ARKitと関連フレームワークを用いた「具体的な実装方法」を解説します。
最初の「ARKit入門」では、はじめの一歩として、最小実装でARKitを体験します。実にシンプルな実装で強力なAR機能が利用できることを実感していただけることでしょう。
その後は平面を検出する方法、その平面に仮想オブジェクトを設置する方法、そしてその仮想オブジェクトとインタラクションできるようにする方法…と、読み進めるにつれて「作りながら」引き出しが増えていき、最終的にはARKitを用いた巻尺(メジャー)や、空間に絵や文字を描くといった、話題になったようなアプリケーションの実装ができるよう構成しています。
ARKitは現実の空間を利用するフレームワークなので、自分の手元(スマホ)で実際に動かし体感しながら学んでいくのがベストです。本章のサンプルプロジェクトは/chapter_02/フォルダにありますので、ぜひXcodeを開いてサンプルを動かし、デバイスを持って歩き回ったりするなど、楽しみながら学んでください。
非常に高機能・高性能なARKitですが、シンプルなAPIで簡単に扱えるようになっています。各クラスの役割や詳細な使い方は後述するとして、まずは(約)3行でできるARKitの最小実装を示しますので、「こんなに簡単にできるのか」と実感してもらいつつ、そこからARKitのAPIデザインの大枠を掴んでください。
実はXcode 9の「Augmented Reality App」テンプレートからプロジェクトを生成すれば、一行もコードを書かずにそのままビルドしてAR機能が動作するアプリが新規作成できてしまいます。ですが、「非常に簡単に実装できる」という点を体感してもらうためにも、本節では既存プロジェクトに数行のコードを追加してAR機能を構築する、というところから始めます。
サンプルコード: 01_FirstAR
2.2.1 手順1: プロジェクトの準備
プロジェクトの設定やアセットの追加を行います。
まず、ARKitではカメラを利用するので、Info.plistにNSCameraUsageDescriptionキー注1)を追加しておきます。
Interface Builder(以降"IB")から、ARSCNViewオブジェクトを追加します。ViewController直下のUIViewオブジェクトのクラスをARSCNViewに変更するだけでもOKです。次に、ARKitを用いて「現実世界にオーバーレイするシーン」のデータをプロジェクトに追加します。ここではship.scn(図2.1)というシーンファイル注2)と、そこから参照しているtexture.pngを追加注3)することにします。
図2.1 ship.scn