Swift 4 — ARKitを使ってみよう

Magic pop
7 min readFeb 21, 2018

--

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 TechnologySceneKitが選択されていることを確認してください。

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がロードし終わった後に呼ばれる関数です。上から順々に見ていくと、sceneViewdelegateを自身のクラスに指定(sceneViewインスタンスにデレゲートの機能を与える)、showStatisticsを有効、そしてship.scnの3DオブジェクトをsceneViewのsceneとして設定をする、ということがわかります。

下の画面は、ARKitを使用する際にもっとも重要な部分です。このviewWillAppear()は先ほどのviewDidLoad()関数が実行される前に呼ばれる関数です。ARWorldTrackingConfigurationsceneViewのセッションにrunさせることで、現実世界をカメラでトラッキングすることが可能になります。これをプログラム上で書き忘れると、AR機能が使えなくなるのでは必ずARKit開発をする場合追加してください。

終わり

コードを書かずに、ARを体験することができました。次の記事では、オブジェクトを浮かばせたり、オブジェクトの色を変えたり、テクスチャーを貼り付けるなど、実際にプログラムを書いていきます。ワクワクしてプログラミングを学びましょう!!

--

--