gulpでSlimのビルド環境作る
本当はいろいろやるつもりだったんですが、nodeの更新でミスってnpmが行方不明になったりして時間食われてしまったので、実際のコード書くには至らなかった(´・ω・`)
とりあえず、gulpでSlimビルドできるようにしたのでメモ
Slimとは
最近Railsでerbの代替として使われ始めている、HTMLテンプレートエンジン。短い記述で書けるので大変ラク。
Hamlから%抜いたやつだと思えばよいです。gem install slim
とかやれば入る。
Slim - A Fast, Lightweight Template Engine for Ruby
すばらしい。
Railsなくても、単にマークアップツールとしての使用は可能なので、これで爆速でHTML書けると思われる。
gulpfile
SlimをHtmlへビルドするには、slimrb -p "slim_file" > "export/file_name.html"
とかやればよさげ。つまり、gulpでコマンド叩ければ良いわけです。
gulpでコマンド叩くには、gulp自体のインストールした上で、gulp-shellを使うのが楽です。npm install --save-dev gulp && npm install --save-dev gulp-shell
で入れる。
gulp.pipe()
中で、shell(["command"])
とかやれば実行できます。
gulp-shellには、fileオブジェクトが渡されます。gulp-shellのドキュメント内にある「shell(commands, options) 」の項目見ると、
A command can be a template which can be interpolated by some file info (e.g. file.path).
とあり、wearefractal/vinyl · GitHubで書かれている通り、file.relative
とかやれば元のファイル名が取得できます。
このファイル名の拡張子"slim"を"html"に変換してあげれば、普通にビルド通ってHTMLが生成されます。
macにHaxe入れてみた
いわゆる、AltJSで、今後どれ使っていこうか悩んでいたりしてます(´・ω・`) とりあえず、CoffeeとTypeScriptを触ってみたんですが、あまりしっくり来ず…
今AltJSというと、だいたいこいつらだと思います。
CoffeScript (http://coffeescript.org/)
TypeScript (http://www.typescriptlang.org/)
- 実際にプロダクションで動かしてる話も結構聞くようになった、MicroSoft(というよりヘルスバーグさん)性のAltJs。型システムと型推論で、硬いコードも書けるし、JSみたいにゆるふわもできる。
- 思想は大好き。すごく書きやすい。C#erなので記法にも割りと慣れた
- そのコンパイルの遅さは欠点。型システムが導入されているので仕方ないんですけどね…でもJSはさっと書いてさっと動かしたい。
- ts.dの悪夢。きちっと使い倒そうとすると色々ハマる。大規模なら活かせるけど、小規模で型定義管理するのつらぽよ。大きいやつならいいんです、大きいやつなら。
- VisualStudioかWebStormいるよねこれ。他でもできなくはないけど、つらい。
JSX (http://jsx.github.io/)
- AltJSの新参者。DeNA製。型システム持ち。
- 他のAltJSと比較して、だいぶ素のJSに近しい。
- JSを極端に高速化しているらしく、ベンチ結果はかなりのもの
- とはいえ採用事例が…(ry 今後、極端に性能要求されるものがあったら使うかもしれない。ごめんね(´・ω・`)
Haxe (http://haxe.org/documentation/introduction/language-introduction.html)
- 歴史的には結構古い。2005年くらいから。型システム持ち。
- CoffeeScriptやTypeScriptほどではないけど、採用事例を聞くようになった。
- AltJSに分類されているものの、その実、メインストリーム張ってる言語(例えばC++とかC#とかJavaとかPHPとか)への変換も可能だったりするすごいやつ。挙句、Flashにも変換できたりします。
- 大本がActionScript界隈から出てきたものなので、ゲーム系で使われることが多い。
と、まあこれだけあるわけです。 JSXとHaxe以外は軽く触ってみて、ある程度使い勝手とか見えてきているんですが、Haxeの将来性が高そうな予感がする。
ので、これも触ってみることにして、今日のメイン。
Macにインストールする
Windowsの人は、とりあえずFlashDevelop入れれば解決する。 Macの場合は、IDE以外にvimとかSublimeとか使うことを考慮して、Haxeのシステム自体を導入してしまいます。
Homebrew
でインストールできたので楽ちんです。
~$ brew info haxe haxe: stable 3.1.3 (bottled), HEAD http://haxe.org /usr/local/Cellar/haxe/3.1.3 (1619 files, 19M) * Poured from bottle From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/haxe.rb
最初、何も考えずにHomebrew叩くとこんなエラーが…
brew install haxe objective-caml: Unsatisfied dependency: XQuartz 0.0.0 Homebrew does not package XQuartz. Installers may be found at: https://xquartz.macosforge.org Error: An unsatisfied requirement failed this build.
これだけみても、良く分からないんですが、Unsatisfied dependencyといっているので、おそらく依存関係になにか問題があるように見えます。
そこで、おもむろに...
brew update && brew upgrade
とかやります。
その後でbrew install haxe
とかするとすんなり入ってくれました。
単純にHomebrewが古かっただけのようです。同じエラーに引っかかった時は、まずHomebrew更新するとよろしいかと(`・ω・´)
BREAK TIMESの勉強会に参加してきたメモをまとめてみた
今年2014/8頃に開催された、PR TIMESさん主催の勉強会レポです。
前回のイベント情報はこちら: http://breaktimes1.peatix.com/
当時は、自分の転職とかその辺に時間取られて、メモを公開するタイミングが掴めず…。
かなり、学びや発見多かった勉強会だったために、メモをお蔵入りさせるが偲ばれまして、今回のこのタイミングでまとめてみた次第であります( ・`ω・´)
さっそく、メモのまとめを書いてきます。
PR Timesの紹介
まず最初は、
勉強会を主催したPR TIMESさんの発表です。プレスリリースの配信掲載サイトを提供している企業。
PRサイトを運用していくときのノウハウを、BreakTimesブログで公開しているそうです。
どうやって運営しているか
アクセス解析して、指標を元に改善していく PDCAを回して、運営していっている。
主に、Google Analytics使って、
- ユーザーPV
- コンバージョン 。
また、ベージ毎のPVや、ヒートマップ(ページ内のユーザーが見ている部分)のデータを抽出した上での最適化等、いかにコンバージョンを高くするか、に絞った改善などをも実施している。
サイト改善するときに指標を見て、どういうテストをしているか
ABテスト(サービス紹介ページ)
- 以前は画像だったけど、動画いれてみるテストを実施
- ユーザーが、途中で離脱していたけれど、この対応を入れると、下までスクロールしてくれるようになって、コンバージョン高くなった
多変量テスト
ABテストの発展系。
より複雑な条件の上で、どのような動きをしているかを分析し、全体の傾向から改善部分を導き出すことが狙い。
条件が複雑になればなるほど、ケースの組み合わせが増えて、解析が大変になる。
多腕バンディット
- Google Analyticsでも使える
- パターンの表示割合を増やして、より最適な解が出るまで繰りかえしていく
- 結果に基づいて表示を変えていくにしたがって、少ないコストで最適な解が得られる
多変量テストでは、ケースの組み合わせを増やして傾向をみる分析方法。
多腕バンディットは、出てきた結果を元に、更に踏み込んだ条件やケースに絞っていく。それを繰り返すことで精度高い分析を得られるようにした解析手法。
PR TIMESさんの発表では、PR TIMESさんが自社サービスの改善を行う際に、その改善部分を導き出す話を聞くことができました。
配信するプレスを、より高く、効果的に配信するためには、まず問題を見つけて、最適な手法で解決する。そのフローが大事ですね。
多腕バンディットを用いたプロダクト改善については、最近cookpadさんが記事をあげていました。興味のある人は目を通して見るとよいと思います
http://techlife.cookpad.com/entry/2014/10/29/102036
UI/UXとはなにか。 UI ≠UX
イベント開催前は、セカイラボの森脇さんが、UI/UXの設計の話をされる予定でしたが。 残念ながら、森脇さんが、体調不良で未参加となり…
代打で、日本ディレクション協会の小嶋さんが発表されていました。 小島さんは - フリーランスのディレクター - Webデザイナやって、ディレクターに というバックボーンを持った方です。その方が話すUI/UX論だったので、若干ディレクタ的な目線のお話が聞けました。
ここからメモ
UIとUXはレイヤーがちがうということ
UXデザイン
⇒ UXデザイン !! なんのこっちゃよくわからん
実用性を設計する = UXデザイン
たとえば、普段使う椅子。椅子といってもそれぞれ全くタイプが異なる。
- 柔らかいならいいの?
- キャスター付きで動くならいいの?
- 革張りならいいの?
シックな内装に合う椅子、バーに合う椅子、コンサート会場に合う椅子… それぞれ、場、シチュエーションによって、最適な物が異なる
⇒ そういった設計をしていくのがUXデザイン
UXデザインのために考える事
- コンテンツ全体の目的、用途を想定しておく。
- ユーザーがどういう反応をするのか?
- どういう行動をするのか?
問題の定義を明確にして、想定するユーザーに正しく価値を伝えることが大事。
UIデザイン
各機能に合わせた適切なUIを作るもの。UXデザインのレイヤーより、下に位置する。 まずは、どんなUXを与えていくか、ありき
- 画面にとらわれ過ぎない!
- 使う人の気持を考える。
UXとUI の 有名な事例
NORDSTROM (大きな百貨店) IPADアプリのUX改善事例
- 実際の店舗にPC持ち込み + 実際のお客さんに使ってもらって、即座にフィードバック→ 大量に付箋が貼られては剥がされていく。
- 一週間で改善できるところまで、現地でやって開発に活かす方法。
- すぐに本格的な開発には入らない。ペーパープロトタイプベース。
- アプリだけでなく、アプリをどう触ってもらうか。テーブル台にのせて使ったりする?
- アプリの使い方の設計。どういうシチュエーションで、どんなふうに?
ユーザーが実際に使っている、リアルな世界の問題を解決するために、開発を行っていく。
ここまでイメージをしながらちゃんとUIを設計する必要がある。特にスマホ。しっかり考えてやる、やらないで大きく差がつく。
広告の視点だけでなく、ツールとしての側面まで設計していくのは当然。
UX、UIとは、と安易に語られがちで、 ユーザーに価値を伝える最適な方法かどうか、はいつの間にか忘れてしまったりしてました。 この発表は、そういう視点を思い出させてくれる良い内容だったと思います。
実際にユーザーさんに使ってもらうことほど、良いデータが取れることはないので、プロトタイプ時点からユーザーを巻き込むことの大事さを、いい感じに理解できた発表でした社記
HTML5 概要 コードサンプル
この勉強会の目玉ともいえる、お話でした。 W3Cの中の人の話が聞ける機会は、本当に貴重。
講師は、Daniel Davis氏(http://html5experts.jp/ourmaninjapan/)。元Operaの英国人。 最初の触りで、英語セッションの雰囲気を漂わせつつ、参加者にある種の覚悟をさせてましたが、 本人、日本語ペラペラで、普通に話聞けました(;・∀・)
HTML5で新たに採択されつつある、仕様の話が多めでした。
当日の資料は公開されています。
http://breaktimes.hatenablog.com/entry/2014/10/14/194903
深く知りたい方は、この資料の方を見ると捗るかと思います。
ここからメモ
HTML5とはなにか
- HTML:
構成を決める - CSS:
見た目を決める - Javascript:
動きを決める
つまり、
HTML5 = HTML4 + 新しい仕様 − 古い仕様
そもそもHTMLとは
HTML = Code onxe , rearch people everywhere.
⇒ PC、スマホ、問わず使える。汎用的な仕様。
大事なのは、正しいマークアップをすること - headerタグ等を適切に使うと、検索エンジンが有利に働く
現状では、ブラウザ差異が小さくなってきた。
ブラウザが標準化されてきた。どこでもそこそこ同じコードで動く。
まだ、完全に対応されているわけではないが、昔よりはかなりマシになっている。
HTMLは、WEBだけで使われている…わけでもなくなってきた
WEB標準大事; みんながわかる = みんな使える
HTML5が目指す先。やろうとしていこと。
- より簡単
- よりはやい
- よりフレキシブル
これまで以上にいろいろなことが、早く、簡単に実現できるようになる。
UserMediaAPI
- ユーザーのカメラとマイクのデータ取得
- 必ず、ユーザーに同意を求めるダイアログを出すようにしている。このタイアログは無効化できない。
- 取得したカメラのデータは、javascriptで操作できるようにしている。
- API仕様は、汎用的に使えるように設計している。
グローバルにある、navigatorオブジェクトを経由して、使用する。
// 使用できれば使うし、ダメだったらエラー処理呼ぶように使える。 navigator.getUserMedia({video:true}, successCallback, errorCoallback);
GeolocationAPI
結構前からある。4年前くらい? ユーザーの現在場所を使って、地図情報が取れる。
navigator.geolocation.getCurrentPosition(callback: position);
Device Orietation API
デバイスの向き、加速度とか取れる
IOSが先立って実装。標準の方が遅れてた。
取得したデータをサーバーに乗っけて、いろいろできる。
車載ブラウザあたりで使えると、新しいことができる可能性が。
window.ondevicemotion = function(event) { // event.acceleraionオブジェクト = { x, y, z} が取得可能 // event.rotationRateオブジェクト= { alpha, beta, gamma }が取得可能 }
Systen Infomation API
システム情報を取得できるAPI。
気温、気圧、湿度、騒音、距離感
まだ全部はできていない。ので、ブラウザには対応していない。APIはできてる。 デバイスハードウェアが必要になってくるので、自由に使えるようになるまで、時間がかかりそう。
naviator.system.monitor("Thurmal", successCallback); // event.thermal { state = 気温}
デバイスを介する兼ね合いもあり、データ取得が間に合わない場合は、なにもしないように動作する。
WebSocket API, WebRTC
リアルタイムでインタラクティブなデータ通信で、HTTP使うのは遅すぎる。
WebSocket: 使いやすい。けど、性能そこそこ。
WebRTC: 早いけど使いにくい
WebScoket
- コネクションのackを、最初の一回だけやって、後はやらない。早い
- 同時に送ることができる。受信もできる。
- ただし、サーバーは経由する必要あり。
WebRTC
- 最初の一回だけサーバー通信する。
- あとはP2Pで通信するようになる。
- サーバーを経由しないので、はやい
var socket = new WebSocket("ws://address"); socket.onopen = { }
SkyWayという、WebRTCを簡単に試せるサービスがあるので、簡単に試せる。
Offline Storage
複数やり方がある。
- ServiceWorker
API策定中 - IndexedDB
ブラウザによって動きが違うのでライブラリ推奨 - LocalStorage
現時点、すべてのブラウザで使える。信頼性が高い。
var online = navigator.online; window.lodclstorege["Name"];
LocalStorageは、5MBくらいデータ持てる。一時データとしては十分な容量。
Responseive Images
デバイスサイズによって、表示する画像を切替えるもの。 マルチデバイス対応が容易にできるようになる。
<picture>要素
- srcset属性
まだ入ってない。開発版ブラウザには入っていたりする。 ブラウザがサポートしてなくてもエラーはでない。画像がちゃんと表示される。
<picture> <source media='(min-width: 45em)' srcset='large.img'> <img src =""> <!-- 回避策 --> </picure>
未来のはなし
HTMLでハードウェアを操作できるようになれば、 - スマートカーを実現して、走行データを収拾した後、渋滞予測やの算出など可能に。 - 無人ドローンを用いて、農場の監視を行い、蓄積したデータから、農場の管理を自動化したり。
現時点で、Hueという商品がある。これをWEBで操作できるようになると、面白いことができそう。
HTML5でやっていくこと、できることの解説が詰まった、濃い内容だったと思います。
当日は、実際にビデオチャットを、HTMLだけで実現するデモが織り交ぜられての内容でした。
そういえば、昨日、ちょうどHTML5 が勧告となった速報が流れましたね。
http://www.w3.org/2014/10/html5-rec.html.ja
この話を聞いたときから、ずいぶん進展があったようです。
今後、語られたいろいろなAPIが実際に普及し、使われることによって、 今現在では、スマートフォンしかできないことが、WEBにもできる。そういう時代がきそうな予感がします!
終わりに
で、なんで唐突にこのメモを公開する気になったかというと、
PR TIMESさんの勉強会が、近日開催されます!
http://breaktimes.hatenablog.com/entry/nite2
次回の内容も、かなり勉強になりそうですね。これを無料でやってくれるのだから、大変ありがたいことです(´ω`)
良い勉強会なので、行ったことない人は、行ってみるとよいのではないかと思います!
自分は、絶賛炎上中で行けそうにないので、 行った方はレポして頂けると大変嬉しいです(´・ω・`)
Ruby+Railsの開発で使っているもの、について書いてみる
いろいろできて、いろいろ見えないRuby
今現在は、Rubyをメインに開発進めてる仕事してます(`・ω・´) 前職はC#でWeb開発をしていたためか、なかなかRubyに慣れない日々が続いております。
暗黙的にメソッド生やされると、なにやってるか追うのが大変つらいので、用途絞って使って頂きたく候。
という、無駄なボヤきは、見なかったことにしてください。
そろそろ、仕事で触って2ヶ月くらいになるので、振り返り含めてまとめてみます。
エディタ
RubyMine使ってます。エディタというよりIDEですね。
vimにプラグインいれまくったり、Atomをいろいろイジってみたりといろいろやりましたが、コードの検索精度とかその辺が強力すぎるので、RubyMineに落ち着きました。
ゆとラーなので、楽な方に流れるのは、まあいつものこと。むしろ正義ですらある( ・`ω・´)
とはいえ、使っている機能はそんなに多くないです。キーバインドも対して変えてないし。
仕事で使っているショートカットとか、
CMD + SHIFT + O
Fileサーチ。検索したソースファイルに一発で飛べる。CMD + B
定義元ジャンプ。メソッドなどの定義している位置へ、一発移動できます。
とはいえ、動的言語。完全な補完は無理で、複数同じ名前で定義している要素があると、候補の中から探す作業が必要になります。
まーこれはしゃーない。CMD + @
一つ前のジャンプ元に戻る。CMD + Bした後によく使います。
こんなもん。
他の機能は、まだショートカット覚えきれてないので、Find Action(Sublimeのコマンドパレットみたいなやつ)を駆使してやりくりしてます。
リファクタリングの機能が強力なのは大変よいです!
ただ動的言語なので、稀に暴走して大変なことに…。リファクタ後は、必ずDiffチェックするようにしましょう。
Bash
IDE使うといっても、Gitコマンド使ったり、その他もろもろのツールを使う時は、やはり黒い画面を使う必要があるものです。
ある程度Bashの使い心地を向上しておいた方が、いろいろ捗ります。
Terminal.appは早々にやめて、iTerm使ってます。単純にカラースキームの変更が楽だから、ですね。
あと、今自分がどのブランチにいるか、がひと目で分かるようになっていると捗る。
Git使って開発していると、頻繁にブランチを行き来するので、間違った操作しないように、注意するのは大事なことです。間違ってmasterブランチにpushすると大変面倒なことになりますしね…。
自分は、Git-Promtとか使って、常に表示できるようにしています。
http://mironal-memo.blogspot.jp/2012/08/git-completion.bash.html
使用するためには、.git-prompt.shを、homeに配置します。
curl -l ”https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh" > ~/.git-prompt.sh
設定は.bash_profileにこんな感じで。
source ~/.git-prompt.sh GIT_PS1_SHOWDIRTYSTATE=true PS1='@\u \W$(__git_ps1 "[\[\033[32m\]%s\[\033[0m\]]")\$ '
こんな感じに表示されるようになります。べんり!!
SQLクライアント
コマンドラインつらい(;ω;`)なのでGUIでも操作できるやつを使います。
大昔にRails使った開発やったときは、某Phpmyadminとか使ってましたが、辛い。
Sequel Proがマジ便利です。全部これで済ませられます。個人的には鉄板なツール。
他にも、MySqlWorkbenchとかあるのですが、使い勝手がそれほど良く感じなかったので、すぐ乗り換えましたね…。なんかストレス溜まるんですこれ。
Gem
汎用的に使えるやつを上げてみる。大体、どんなプロジェクトでも、汎用的に使えると思います。
作成元か、使い方を載せてるリンクを同時に貼っておきます( ・`ω・´)
Better errors
Railsのエラー画面を綺麗にするやつ。RailsでWeb開発するときは必携ですね。
http://morizyun.github.io/blog/better-error-gem-rails-ruby-rack/
hirb
rails-console(irb, pry)でActive Record結果を整形して表示することができます。
http://blog.dakatsuka.jp/2011/05/14/hirb-rails-console.html
pry
Ruby-Console irbを機能拡張したもの。実行結果のハイライトや、shellを実行できる機能、他の便利なGemが使えるようになること、等メリット多めです。
http://morizyun.github.io/blog/pry-command-rails-ruby/
pry_rails
rails start でpryが起動するようになります。
http://qiita.com/yaotti/items/c6e850010f36acedb0e1
railsは、標準だとirbを立ち上げるので、Railsでもpry使いたいときは必須です。
pry_byebug
ラインデバッグできるようになります。
https://rubygems.org/gems/pry-byebug
コード上に、binding.pryと書くと、そこを通ったタイミングでブレークするようになります。
unit_testや、Rakeタスク通すときにも、止まるようになるので便利。
ただ、これruby2.0以上でしか使えないので、それ以外の環境では、pry_debuggerなるものを使います。使い勝手はどちらも同じ感じですね
pry_doc
通常、Rubyでは、Deepな領域であるC側のコードを見ることができません。
pry_docsを使うと、pry上でではありますが、このコードを見ることができます。
http://qiita.com/joker1007/items/42f00b12c65bbec0e50a
メソッドの内部構造を知ることは、効率のよい開発をするために必須だと思っています。
なにかわからんことあったらガンガンコード読むと、いろいろと捗るようになります( ・`ω・´)
pry-stack_explorer
pry上で、コールスタックが参照できるようになります。デバッグに重宝します。
http://shirusu-ni-tarazu.hatenablog.jp/entry/2012/11/04/180908
動いているのに、そのメソッドなりクラスが見つからない、メタプログラミングなダークサイド臭のエラー特定するとき、あると大変助かります。
rails.erd
ER図をかいてくれるツール。
http://qiita.com/satton_maroyaka/items/55e6cf42bd677c94d0d5
開発中に、テーブル定義書的なドキュメントを作るときに使えます。
また、モデル間のRelationを見るためにも必携ですね。
実テーブル自体が、リレーション持っていなくても、RailsのAssociationに従って図を生成してくれるので、Railsを使うときは、これ使った方がよいですね。
spring
railsの起動を早くしてくれるやつ。
http://blog.livedoor.jp/sasata299/archives/51925482.html
裏側でrailsのプロセスをあげっぱなしにしておいて、それを使うようにすることで、起動時のライブラリロードとかの、あれこれを解決してくれるようです。
終わりに
Rubyは良い言語ですが、それは、たくさんのRubistが公開してくれている情報や、Gemが豊富にあるからだと思っています。
それだけ、開発者を惹きつける何かがあるんでしょうね。
自分は、「型付け欲しいなぁ・・・」とかボヤきつつ、Scalaの方を見てたりしていますが。
まだそれを理解できるところまで、Ruby深く触っていないので、まずはいろいろと使い倒してみたいと思っています( ・`ω・´)
Rails+MySql→Rails+MariaDBで、mysql2 Gemでエラー出る問題
Spiderエンジンとかその辺の検証をするために、開発で使ってたMySQLをMariaDBに変更した時の話。
Spiderエンジンについては、開発者の方のスライドを見ていただければ。
要は、シャーディングをアプリではなくDB側で解決させてしまおう、というコンセプトのシロモノ。
まあ、このへんはある程度検証できたら、まとめるので今回は置いておく(`・ω・´)
問題は表題の通り。環境は、Rails4.0.8 + Ruby 2.1.1。
すでに入っていた Mysql 5.6をbrew uninstall mysql
で削除した後、brew install mariadb
する。おもむろにmysql.server start
ローカルオンリーのため、テキトーにrootで。
mysql起動させたので、rake db:migrate && rake db:seedやるとこんなエラーが発生しました。
rake aborted! Incorrect MySQL client library version! This gem was compiled for 5.6.20 but the client library is 10.0.13-MariaDB. ./config/application.rb:7:in `<top (required)>' ./Rakefile:4:in `<top (required)>' (See full trace by running task with --trace)
どうやら、SQLクライアントのmysql2のGemが、導入したMariaDBには対応していなかった模様(´・ω・`)
gem uninstall mysql2
後、 再度、gem install mysql2
なり、bundle install
実行で、mysql2入れなおすと、エラーが解消しました。
導入されているDBによって、Gemの自動判別とかやってくれてるんですかね。
データ分析担当者向けセミナー 「gloops流データアナリストの部署間連携術」に行ってきた
昨日、2014/10/8に開催された、gloopsさんのデータアナリスト向けセミナーにいってきました(`・ω・´)
私はただの1エンジニアではあるんですが、今後自社プロダクトの分析環境つくる仕事が待ってそうな気がするので、データサイエンティストの皆様の中、混ざりこんでまいりました。
仕事が長引いて、遅れて参加になったのが残念(`;ω;´) CMの効果測定話聞きたかったなぁ… とはいえ、後半の部署間連携の話しはガッツリ聞けたので、かなり有益だったと思います。
gloopsさん、話には聞いていましたが、かなり徹底してデータ解析に力入れている感を感じました。ここまで徹底的にやれると、プロダクトの改善がはかどりますね。
ここから、セミナー内容のメモを元に、雑多なまとめを紹介します。
プロダクトと一緒に、どう走っていくかの話
いまやグループスさんの看板コンテンツとなった、「スカイロック」のCM配信と、それに付随するゲーム施策の話。
キャラデザがアレだとかいろいろ話題になった作品ですが、天下の集英社がなにも言わんとこみると、許可はもらってる感じなんですかね。それはそれとして。
スカイロックのユーザー獲得のため、CMをマスで配信していたそうです。割りとゴールデンタイムに配信してた印象。自分も何回か見たことあります。
CM配信と合わせて、ユーザー獲得のための施策を22本ほど平行して走らせていたそうです。普段が8本ほどらしいので、かなり多めの施策を走らせていたみたいですね。
この施策を決定するために、ディレクタとデータアナリストが、どのような施策を打つか調整していたそうです。 gloopsさんでは、
「HBU」
という指標を第一に行ったとのこと。
この指標は
- 直近30日間で、ほぼすべての日数を遊んでいるユーザー
を意味しているそうです。この数値が高ければ高いほど、ユーザーが楽しんで率先して遊んでいることになる。
なので、この数値を向上させていくことが、プロダクトの成長につながる、とのこと。
つまりHBUを向上させる≒「継続率」の向上、が言えるのですが、この数値を向上させるのはかなり難しいとのお話でした。
ユーザーがゲームをやめるタイミングは、ユーザー自身が感じたことがトリガーとなるため、施策単位でコントロールすることが不可能であると。
また、「この施策があれば万全だよね」という、銀の弾丸まがいのものは存在しないため、闇雲に施策を打っても改善していかない。
gloopsではどうやったか
そこで、gloopsさんでは、プロダクト側と、自社データアナリストが連携して、
- どのタイミングで、ユーザーが飽きてしまうのか?
- ユーザーのレベルや、セグメント毎に、なにか関連があるのか?
を分析して、今回のCM施策に役立てたそうです。その時の指標として、例に出されていたのが、
- ゲーム内の強さが、ある数値を超えると、継続率が伸びる
- ゲーム内のクエスト進行度が、一定より上になると、継続率が伸びる
の2点だそうです。これは普段の運営で蓄積したデータを使って出した指標です。
この指標を元に行った施策で、セミナーで紹介されたものはこんな感じでした。
- 未インストール者向けに、強キャラクタと進化アイテムを配布する、ログインボーナス
- 離脱ユーザー向けに、カムバック限定パネルミッション
- 既存ユーザー向けにも特殊な施策(ここ聞きそびれました)
ユーザーの属性毎に、異なる施策を用意するようにしていますね。
分析と施策
ここで、ちょっと前に書いた、データアナリストの分析結果を思い出してください。
前に戻るのも面倒だと思うので、さくっとコピペ。
- ゲーム内の強さが、ある数値を超えると、継続率が伸びる
- ゲーム内のクエスト進行度が、一定より上になると、継続率が伸びる
これです。この指標が、即ち「継続率が高いユーザー」の条件です。CM施策はこの条件に合うように、
- 初心者ユーザーが、一定以上の強さに、すぐ到達できるように、強いキャラクタ配る
- 離脱ユーザーが、また継続してくれるように、パネルミッションに、クエスト進行度絡みのミッション含める
を狙って打たれました。これすごいですね。仮説があって、データ分析して、最適な施策を導き出す。
実際、この施策を実行した結果、期間中のHBUが1.5倍。売上が期間平均1.1倍ほど、向上がみられた、とのことでした。
分析内容の共有はどうするべきか - データアナリストがコストハウスにならないために -
さて、このような成果を出した、分析と施策のコラボレーションですが、普通こんなにうまく回るとは思えないです。
データアナリストと企画陣で、データの見方や、必要としている情報が異なりますからねぇ…。
どのように、うまくデータの話共有を行うかどうか、の話題がありました。
データアナリストが分析したデータを、そのまま渡すとどうなるか。
おおかた、膨大なデータにあふれて、どこを見るべきか、の判断に時間かかるようになります。
そうすると、企画陣は、せっかく解析してできたデータを、読まずに放置しがちになってしまいますよね?企画担当者も、プロダクトの改善や、新規施策策定に忙しいですから。しかたない。
では、そのデータをいかにして企画陣に見てもらうか。
gloopsさんでは、企画担当者が分析したデータから、企画陣が興味を持ちそうな、施策に直結したデータに加工して渡しているそうです。 企画担当者も、どんなに忙しかろうが、自分の興味ある、担当している施策に関するデータを、読まずに放置することはないです。
gloopsさんでは、データアナリストに必要な条件として、以下3つ、挙げられてました。
- 伝えたいことを明確にする
期待されている、要求されているモノを適切に伝える方法を知っていること - 解析する対象自身を知る
自身のプロダクトは、どのように使われているか、を理解する - データを共通認識させる
データアナリスト以外が、データとどう向き合うか、の意識づくり
もっと自分たちのプロダクトを知り、その分析結果をわかりやすく伝えられるか。データをチームで利用できる空気になっているか。データが正しく理解されるように報告できるかどうか。
最初から全部カバーすることは大変ですが、ここまでできれば優秀なデータアナリストになれそうですね。
#gdms2014
仮設(企画) → 分析(DM) でサイクル回して仮説の精度上げる。
分析から得られたデータを元に施策を策定。
で運用している感じですね
— しのゆ (@shinoyu) 2014, 10月 8
総評
仕事切り上げが遅くなり遅れていったため、前半部分のメモがなかったりするんですが、後半の部分だけでも、かなりボリュームがあるセミナーだったと思います。
ただ、今回のセミナーでは、具体的な体制づくりの話には、多く触れられなかったことに、物足りなさを感じたり。これから体制作っていく人にとっては、この部分が一番聞きたいところじゃないかなー、と思いました。
次回も、セミナー開催頂けるとのことだったので、また次回に期待して、参加したいと思います( ・`ω・´)
開発環境(mac)を:beers:まみれにするためにやること
やるたびに忘れるので、個人用メモ程度に。
Homebrew
自家醸造しないと始まりません。サクッといれる。
rubyとcommand line tools for xcodeが必要らしい。RubyはデフォルトでOK。
command line tools for xcodeは導入課程でインストールが要求されてた気がする。まあダメだったら入れる感じで。
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
インストール後、以下コマンド実行。なにか問題あるならエラーなり警告がわかりやすく表示されるので解消しておく
brew doctor
こんな感じで使います。
brew install git
インストールしたモジュールは、/usr/local/Cellar/配下に置かれる(変更はできる)
また、/usr/local/bin配下にシンボリックリンクが置かれる
Homebrew-Cask
brewコマンドで、Chromeのようなアプリケーションを入れられるようになるやつ。
brewコマンドでインストール
brew install caskroom/cask/brew-cask # アプリインストール brew cask install google-chrome
インストールしたアプリケーションは、デフォルトだと/opt/homebrew-cask/Caskroom/に配置される。パスは通っているらしく open -a アプリ名 とかで起動できる。
caskroom/versions
Homebrew-Caskはアプリを入れてくれるけども、英語しかない。ユトラーなので日本語ないとつらい。そこでcaskroom/versions。
brew caskの別バージョンアプリをインストールできるようになるやつ。
*1
これを導入することで、日本語パッケージがリポジトリに含まれる。
brew tap caskroom/versions
brew cask install thunderbird-ja