データサイエンティストについてメモ
データサイエンティストとは何か
1.自社や競合他社、顧客のことを正しく把握する為にビッグデータから分析し、ビジネスに展開すること
2.データサイエンティストの働きについて
「データを収集し、分析に適した形に整え、データにストーリーを語らせ
そのストーリーを他者に伝える」
3.事業の勝ちパターンを定型化すること
データサイエンティストとは
1.価値ある情報を探す技術を持っていること
2.高速にデータを処理すること
3.データ分析の結果をビジネスに展開すること
※重要
□ビジネスへの成果は常に意識しなければいけない
□サービスに実装しても効果が出なかった場合のコストを
考慮しておく必要がある
□実務に実装する余地があるか
[出来ないパターン]
・分析途中にマーケットの構造が変化した場合
・事業に改変が発生した場合
・法的に問題が発生した場合
データマイニングのプロセス
1.ビジネスの理解
・ビジネスの全体像を理解したうえで課題設定
多数の関係者にヒアリングを取る
・プロジェクトの目的を明らかにする
2.データ収集・データ理解
・データを理解して、仮説のあたり(下地)をつける
3.データマートを作る
・必要なデータを集めて、分析ツールを作る
4.課題を解決する為の仮説を立てる
5.仮説を評価する
・仮説の精度の検証
・ビジネス的に想定外のものがないか、見落としがないか
6.ビジネスに展開する
・結果を分かりやすく担当者に伝える
・施策実行の為のシステム仕様を作成
zclipはtable内では使えない
zclipで、嵌ったのでメモ。
Webサイト上で「クリップボードへコピー」を行うことができるjQueryプラグイン
http://www.steamdev.com/zclip/
表題の通り、table内にクリップボードをコピーする機能をつけるリンクを入れると
動かなかった。
↓下記のような感じ
<head> <script type=text/javascript> $(document).ready(function(){ $("a#copy-dynamic").zclip({ path:'swf/ZeroClipboard.swf', copy:function(){ return $("input#test").val(); } }); }); </script> </head> <body> <table> <tr> <td> <a href="#" id="copy-dynamic">コピー</a><input type=hidden id=test value="test"> </td> </tr> </table> </body>
div内ならうまくいくけどtable内でうまくいかないのは何故?
SQLメモ(2) group_concat関数を使うときの注意
SQLで便利なgroup_concat関数ですが、うっかりミスに注意するべし。
文字数制限がある。
結果として予測していた値よりかなり少なくて
「何でだ・・・」と思ってたのですが、そういうことか。
[参考]
http://netbizknowhow.seesaa.net/article/31278483.html
http://dev.mysql.com/doc/refman/4.1/ja/group-by-functions.html
SQLメモ(1) 副問い合わせ・関数
[副問い合わせ]
内側にあるSELECT文が実行される
↓
外側にあるSELECT文が実行される
3パターン
・単一の値の代わりとして、副問い合わせの検索結果を用いる
単一行副問い合わせとは?
検索結果が1行1列の1つの値となる副問い合わせを指す
・複数の値の代わりとして、副問い合わせの検索結果を用いる
複数行副問い合わせとは?
検索結果がn行1列の複数の値となる副問い合わせ(ただしnは1以上)
複数の値との判定を行うwhere句の条件式やselect文のfrom句に記述することが
出来る
【判定式】
IN演算子 複数の値との比較が可能
IN どれかと一致するなら真
ANY どれかと不等号式との比較で合致していれば真
ALL すべてと不等号式との比較で合致していれば真
・表の値の代わりとして、副問い合わせの検索結果を用いる
[substring]
select substring(メールアドレス, length(メールアドレス)-1, 2) from 回答者
[case文] 文字列の繋げ方 xx || xx
select trim(メールアドレス) as メールアドレス,
case when 年齢 >= 20 AND 年齢 < 30 then '20代'
when 年齢 >= 30 AND 年齢 < 40 then '30代'
when 年齢 >= 40 AND 年齢 < 50 then '40代'
when 年齢 >= 50 AND 年齢 < 60 then '50代' end
|| ':' ||
case when 性別 = 'M' then '男性'
when 性別 = 'F' then '女性' end as 属性
from 回答者
join 結合条件に合致したもののみで作る
left join 左の表は、結合条件に満たないものもすべて作る
right join 右の表は、結合条件に満たないものもすべて作る
full join すべての表は、結合条件に満たないものもすべて作る
開発環境を整える
デバッグしやすく、バグにすぐ気づける環境つくりをしたい。
やってると、PHPUnitで躓いた。
うーむ。
作りたい環境
XAMPP1.8.1
開発環境(IDE) NetBeans
デバッグ XDebug
-
- (ここまではサクッといける)
自動テスト PHPUnit ←ここで嵌る
バージョン管理 Git
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
やり方をメモしとく。
XAMPPインストール
開発環境(IDE) NetBeans
ここまではふつーにインストールのみでいける。
XDebug
php.iniを修正する。
XDebugは、XAMPPに入ってるので、php.iniの修正のみでOK。
【修正前】
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
[XDebug]
;zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
;xdebug.profiler_append = 0
;xdebug.profiler_enable = 1
;xdebug.profiler_enable_trigger = 0
;xdebug.profiler_output_dir = "C:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
;xdebug.remote_enable = 0
;xdebug.remote_handler = "dbgp"
;xdebug.remote_host = "127.0.0.1"
;xdebug.trace_output_dir = "C:\xampp\tmp"
【修正後】
[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
;xdebug.profiler_append = 0
;xdebug.profiler_enable = 1
;xdebug.profiler_enable_trigger = 0
;xdebug.profiler_output_dir = "C:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_host = "127.0.0.1"
xdebug.trace_output_dir = "C:\xampp\tmp"
PHPUnit
ここに載ってるとおりにやる。
pearは、xamppに入ってるぽいのでpearコマンド使ってけばOK。
ただし、管理者権限でコマンドプロンプトを実行する事。
http://lazesoftware.com/blog/11/0213/
うまくいかないときはキャッシュを疑う。
学び方について
http://nhiro.org/langbook/
http://www.slideshare.net/nishio/ss-19956967
何から学ぶか
具体的な知識
膨大な知識を取り込む方法は?
1.必要な順に
●学ぶ目的を明確にする(モチベ持続の為にも)
●その達成の為に必要な物から学べ
2.おおまかに
どこに何があるか把握する為に段階的詳細化
↓
知りたいことの明確化
どこに情報があるかの明確化
ざっくり読んでもわかった気がしない
自分の知識と結びつかない
もっと知りたいという気持ちが湧いてこない
↓
知識を得るには周辺知識が必要
3.片っ端から
効率的な学習が出来ない場合(最終手段)
片っ端から書き写す
効率のいい方法への移行
どこが重要な部分かを考える力を養う
書いて心に浮かんだことは記録して後で見直す
自分の理解が正しいか実験し結果を確認
抽象的な知識
抽象的な知識による学習時間の短縮が長期的には有利、だが現実的に無理
webサービスをリリースした人の話を聞いた
メモ帳サービスをリリースした開発者の話を聞きにいってきた。
http://coedo-dev.doorkeeper.jp/events/4137
このサービス↓
私が、このイベントにいった目的は下記2点。
1.サービスをリリースした人の実体験+言語は違うけど
どういう風にテストしてるとか、気になる技術などを
知る。(自分はPHPを普段使ってるけど、このサービスは主に
Rails4、Ruby2.0、HTML5を使ってる)
2.他人の技術レベルを知り、自分に鞭を入れる為。
私がRuby知らないということもあるけれど
技術話が、断片的にしか分からなかった。
他の人たちと比べて、圧倒的知識不足であると感じた。
[勉強になった事]
●下記サイトをデザインの参考にしたとの事
一定のクオリティがないと載らない為、参考になる。
●開発はそんなに大変ではないが、サービスを継続することが
大変。
運用の手間を省力化する為にしている事
1.ユーザにメールでバックアップを送る、dropboxとの連携
いつサービス停止してもいいようにw
2.herokuを使っている
Rubyアプリケーションのクラウドプラットフォーム
●テスト
テストを自動化。複数ブラウザで自動テスト実行してくれる
ツールを使っている。(capybara)Ruby用なのでPHPでは使えない。。。
http://sssslide.com/www.slideshare.net/tricknotes/capybara-introduction
●機能
処理時間の短縮化のために、HTML5アプリキャッシュを使っている
(localstrage)
●googleアプリスクリプト
毎日定時刻に、アプリを起動しユーザ数や、アクセス数を
自動グラフ化している。(データは、あるURLたたくとJSONが吐き出されて
それを受け取りデータを追加していく形)
gmailとも連携可能なので、使い勝手よさそう。
けどスクリプト文法覚えるのめんどくさいらしい。
●おもしろいなと思ったこと
海外対応の為、英語対応しているが英語圏ではない
ヨーロッパ圏に何故か受けている。
Evernote対応しろ、と日本ユーザによく言われる。
Facebookでログインする機能は、Facebookに情報取られそうで
怖い、辞めてくれと要望がくるが、Facebookログイン機能がなかった時代は
パスワードを入れるのがめんどくさいという苦情が来ていた。
この手の苦情は無視するに限るw
FlatUIは日本語との相性よくない。
●思ったこと
自分が足りない能力は他人にやってもらってることが多い=コミュ力、人脈が広い
実現出来る人は、自分だけでどうにかしようとせず人に頼ることもする。
餅は餅屋という割り切り。
最新の技術を取り入れる試みをしてる。
機能の実装に、3日というスピード。
プレスリリースなどの展開を行うために、3ヶ月でリリースしようと
思ったら、3日くらいで開発を終わらせないと終わらない。