読者です 読者をやめる 読者になる 読者になる

うさがにっき

読書感想文とプログラムのこと書いてきます

Firebase + Bigqueryを使いデータ解析

firebase gcp

前書き

この記事はFirebase Advent Calendar 2016の12/23の記事です
qiita.com

概要

FirebaseにはデフォルトでFirebase Analyticsという解析機能がある
Firebase Analytics  |  Firebase

いろいろFirebase Analyticsには機能があるがイベント機能がよくつかわれる
Firebase Analyticsはユーザーがどのような操作をしているかに絞っているため、ga的な使い方をしようとすると面倒くさいことがある
例えば反映時間が少し遅かったり、デフォルトに設定されているタグ以外を使うとイベントに設定されている値が取得できない、イベント発生日時が取得できない、など
developers-jp.googleblog.com

デフォルトで使えるタグ
イベント: すべてのアプリ - Firebase ヘルプ

タグの設定問題は一応解決策はあるが、ユーザーの振り分け的な使い方なのでちょっと感じが違う
ユーザーリスト - Firebase ヘルプ

この問題を解決するためにBigqueryを同時に使いデータ解析を効率的に行う

詳細

Firebase Analyticsでイベントを取得

iOS
イベントのログを記録する  |  Firebase
Android
イベントのログを記録する  |  Firebase

取得されたイベントはこのように表示される
f:id:tiro105:20161223230840p:plain

ちなみにデフォルトで使えるタグはこのように表示される(この場合は値を設定してないためvalueがnullのみ)
f:id:tiro105:20161223230925p:plain

Bigqueryとの連携

Bigqueryと連携することにより、より詳細なデータを取得する
BigQuery と Firebase をリンクする - Firebase ヘルプ


余談だが、gcpは三ヶ月間無料で、無料が終わってもそれほど価格は高く無い
が、やっぱりクラウド死の可能性はあるので注意

BigQueryで150万円溶かした人の顔 - Qiita

テーブル構造は以下のようになる
BigQuery Export のスキーマ - Firebase ヘルプ
テーブル構造を見てわかるように、かなり詳細にユーザーデータが格納されるので欲しいデータはたいていある

またFirebase Analyticsと違い20分ほどでイベントが確認できるため、動作確認や詳細なデータ解析の際には非常に役にたつ
Google Developers Japan: BigQuery への Analytics データ リアルタイム エクスポートについてのお知らせ

Bigqueryの使い方は以下を参照
Google BigQueryの新機能 Standard SQLまとめ - VASILY DEVELOPERS BLOG
Standard SQLを使う方がベター

またBigqueryを使うとGoogle SpreadsheetやGoogle Cloud Datalab, Google Data Engine, re:dashなどでデータを解析できるようになる
データを視認する場合にも非常に役にたつ
Google Cloud Datalab
Quickstarts  |  Google Cloud Datalab  |  Google Cloud Platform

re:dash
Re:dash を GCE で試してみた - えいのうにっき

Google Data Studio
Easily Build Custom Reports and Dashboards - Google Data Studio – Google
Video tutorials - Data Studio (Beta) Help

Google spreadsheet
BigQueryを簡単にグラフにするGoogle Apps Script : TORETA(トレタ) ブログ

Bigqueryにさえ接続してしまえば様々なツールで簡単に解析できるので是非Bigqueryを使いましょう

2016を振り返って

ポエム

概要

こんばんは
アドベントカレンダーを4つも入れて執筆に追われているusaganiです
迫り来るクリスマスという名の締め切り・・・!

本日も記事を抱えておりますが、現実逃避のために主に技術面での今年の振り返りをしたいと思います

詳細

マインドマップ

思考がごちゃごちゃしてまとまらなかったのでとりあえず10分間でマインドマップ書いてみました
f:id:tiro105:20161223191928p:plain

昨年まではAndroidほぼ一色でしたが、今年はいろいろと挑戦した年でした
VR, AR, ProjectManager, インフラ面ではFirebase, gcpと書いてみるといろいろとやっていました

記憶に残っているのはVR, AR, ProjectManagerです

VR, AR

VR, ARについては新規すぎてどのようにすれば最適なUXをユーザーに届けられるところから考える必要があり、とにかく頭を悩ませることが多い、特に下期は散々悩む日々が続きました
技術・・・というか新規技術を考えていく上で健全な悩みだったので苦ではなかったと思います、当時は苦しみましたが

とにかくAR, VRが触れるものなら片っ端から体験しに行ってました

またここまでコミュニティにどんどん参加しに行ったのも今年が初めてでした、そうしないと情報が得られなかったのでとにかく当たって砕けろでした
開発環境もすごい勢いで変わっていき、よりよい体験をユーザーに与えるためにはそれに対応する必要があったので必死にしがみついていきました

その甲斐あって自分の思ってる現時点の答えは出せたと思っています
ですが、これに関しては来年も勉強し続ける必要があると思っています

ProjectManager

ProjectManagerについてはこれまでも軽くやっていましたが本格的に考えたのは今年からでした

最初はとにかく情報収集でいろいろな本を読んだり、情報を収集しました
今年は生産性の向上というよりは、いかにProjectがエンジニアにとって働きやすい場になるかを考えて、実行していました
居心地が良く無いと生産性向上施策をうってもついてきてもらえないと考えているからです

またうちのチームはProductOwnerに非常に理解があり導入がかなりスムーズだったことも大変助かりました
基本的なことですが・・・必要の無い会議はどんどんなくなり、基本的な会話はchatになり、タスクはカンバンで管理できるようになりました
来年は吸収した知識をもとに生産性を高める施策を試していきたいです

まとめ

こんな感じで今年は新しいことにたくさんチャレンジした一年でした
正直かなりヘビーな一年でしたが、楽しめたとも思ってます
このバランスってかなり難しいと思ってますが今年はいい感じにできました

来年もいい感じになるといいですね

広告を非表示にする

VR prototypeツール紹介

unity vr gearvr android

概要

VRにおけるprototypeツールを二つ紹介する

  • VR Prototyping Template
  • Sketch-to-VR

詳細

VR Prototyping Template

facebookから最近出たVRのPrototyping環境
facebook.design
technical-creator.com

使い方

TECHNICAL CREATORさんに書いてある通り、各々見ていってもよくわからないので説明にもくもく従う
1) Use the Sketch or Photoshop template to create the screen flow or several iterations of your design and export your files.
Sketchを使う、どのようなファイルを作ればいいかよくわからないのでデフォルトのものをexportする、Photoshopでも多分同じ
f:id:tiro105:20161221134933p:plain

2) Unzip Unity project and place your files in ‘Assets/StreamingAssets’ folder
UnityProjectを開く、先ほどエクスポートしたファイルを配置
ガンガンエラー出てるけどビルド出てるので無視
f:id:tiro105:20161221135114p:plain

3) Open the project in Unity 5.5 or above and click ‘Play’ to preview your prototype.
実行ボタン押下
先ほどSketchで作成したイメージがVR的に見るのが確認できる
youtu.be

こんな感じ
ちなみにGearVRにいれて実機確認しようとしたら、Unityのsplashまで確認できたが、それ以降はクラッシュして動かなかった・・・謎

Sketch-to-VR

VR Prototyping Templateを使おうとしていたら見つけた
こっちもいい感じ
GitHub - auxdesigner/Sketch-to-VR: Personal fun project - turn your mocks into VR

黙々と説明に従う

install
  1. Download Zip and Extract it. There’s a demo sketch file and a SketchToVR.sketchplugin.
  2. Double click on SketchToVR.sketchplugin. Sketch will install the plugin.

ダウンロードして、sketchpluginをinstall

使い方
  1. Open the demo Sketch file. The “background” artboard is a 360° photo. The “ui” artboard is the interface on top of the photo. In order to be seamless, the 360° photo you use should be equirectangular. There are some examples on Flickr. The one in my file is from Nick Hobgood.
  2. Go to Plugins > Sketch to VR > Export. The export may be slow due to the size of the 360° photo.

背景とUIを別々のartboardで管理
Sketch to VRのexportでexport
f:id:tiro105:20161221141755p:plain

VRの見かた
  1. The exported folder will be used to run A-Frame, an open-source Web VR library developed by MozVR. It needs a local server to work (simply opening the HTML page will not work). I recommend the SimpleHTTPServer by Scott Garner. Right click on the exported folder and choose SimpleHTTPServer. Use click & drag to navigate.
  2. To preview on your phone with a Cardboard, there are a few options. If you own a website, just upload this folder to your website and access the URL from your phone. Or you can use Chrome port forwarding to open localhost:8000 on your phone (initial page load may be slow due to the size of the 360° photo). Tap on the bottom right Cardboard icon to switch to VR mode!

MozVR使ってるからだと思うがexportしたものはFirefoxじゃないと見れない(Preview版とかならchromeでも見れるかも?)
あとCardboard(二眼)にするためにはいろいろやる必要あるけどやってない、見る限りそんな難しく無い

こんな感じになる
youtu.be

まとめ

インタラクティブなものはまだ難しいが360写真に対する見せ方や、メニューの出しかたなどに絞ればどのようにVRで見れるかprototypeできるようになってきた
どんどん進化していってほしい

vuforia + unityでARを実装する際に参考となるドキュメントまとめとARアプリを作ってみた感想

AR vuforia unity Android

前書き

本記事はUnity Advent Calendar 2016 12/20の記事です
qiita.com

概要

こんなことをするアプリを作りたい
Image Targets Sample App - Augmented Reality - Vuforia (new) - YouTube

そのために、unity, vuforiaのARアプリ実装方法をまとめる・・・と思ったがかなりネット上にドキュメントが落ちていた
また、バージョンアップしていくと結構動かなくなったり、素敵な機能が追加されていたりするので、実装していく上で幸せになれる、また困った時に見るリンク集とした

つまり、本記事はvuforia + unityでARを作る際のドキュメントまとめ
一次情報にこだわって作っているので少しわかりづらいかも

最短でやりたい人は先人がまとめてくれた記事を見よう
この記事は(一次情報)リンク集なので最短とは言い難いぞ
UnityでARアプリを作りたい(Vuforia導入編) - Qiita

実行した環境は以下です
IDE: unity5.5.0f3
SDK: vuforia 6.1

詳細

とりあえずスマホで何ができるか試そう

vuforiaを使ったアプリを落としてみる
動画を見ただけではイメージが湧きづらいかもしれないので実際に端末で試してみましょう
vuforia - Google Play

環境構築

unity download
Unity - Store

vuforia sdk for unity download
SDK Download | Vuforia Developer Portal

vuforia account作成
Create new account | Vuforia Developer Portal

アプリ作成

画像をmarkerとしてその上にコンテンツを表示するImage Targetを実装

ざっくりとした手順としては

  • ARに使う部品をsceneに配置
  • vuforiaのlisencekeyを設定
  • markerをvuforiaに設定し、unityにvuforiaからダウンロードしてきたmarkerdatabaseを設定

Image Target説明
Image Targets | Vuforia Library
BestPracticeや理想的なmarkerの条件など書いてあるので読んでおくと幸せになれる

Tutorial動画
他にもいろいろ上がってるので見ると幸せになれる
ARCamera prefab in Unity Tutorial - Vuforia - Augmented Reality (new) - YouTube


実装時必要になるvuforia Lisence key取得
How To Create a License Key | Vuforia Library
How To add a License Key to your Vuforia App | Vuforia Library

マーカー設定方法
How To Add Targets to a Device Database | Vuforia Library

データベース作成方法
How To Create a New Device Database | Vuforia Library
ちなみにデータベースをローカルに落としてきても、起動時にlisencekeyを見に行っているのでオフライン環境だと起動しないので注意

サンプル
他にもいろいろ上がってるので見ると(ry
Download Samples | Vuforia Developer Portal

ARを考えていく上で知っておくといいこと

unityとvuforiaの関係

何をunityがやっていて、何をvuforiaがやっているか考えるとわかりやすい
動画を見てもらえるとわかるがvuforia + unityが作るARは一般的に以下のようになる

  • カメラ制御
  • マーカー(画像)認識
  • コンテンツ表示

vuforiaがやっているのはざっくり言うと、「マーカー認識」
その他の機能として「コンテンツの位置固定」や「文字認識」などもあるが、コア機能は「マーカー認識」
その他の機能の一例
Best Practices View | Vuforia Library

そしてvuforiaがやるのはあくまで「認識」するまでであり、その後のアニメーションなどはunityが行う
つまりざっくり言うと

  • カメラの制御・・・unity
  • マーカー認識・・・vuforia
  • コンテンツの表示・・・unity

コンテンツをいかにリッチに表示するかはunity力が試される
逆に言えばマーカー認識型では無い(GPSで位置確認してカメラの目の前に何かを出す的な)ものはvuforiaは必要無い
unityだけでもできるし、より楽したいならGPS型AR SDK(wikitudeとか)を選ぶべき

端末差異

カメラを使ったandroidアプリを作ったことがある人ならわかると思うが、現実世界にコンテンツを表示する時にandroidによる端末差異がすごい
またExtended Trackingを使っても端末による制度の違いがすごい
Androidは要注意

どうしても解決しない時は

http://stackoverflow.com/search?q=vuforia+unity
質問しよう

2016/12/21追加
記事書いた翌日にvuforiaのアップデートが来るとかひどいよ・・・
release note
Vuforia SDK Release Notes | Vuforia Library
どうやら5.5でやるとバグがある注意、けど内容知っておけば気にならないかと
Android/iOSのバグが載っているので一読

migration方法
Migrating Unity Projects to Vuforia 6.2 | Vuforia Library
カメラの精度とか上がるらしいからアップデートしたいけど、ちゃんとmigration方法に則ってやらないと死ぬぞ

まとめ

本記事ではunity + vuforiaとしたが、AR sdkにはkudanwikitudeなど他にも選択肢はある
それぞれ得意とするところがあるので作るプロダクトに応じて適切なsdkを選択するのがよい

ただ私が試してみた限りunityのサンプルを落としてきて、サンプルがそのまま動いたのはvuforiaだけであり、unityはvuforiaとパートナーを結んでいるのを考えるとunityを使う限りはvuforiaが一番最適解だと感じている

ARはいいぞ、みんなやろう

Google VR SDK for Unity1.10.0 ではcardboardアプリを作る際にDaydream technical previewを使ったほうがいい

unity cardboard vr

概要

Unity5.5においてGoogle VR SDK for Unityを1.10.0にアップデートしたところ、Virtual Reality SDKsにcardboardが表示されなくなった
その解決策をまとめる

詳細

わかんなかったのでforumに投げた
結論はこれ
https://forum.unity3d.com/threads/can-i-use-cardboard-with-unity-5-5.445127/

つまりGoogle VR SDK for Unity1.10.0 ではcardboardアプリを作る際にDaydream technical previewを使ったほうがいい
理由としては、スクリプトが新しくなったらしくそれに対応しているのはDaydream technical preview版だけらしい
古いスクリプトを使うことにより対応させることはできるが、大変なのでやめたほうがいいとのこと

cardboardアプリを作るのにdaydream technical previewを使わなきゃいけないのがイマイチ腑に落ちないが、まぁ、仕方ない・・・
報告したしきっと対応してくれるはず

2016/12/16
Unity5.6betaがリリースされた
Unity 5.6 beta is now available – Unity Blog

Daydream対応を謳っているがまだかなりバグがあり、乗り換えるのは待ったほうがいい
https://forum.unity3d.com/threads/should-we-move-to-5-6-beta.446084/#post-2886468
> If you make use of the Google VR SDK then I would wait till b3 for sure.

Daydream Technical Preview版もアップデートされ続けているのでしばらくはGoogleVRを使う場合そちらを使うべき

daydream demoの動かし方最新版

unity vr daydream

概要

daydreamの開発環境の作り方が変わっていたのでまとめる
また、googleのドキュメント通りにやってもdemoが動かないのでdemoを動かすところまでやる

2016/12/8現在の話であり、今後変わっていく可能性が大きいので注意

詳細

開発環境構築

Unity install&起動

Android SDK/NDK, JDK設定
f:id:tiro105:20161208235315p:plain

Google VR SDK import
f:id:tiro105:20161208235611p:plain

Demoアプリ作成

Get Started with Google VR in Unity  |  Google VR  |  Google Developers
が古いのでメモっておく、そのうち修正されるの期待

特に何も作らなくてもサンプルsceneが用意されている
GoogleVR/Demo/Scenes/GVRDemoにサンプルシーンがあるのでload

あとはビルド設定
File > Build > Player settings...
でこんな感じにパッケージ名とminSDKを設定
f:id:tiro105:20161209000250p:plain

次にDaydream用プロジェクトにする
Virtual Reality Supportedにチェックを入れDaydreamを選択する
f:id:tiro105:20161209000407p:plain

これでビルドが通る

PC上での動作確認

これまではGameViewが実行していないときも複眼になっていたが、現在は実行時のみ複眼になる
また、option + マウスで首の動作ができるのでデバッグも簡単

疑問点

本記事とは関係ないが、CardBoardアプリを作りたかったのでUnity 5.5とGoogle VRを組み合わせてCardboardアプリを作ろうとしたらVirtual Reality SupportedにCardboardが表示されない…
(2016/12/9追記)
Nexus5xではinstallしても二眼にならない・・・DaydreamReadyじゃないからか・・・昔はなったんだけどな

GoogleCloudPlatform料金上限設定

GoogleCloudPlatform

概要

普通にGCPを使っているとクラウド死する可能性が常につきまといストレスで死ぬ可能性がある
ので、GCPの料金上限設定方法についてまとめる

詳細

二種類の方法がある

  • 月ごとに規定の料金になったらアラートを飛ばす、アラート後の処理はユーザー次第
  • 日ごとに一定料金になったら完全に利用を止める、翌日からリセット

前者は月ごとにこれくらいの料金を超えたら気をつけよ、みたいな意味合いで使われるものだと思う
後者はとにかくいきなり料金が跳ね上がって突然死するのを防ぐために使われるものと思う

月ごとアラート

Billing Alertを設定して、クラウド死を防ごう! - Qiita
webだとこっちの情報がメイン
ただしこれだと前述の通り、メールが送られてきてそれからの判断となる
「いきなりサービスに大量のアクセスが来る➡️メールを見逃す=クラウド死」は防げない
目安とするべき

日ごと利用停止

App Engine の料金  |  App Engine Documentation  |  Google Cloud Platform
プロジェクトの作成と課金管理  |  App Engine standard environment for Python  |  Google Cloud Platform
こっちの情報はあまり無い
こっちだとクラウド死は逃れるが、以下の通りサービスがいきなり止まる可能性をはらんでいる

Google Cloud Platform の他のリソースの使用量に対して課金される場合があります。複数のプロジェクトがある場合は、プロジェクトごとに費用制限を設定することをお勧めします。
費用制限を設定する場合には、リソース使用量の急増にも対応できるように設定してください。アプリケーションが毎日の費用制限を超えると、無料割り当て枠を超えた分のリソースを使用するオペレーションはすべて失敗します。


つまりクラウド死はしないが、サービス死はするということ
何も手を打たない場合サービス死から復旧できないので、バランスを考える
(これで利用停止した場合復旧する方法あるのかな・・・?)

まとめ

上記の二つを上手く使い分けてクラウド死を避けていきたい