ARKitを触ってみよう 〜第１話〜


#背景
Appleが毎年行う開発者向けイベント **WWDC**（Worldwide Developers Conference）。
今年は、2017年6月5日〜9日開催。

WWDC2017の話は色々あるが、自分が気になったのは、Appleが、とうとうARにがっつり参画してきたこと。そこで、発表された中の一つであるARKitというものを触ってみることにした。

もともと、VR/ARに興味があり、暇な時にUnity(C#で)を使い、VRアプリとか少し作ってみたりしていた。
が、SwiftでARアプリを作って遊んでみる将来も楽しそう！ってなったのがはじまり。

今回は、ARKitのサンプルをシュミレーターで動作確認ができるところまでいきます。
（ゴール：ARKitを使ってアプリを作成）

#必要なもののインストール
Xcode9 beta/iOS11は、Apple Developer Programのメンバーシップがないと
ダウンロードできないが、去年個人でアプリ開発するために登録したものが（最近放置気味だが）
まだ期限きれてなかったので早速ダウンロード。

https://developer.apple.com/download/

ここからiOS11とXcode9のベータ版をダウンロード。
（Xcode9のベータ版はmacOS10.12.4以上なら使えた）

#Xcodeを開いてみる
新規でプロジェクトを早速作ろう。
開くと、AR用のものが！！

これを今回は触っていきます。
使うのは、やっぱり、3D扱えるSceneKitにしました。（他に、SpriteKitとMetal）


ちなみに、この状態でビルドすると、この飛行船が画面中央に表示される形になっており、飛行船の後ろが見える。
そして、シュミレーターの雰囲気がなんかリアル。

また、今回このXcode9では、iPhone7のこのシュミレーターと同時にiPadも平行してシュミレートするとかもできるよう。


現状のViewController.swift。

```
import UIKit
import SceneKit
import ARKit

class ViewController: UIViewController, ARSCNViewDelegate {

    @IBOutlet var sceneView: ARSCNView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Set the view's delegate
        sceneView.delegate = self
        
        // Show statistics such as fps and timing information
        sceneView.showsStatistics = true
        
        // Create a new scene
        let scene = SCNScene(named: "art.scnassets/ship.scn")!
        
        // Set the scene to the view
        sceneView.scene = scene
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        // Create a session configuration
        let configuration = ARWorldTrackingSessionConfiguration()
        
        // Run the view's session
        sceneView.session.run(configuration)
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        
        // Pause the view's session
        sceneView.session.pause()
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Release any cached data, images, etc that aren't in use.
    }

    // MARK: - ARSCNViewDelegate
    
/*
    // Override to create and configure nodes for anchors added to the view's session.
    func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
        let node = SCNNode()
     
        return node
    }
*/
    
    func session(_ session: ARSession, didFailWithError error: Error) {
        // Present an error message to the user
        
    }
    
    func sessionWasInterrupted(_ session: ARSession) {
        // Inform the user that the session has been interrupted, for example, by presenting an overlay
        
    }
    
    func sessionInterruptionEnded(_ session: ARSession) {
        // Reset tracking and/or remove existing anchors if consistent tracking is required
        
    }
}

```

このサンプルコードをビルドするだけで、ARのアプリを体感できる！
（今後、この辺りをいじりちょっとずつオリジナリティを出して行く予定。）


#最後に
今回、初めてXcode9のベータ版をいじってみた。
思ったことは、何と言ってもデバックがワイヤレスでできるので、線が嫌いな自分には嬉しい！！


これに関しては、最初に一度PCとデバック用端末をケーブルでつなぎ、
**Xcodeのメニューのバー"Window"で、"Devices and Simulators"から、
Connect via networkにチェックする**と次からケーブルなしでOK!!

今週は時間ないので、来週あたり早いうちにコード触り出そう、、。
（[ARKitを触ってみよう 〜第２話〜](http://qiita.com/YuukiWatanabe/items/1026c965b3a9c4e69cd5)で）


#参考
ARKit リファレンス
https://developer.apple.com/documentation/arkit?changes=latest_minor

Unity ARKit プラグイン
https://oc.unity3d.com/index.php/s/3hfM9T05P9vOpCf
（これを使えば、Unityで簡単に作った3DオブジェクトをiPhoneから楽しめる）


#アーカイブ
[ARKitを触ってみよう 〜第１話〜](https://qiita.com/YuukiWatanabe/items/1026c965b3a9c4e69cd5)
[ARKitを触ってみよう 〜第２話〜](https://qiita.com/YuukiWatanabe/items/1026c965b3a9c4e69cd5)
[ARKitを触ってみよう 〜第３話〜](https://qiita.com/YuukiWatanabe/items/e6e4355d2f1ae0d4fd3f)