Appleは去年iOSデベロッパー向けにARkitフレームワークを提供しました。ARKitは本当にすごいです!簡単に拡張現実を作ることができちゃうし、デフォルトでSpaceshipオブジェクトが用意されているので、実機ががあれば5分でAR体験することができます!ARkitを自由自在に使いこなせるようになると、魔法使いになれちゃいます。例えば、画面をタップして3Dオブジェクトを出し、それが宙に浮かび、そのオブジェクトに触れると爆発したり。
この記事ではARを体験することが目的で、次の記事から技術的な内容に触れていきたいと思います。読者対象者はプログラミング未経験、そこまでプログラミング経験ないしARもわからない人達です。
開発に必要最低限の準備の手順についても説明するので、今後AR開発をしたいという方は、是非参考にして見てください。
では、AR(魔法)を見ていきましょう。
必要な物:
Swift4: iOSアプリを開発する言語
Xcode: バージョン9betaまたはそれ以上
デバイス: ARアプリを試すには、iPhone 6sまたはそれ以上、または最新のiPadが必要です。
iOS 11: ARkitはiOS11のSDKの一つなので、バージョンが11以上であることを確認してください。
Xcodeがインストール済みでなければAppStoreでXocdeをダウンロードができるのでインストールお願いします。重たいのでダウンロードに結構時間がかかることがあります。ネット接続状態次第ですが数時間以上かかった気が。。
・・・・・・・・・ダウンロード完了しましたか?(はい)
では、Xcodeを起動させましょう!!
起動後、new projectを選択してください。三つ選択肢があって、そのうちの真ん中ですね。選択すると下の画像と同じ画面が出てくるのでAugmented Reality Appを選択して下のnextボタンをクリックしてください。
Next、を押すと下の画像の様にoption設定画面が表示されます。Content TechnologyでSceneKitが選択されていることを確認してください。
Product Name: 好きなアプリ名を入力してください。私はhelloARと名前をつけました。後で名前変更可能なので、今は特に気にしなくても良いです。
Organization Name: 上と同様に好きな名前を入力してください。
Organization Identifier: アプリをリリースする際に必要になってくるので、今は特に気にせずそのままでokです。
Language: Swiftを選択してください。DefaultでSwift言語が選択されているはずです。Objective-Cに設定するとObjective-C言語で開発をすることになるので、注意が必要です👻
Nextを押した後、ロケーション(保存する場所)を決めてください。私は、デスクトップにこのプロジェクトファイルを作成しました。プロジェクト作成後、MacにiPhoneを繋げ、下の画像でiPhone 8 Plusと表示されている部分をクリックすると
この下の画像の様にSimulatorリストが表示されます。今はiPhoneを繋げていないので、No devces connected to My Macと表示されていますが、iPhoneを繋げるとこの部分に自分のiPhone名が出てくるのでそれを選択します。左側の黒い三角ボタン(runボタン)を押すとアプリが起動します!
デフォルト状態だと、spaceshipが浮いているかと思います。コードを書かずに、spaceshipを浮かばせることができましたね!え、意外とAR開発できるかも?!って思いませんでしたか?
では、ここからは少し難しくなってしまうかもですが、AR体験が可能になるコードの中身を実際に見ていきましょう。左側にViewController.swiftというSwiftファイルがあるので、そのファイルを開くとコードが中央に出てきます。
ViewControllerはこのアプリ内のRootViewControllerです。RootViewControllerとは、アプリが起動された後に最初に表示される画面のことです。少し表現を変えると、アプリを起動させた後、このクラス(ViewController) が一番最初に呼ばれる、ということになります。
まず初めに、sceneViewについて説明をします。これはARSCNViewという特別なViewのインスタンスです。このviewは普通のUIViewとは全く別です。ARSCNViewなしではARを体験をすることはできません。
次に、override func viewDidLoad()関数について説明をします。これは、 viewがロードし終わった後に呼ばれる関数です。上から順々に見ていくと、sceneViewにdelegateを自身のクラスに指定(sceneViewインスタンスにデレゲートの機能を与える)、showStatisticsを有効、そしてship.scnの3DオブジェクトをsceneViewのsceneとして設定をする、ということがわかります。
下の画面は、ARKitを使用する際にもっとも重要な部分です。このviewWillAppear()は先ほどのviewDidLoad()関数が実行される前に呼ばれる関数です。ARWorldTrackingConfigurationをsceneViewのセッションにrunさせることで、現実世界をカメラでトラッキングすることが可能になります。これをプログラム上で書き忘れると、AR機能が使えなくなるのでは必ずARKit開発をする場合追加してください。
終わり
コードを書かずに、ARを体験することができました。次の記事では、オブジェクトを浮かばせたり、オブジェクトの色を変えたり、テクスチャーを貼り付けるなど、実際にプログラムを書いていきます。ワクワクしてプログラミングを学びましょう!!