Hatena::ブログ(Diary)

四角革命前夜

2014年08月01日(金)

2014年04月01日(火)

3月のまとめ

2月以上に忙殺されてた。


やったこと

  • データ可視化勉強会に参加した
  • Sendagaya.jsに参加した

忙しくてSendagaya.jsの記事書いてないや……

そろそろ落ち着いて来たはずだから、いろいろ出来るようになってくるはず!

2014年03月08日(土)

pplogで使われているフォント

Google Fonts

Verela Roundという丸いフォント。Google Font APIから使ってるみたい。

2014年03月07日(金)

データ可視化 勉強会に行って来たよ

5日も前なのだけど…… ハッシュタグは#vizd3です。

クレジットカード現金化詐欺【業界人が教える口コミ情報】


データ可視化の基礎とD3のデモ / @muddydixon

テ?ータ可視化勉強会

可視化とは

情報を明確かつ効率的に伝える事

  • 伝えそびれている
  • 明確でない
  • 効率的ではない

上記は可視化ではない

視覚化すると何故良いか

大きさ、位置、濃淡、色、傾き等の

経験的・認知的な既存知識を効率的に利用した理解の促進

可視化の概念
  • データセット
  • 変数化
  • 代数処理
  • 尺度化処理
  • 統計処理
  • 幾何処理
  • 座標系処理
  • 装飾処理
  • 可視化
尺度
  1. 名義尺度
  2. 順序尺度
  3. 間隔尺度
  4. 比例尺度

色は間隔・比例には向いていない

Webでの可視化のいいところ

利点

  • Webで多くの人に共有できる
  • マウスやキーボードによるインタラクションが利用できる
  • アニメーションが利用できる
D3.js

SVG操作 + 数値処理 + 可視化ユーティリティ

  • selector/attr/style
  • scale/nest/array/math
  • scale/axis/layout

selection

  • .enter()
  • .exit()
  • .update()

3D円グラフの殺し方 / @AntiBayesian

殺意駆動開発

正しい可視化で正しい状況把握

「3D円グラフ皆殺し」で検索

  1. 可視化の目的
  2. 可視化によって何を得るか
  3. 可視化を根付かせられるか
  • 目的
    • 売り上げアップ
    • 品質改善
可視化すべきKPI
  • 継続率?
    • 率 : 分子・分母とは
    • 翌日継続率
    • 一週間継続率
      • 何を持って継続と見なすか?
      • 状況・サービス次第によって変わる
  • PV?
    • 1画面表示したら1PV?
      • 1画面とは?
        • ポップ画像が浮き上がったら?
        • 商品説明長くなって2ページになったら2PV?
        • Ajaxで画面遷移しないようにしたら0PV?
  • PVの恐怖
    • 値が乱高下し過ぎ
    • PVを制作サイドにボーナス与えると、売り上げとは関係ないPV稼ぐためだけのページを作り出す誘引
    • PV基本的に使うべきでない
    • 使うなら膨大なガイドライン策定が必須
  • 顧客単価?
    • ARPU: 全顧客平均単価 売り上げ/顧客
    • ARPPU: 有料顧客平均単価
    • LTV: 顧客生涯価値
    • 他にもいろいろある
  • どれを使えばいいのか?
    • ARPU突然現象 -> 顧客単価が下がったと常に言えるか?
      • CMやキャンペーンで新規流入したからかも?
      • 増減理由が一位ではないためKPIとして不適切
    • ではARPPUを使うべき?
      • 新規流入の影響を受けにくい
      • 有料顧客数は無関係。そのため常に「ARPPUが上がる->売り上げ上がる」ではない
  • 万能のKPIは無い
    • 各KPIの性質を尻、KPIの追加・削除をする
  • ダメKPI例 : 桶屋-風量モデル
  • 何故不適切か
    • 直接要因でない
  • GIGO
    • garbage in, garbage out
      • ゴミ入れたらゴミしか出てこない
    • KPIもデータも自分で作ろう
    • データを前処理で何とかするの止めよう
      • 手作業止めよう、刺身たんぽぽは自動化せよ
      • ビッグデータ vs 前処理、辛さしかない
      • 前処理しなくていいようにデータの定義からやろう
  • 何を可視化すれば良いかまとめ
    • 良い可視化は良いデータ作りから
可視化によって何を得るか
  • 価値ある可視化の作り方
    • 様々なデータを切り分ける
      • 年代性別
      • 年月日
      • ログイン頻度
      • 利用金額
      • LVや攻撃力
可視化が根付かないケース
  1. 手順が複雑煩雑
  2. KPIがいっぱい
  3. KPIが理解困難
  4. KPIの値が乱高下して読み取りづらい
手順が複雑煩雑

自動化しましょう、BIツール使おう

KPIがいっぱい

結局どれを見ればいいの? -> 見なくなる

  • KPIは必要最低限に抑えましょう
  • 必要性を説明できないKPIは即座に捨てる
  • ユーザ毎に適切なKPI群を策定する
    • エンジニア、プランナー、経営層、CS、etc...
KPIが理解困難

定義が異様に複雑で難しい

理解するのに数学や統計の知識が必要

KPIを分かりやすい意味に分割する

  • 大体複雑すぎるKPIは意味を詰め込み過ぎ
KPIの値が乱高下して読み取りづらい

DAU

Dailing Active User

日々変動が激しいKPIは見るものを振り回す

  • より安定したKPIを策定する
    • 定着ユーザDAU: 直近5日間継続ログイン
    • ベテランユーザDAU: 累積30日以上ログイン
倫理の話

糞な可視化 is「顧客はこの程度で騙されるだろう」という悪意


可視化者へ

失敗は仕方ないが決して嘘をつかないよう


皆さんへ

可視化リテラシーを高め、悪意あるグラフの害を避けよう

書籍
統計学とは何か ―偶然を生かす (ちくま学芸文庫)

統計学とは何か ―偶然を生かす (ちくま学芸文庫)


とまあ、Markdownでメモしたものをぱぱぱーっと書いてみたのでした。

この数日前に東京Node学園祭で同じ場所に来てて、@muddydixonさん今週2回目だなーと思ったりとか。

あとあんちべさん、イケメンだったし発表がゆるふわだったりガチだったり、その上でとても大切な事とか発表してたのでものすごいためになった。

一方で、自分はただD3.jsでグラフ描けるようになれば良いかな〜とのんきな感じで参加してたので、イベントの趣旨とは大分ずれた参加者だったかも。

2014年03月01日(土)

2月のまとめ

今月は忙殺されて全然……


やったこと

  • lodash.jsを使うようになった

これ以外にもいくつかやったことはあるんだけど、もう覚えてないほど忙しい。

春になるし、誕生日も迎えるし、このままではちょっとまずい……

モジュールだけではない何かを作らないと。

東京Node学園 11時限目に行って来たよ

東京Node学園 11時限目に行ってきました。忙しすぎてこの記事を書くのに日が空いてるけど……

no title


これからNode.jsの話をしよう / @yosuke_furukawa

no title

Node.js日本ユーザグループ新代表、@yosuke_furukawaさん。

内容としては以下のような感じ……ってスライドあるんだからそっちを見れば良いのか。まあ、一応気になったところとか。

  • Node.js news
    • リーダーが変わった
        • TJ Fontaineを学園祭に呼ぶかも?
      • v0.12がもうすぐ
        • スライド参照
  • 新機能
    • sync child_process
    • tracing API
    • v0.12の機能についてはStrongLoopのVideo見ると良い
  • 気になるライブラリ
    • WAF
      • koa
        • generator/yield
        • try-catch
    • realtime
      • Primus
        • 各種WebSocketライブラリを切り替えられる
    • frontend
      • いろいろありすぎ
      • gulp
      • browserify
      • component.io
  • 東京Node学園の今後
    • これまで通りのNode学園をやりたい
      • gitter.im/yosuke-furukawa/TokyoNodeFestival2014
      • github.com/yosuke-furukawa/TokyoNodeFestival2014

browserifyことはじめ / @hitsujiwool

no title

続いて@hitsujiwoolさんのbrowserifyのお話。

気になったところとかいろいろ書いたけど、スライド読んだ方が早いかも。あとbrowserify-playground試してみるとか。

no title


LT

ピザとチューハイをテーブルに上げてしまったためMacが使えず。

Deep Learningにちょっと詳しくなった気が……する。


開場直前まで本当にバタバタしていて、数時間前まで行くのをあきらめてたんだけどなんとか行けて良かったかも。

でもやっぱりバタバタしてて終わったらそのまま帰った。なんだかなあ。

2014年02月16日(日)

underscore.js/lodash.js

JavaScriptで学ぶ関数型プログラミング

JavaScriptで学ぶ関数型プログラミング

JavaScriptで学ぶ関数型プログラミングを読んで(全部読んでないけど)から、ちょっとした便利ライブラリとしてしか使えていなかったunderscore.js/lodash.jsをドキュメントを見ながらいろいろ試してみた。


underscore.jsのドキュメントを見てるけど、使ってるのはlodash.jsって多分みんなそうだよねえ?でもbackbone.js使うときはunderscore.js使うよねえ?まあいいや。


本を全部読んでるわけじゃないからまだわかんないけど、関数型を意識しながら(?)メソッドを見ていったら結構便利な関数が多々あることに気がついた。

  • partial
  • compose
  • clone
  • extends
  • chain
  • value

上の二つ以外はただの便利関数のような気がするけど……


partial

数年前にやった部分適用の関数?でいいのかな。

var calc = _.partial(function(a, b) {
  console.log(a + b);
}, 5);

calc(5);  // => 10

使いどころ作れば割と使えるかも。


compose

関数の戻り値を次の関数に渡していく関数?うまく説明できない。

var plus = _.compose(function(a) {
  return a + 1;
}, function(b) {
  return b + 1;
});

console.log(plus(1));  // => 3

ちょっとだけ関数型に触れられた気がする。あと利点とかもわかって来たような気がする……けど関数型の利点じゃないのかなこれは。

underscore.js/lodash.jsのcomposeでハマった

a = _.compose(
  (v) -> String(v).toLowerCase()
  (v) -> String(v).toUpperCase()
)

a 'Hi!'  # => 'hi!'

後方から前方の関数に向かって処理が走るのか!

2014年02月03日(月)

JavaScriptで学ぶ関数型プログラミング 第1章〜第7章

JavaScriptで学ぶ関数型プログラミング

JavaScriptで学ぶ関数型プログラミング

この本、自分にはスキル的にちょっと早すぎた感があるかも。


最近全然本が読めなくなってきてるし、読む気が無くなってきてるし、理解する気が無くなってきてるし。

とりあえず7章までさらーっと読んだのだけど、ほとんど頭に残ってない。

2割くらいは既に実践していたこと(普通にJavaScript書いてる人ならやってるはずのこと)で、あと5割くらいは「で、なんなの」って感じで、残りの3割くらいは「何が言いたいのかよくわからん」という感じ。


本にあったように、引き出しを増やすことはとても大切だと思うのだけど、全然理解できないというか、理解する気がないと言うか、まだ早いと思っているというか。

なんて言うか、モノとして作り上げるのがまだまだ苦手なので、きれいなコードを書くとか保守しやすいコードを書くとかはまだまだ先だと思っているのだよね。きれいなコードを書くことも保守しやすいコードを書くことも、とても大事だと思うのだけど。一方で、きれいで保守しやすいコード書いても、動かなかったりそれ自体が関心の無いものだったりしたらあまり意味がないというか。


だから、まあまあ作り上げるのが苦にならなくなったりして、完成したものに対して保守性とか可読性(関数型のエッセンスを取り入れることでそうなるのかはわからないのだけど)を加えたくなったらまた読み返すのが良いのかなと思った。

そういう意味ではMVCもまだまだ理解できてないのでもうちょっと先なのかなと。


というわけで意識が向いてないことと、やっぱり関数型の考えは簡単ではないというのが重なっていて、理解が進まない気がするのでした。