Google Daydreamのtechnical previewでVRのサンプルアプリを実機ビルドする手順


今や大人気のVirtual Reality(VR), 少し前にGoogleがDaydreamを発表しました
また、Pixelの発表に伴って追加の発表もあり、VR好きの方はワクワクが止まらない毎日だと思います

この記事は、何か開発しようかな〜と思った時にTechnical Previewがあったので、それを試した時の書きだめになります
サンプルアプリまではすごく簡単に動かせるので、ぜひみなさん実機で動かしてみてください

**インストール方法については、とても丁寧な記事がGoogleさんから提供されています！**
本記事はその手順に沿っているだけなので、こちらも参考にしてみてください👇
https://developers.google.com/vr/daydream/overview

# 開発環境
この記事では以下の環境で開発しています

- Unity 5.4.1ベース
- Cardboard
- MacOS X

Daydream対応のアプリケーションの場合は

- **Nexus6P**
- 他Android1台

Daydream対応でなくて良ければ

- Android1台

開発環境として提供されているものがUnityになります
Unity使ったことない方でも、今回は一切コード触れないのでご安心ください

Daydreamが現在Nexus6Pにしか対応していないので、持っていない方は今まで通りCardboardなどのヘッドセットで動くアプリをビルドする形になります

# ダウンロード
ここから必要なものをダウンロードしていきます

## Unity
こちらの[Daydreamの公式サイト](https://unity3d.com/jp/partners/google/daydream)の一番下のリンクから、Unity+Androidランタイムのセットをダウンロード、インストールします

<img src="https://qiita-image-store.s3.amazonaws.com/0/88553/b0e794e8-302a-3926-2244-f61791d2d75c.png" width="500px">

Unity5.4をベースとしたカスタムビルドバージョンのようなので、もしすでにUnityがインストールされている方も別に必要なようです
(インストールしたら現行のバージョンに上書きされてました。このあたりの仕様については詳しくないので不明。。)

<img src="https://qiita-image-store.s3.amazonaws.com/0/88553/aed2be55-6927-d358-b477-96faa1b114c6.png" width="320px">

インストールしてUnityを開くと、上部に`Unity5.4.1f1-GVR7.1`って表示されてました〜成功だ！やったね！

## Google VR SDK
[こちら](https://developers.google.com/vr/unity/download)からDKとサンプルをダウンロードします
また、以下のコマンドでcloneしていただいても構いません

```
git clone https://github.com/googlevr/gvr-unity-sdk.git
```

## Android SDK
[Android SDK](https://developer.android.com/studio/index.html#downloads)のページからダウンロードします
Android Studioを入れるのが便利だと思います(入ってる人は問題ないです)
SDK Managerも使えて後々便利になります

### Android SDKのパスをUnityに通す
Unity > PrefernecesからExternal Toolsを選びます
Android SDKを選択する部分があるので、そこでSDKのパスを選択します
Macユーザなら`/Users/ユーザ名/Library/Android/sdk`になるでしょう

## コントローラー
参照: [コントローラーとは](https://developers.google.com/vr/daydream/controller-emulator)
**つまり、VR画面を見るものとは別に、それを操作するコントローラーが使えるようです！**

まだ正式にヘッドセットができていないので自前で準備しやがれ！とのことです
つまり、ビュー用のスマートフォンとは別にコントローラー用のスマートフォンも必要ということになります
しかしapkを配布してくださってて神のようです

[こちら](https://developers.google.com/vr/daydream/dev-kit-setup)のページを参考にダウンロードします
(文中にGithubのリンクがあるので、そこをクリックしてダウンロードしてください)

<img src="https://qiita-image-store.s3.amazonaws.com/0/88553/ee0008e8-6bc0-cfe9-a90d-655de582eff1.png" width="200">


こんな感じでぬるぬる動く良いアプリです

ついでに[Controller Emulator Overlay](https://developers.google.com/vr/downloads/controller-emulator-overlay-letter.pdf)もあります

<img src="https://qiita-image-store.s3.amazonaws.com/0/88553/b79ecc8d-1ced-febf-9ebf-62f02f34e426.png" width="200px">

スマートフォンの上に貼り付けるのか、健気だな。。

# Unityプロジェクトの作成
## プロジェクト新規作成
Unityを開いて、`NEW`を押します
適当に名前をつけて、 **3D** にチェックを入れてプロジェクトを作成します

## SDKとサンプルのインポート
まずはインポートします
**Assets > Import package > Custom package...**
を選択し、先ほどダウンロードしたSDKの`GoogleVRForUnity.unitypackage`を開きます

<img src="https://qiita-image-store.s3.amazonaws.com/0/88553/59418a3e-216e-51b9-edb7-79b37f0f3b4b.png" width="640px">

少しするとチェックボックスのような画面が開かれます
どのファイルをインポートするかの確認なので、すべてチェックが入っていることを確認して進めます

インポートが成功すると、下のProjectの一覧にGoogle VRとPluginsが表示されます
やったね！

# プロジェクトの実行
**Google VR > DemoScenes > ControllerDemo**
からControllerDemoをクリックして開きます

![スクリーンショット 2016-10-06 13.23.31.png](https://qiita-image-store.s3.amazonaws.com/0/88553/095aad2c-8c86-a37a-7f79-80ec4d9f9186.png "スクリーンショット 2016-10-06 13.23.31.png")

さきほどダウンロードしたコントローラーのアプリが入っているAndroidをUSBでPCに接続します
その状態で実行すると！

![スクリーンショット 2016-10-06 14.02.04.png](https://qiita-image-store.s3.amazonaws.com/0/88553/c7fd37cb-fa9f-911b-3516-626d71c55a1d.png "スクリーンショット 2016-10-06 14.02.04.png")

![スクリーンショット 2016-10-06 14.02.30.png](https://qiita-image-store.s3.amazonaws.com/0/88553/4f1c03d2-ede9-8892-c0ec-5e6b7e975500.png "スクリーンショット 2016-10-06 14.02.30.png")

コントローラーがジャイロで動いて、ダブルクリックで掴んでオブジェクトを動かせるようです！！
動いて嬉しい！

### アプリが繋がらない
開発者モードなどの設定かもしれませんので、確認してみましょう

>Download the InputCompanion app and install it on your controller phone. Make sure that your controller phone has Developer Options enabled. (If it does not, see "Enabling On-device Developer Options").


# ビルドとその設定
## Androidに設定
**File > Build Settings**
を選択します
左下のテーブルビューでAndroidを選択してハイライト状態にしたまま左下の`Switch Platform`を選択します

<img src="https://qiita-image-store.s3.amazonaws.com/0/88553/8915b201-bc0e-1c50-5a7b-3706a6c68676.png" width="320px">

しばらくファイルのインポートが行われます

## プレイヤーの設定
`Switch Platform`の隣の`Player Settings`を選ぶと、プレイヤーの設定画面が開かれます

<img src="https://qiita-image-store.s3.amazonaws.com/0/88553/06f4f568-10cd-6ba7-ba5e-128cf0705bff.png" width="320px">

次のように設定します

### Bundle Identifier
おなじみのIdentifier
世界で一つのIDをつけましょう

### Minimum API Level
Android 4.4を選択します

### Virtual Reality Supported 
最初はチェックが入っていないのでチェックをつけます
そして **+** ボタンからDaydreamを選びます

![スクリーンショット 2016-10-06 12.37.43.png](https://qiita-image-store.s3.amazonaws.com/0/88553/26eef866-927e-a75f-fb36-58212eb8c721.png "スクリーンショット 2016-10-06 12.37.43.png")

ここを選んでる時が一番多幸感がすごかったですね。。

## ビルド
準備ができたらBuild and Runを押してビルドしましょう！
エラーなく終わったら成功です:tada::tada:

### エラーでビルドできないあなたへ
度重なるエラーで疲弊したので書き残しておきます

ビルド中に止まって、`failed to re-package resources`....

> CommandInvokationFailure: Failed to re-package resources.
/Users/***/android-sdk-macosx/build-tools/24.0.3/aapt package --auto-add-overlay 
...

このエラーはAndroid SDK Build-toolsのバージョンが最新版(2016年10月現在v24.0.3)が対応していないからです
Android StudioのSDK Managerを開いて、タブからSDK Toolsを選び、右下のShow Package Detailsを開きます
現在インストールしてあるもののチェックを外して、23.0.3を選んで`OK`です

それでもまだエラーが発生しました
>警告: /Users/***/Library/Android/sdk/platforms/android-24/android.jar(java/lang/Object.class): メジャー・バージョン52は、このコンパイラでサポートされている最新のメジャー・バージョン51より新しいです。
  コンパイラのアップグレードをお薦めします

これはJDKのバージョンが低いからでした
`java -version`を叩くと
>java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

1.8にあげろとのことです
というわけでJDKのアップデートをします
また、Unityの
**Preferences > External Tools**
のJDKのパスを1.8.0のものに変更します

これでなんとかビルドできました！

# 実機テスト
[トラブルシューティング](https://developers.google.com/vr/daydream/dev-kit-setup)によるとNexus6Pじゃないと動かないようです
持ってる人は試してみましょう！(筆者は持っていません！)

※コントローラーのアプリはNexus6Pでなくても問題ないと思われます。ビュー用のスマートフォンはNexus6P縛りです

## もしNexus6Pをもっていなかったら
**Google VR > DemoScenes > HeadSetDemo**
を開いて、DemoSceneをダブルクリックで開きます
これはCardBoardなどで使うシンプルなアプリケーションです(Nexus6Pを必要としません)

![スクリーンショット 2016-10-06 12.50.50.png](https://qiita-image-store.s3.amazonaws.com/0/88553/c4c9a2f3-5039-f20e-ac6c-5e3ecc752c3f.png "スクリーンショット 2016-10-06 12.50.50.png")

さきほどの`Player Settings`の部分で、Cardboardを選んでビルドしてみてください

![スクリーンショット 2016-10-06 12.37.43.png](https://qiita-image-store.s3.amazonaws.com/0/88553/26eef866-927e-a75f-fb36-58212eb8c721.png "スクリーンショット 2016-10-06 12.37.43.png")

これで動くはずです！Nexus6Pじゃなくても、VRアプリを実機でプレイすることができました！
おめでとうございます:tada::tada:

# まとめ
サンプルアプリのビルドまではエラーはたまにあるものの、かなり簡単に進めることができました
ハードウェアの制約はあるものの、一足先にVRの最先端技術に追いつくことができるので、試してみる価値は大きくあると思います
何よりこんなに簡単に試すことができたので、VRってなんだろう、って思う方にも試していただきたいです
Daydream対応でなければNexus6Pなしでもできますから、ぜひ新しい世界を体験してみてください