PR記事:データ分析の複雑化/大規模化に伴う環境の変遷と途中にある壁

仕事柄、色んなパターンのデータ分析してる人の環境を見る機会があるのですが、よくあるのは下記のような7つかな、と思います。段々とやりたいことが複雑/高度化する、もしくはデータの規模が大きくなると下の方に進んでいく気がします。

(私見ですが)よくある7つのパターン

1. WindowsGUIアプリやWebサービスの管理画面

いわゆるエンジニアじゃない方がデータ分析を行う時はまずここからではないでしょうか。Excelなども何気に高機能ですし、Tableauなどでも色々できます。Web上でもGoogle DocsのSpreadSheetはExcel並に色々できてしまいます。

2. Windows上でのプログラミング

少し高度な事や複雑な事をしたいなぁ、と思ったらこの領域になるのではないでしょうか? Excel上のVBAから始まり、Rを使ったり、それでも足りない部分はPythonを利用したり、という感じでしょうか。

そこまで高度な事をしない、もしくはそんなにデータ量が多くないかぎりは、この領域でほとんどカバーできてしまうイメージです。

3. Linux上でのコマンド操作

データソースが複数にまたがったり、データの加工処理が必要になってきた場合はWindowsでは段々辛くなってきて、脱Windows化が起きてくる気がします。組み込みのコマンドを駆使したデータ加工を行うイメージです。最近では仮想マシン上で簡単にLinux環境を手に入れられるようになっていますね。

4. Linux上でのプログラミング

コマンドだけではできない加工処理や、加工処理からそのまま統計や機械学習の処理を行う場合をイメージしています。手軽なところではAWKなどから、シェルスクリプトへ、そしてPythonなどに向かっていくイメージです。

5. DBとかKVSとかを自前で用意する

Linux上でもファイルを読み込んで処理するのが辛くなってくる(メモリに全部載り切らず値の突き合わせができない、時間がかかり過ぎる、等)ので、元のデータソースとは別に、処理の中間着地点として、DBやKVSの利用を検討し始めます。段々とミドルウェアの知識が必要になってきます。

6. Hiveとか、最近だとMPP

データが大きすぎて単体のマシンだといつまで時間がかかるか分からない、そもそも上手く処理できない、みたいなケースが出てくると、Hadoopだー、Sparkだー、という世界になります。が、HadoopやSpark上でそのままプログラミングするのはツライので、HiveやPigなどの裏側でいい感じにMapReduceを生成してくれるものに頼り始めます。最近だとImpala, Presto, Drill等もでしょうか。要はクエリをどんと投げていい感じにデータを抜き出したり加工したいという要望でしょうか。AWSのRedshiftやGCPのBigQueryもはいってきますね。

7. Hadoop/Sparkなどの環境下でのプログラミング

Hive等では手がとどかない部分までコントロールしたい、しなければならない、となって直接プログラミングを行います。分散、大規模やで!(意味不明)

問題意識:2と3の壁が大きい

2と3の壁が非常に大きいと思っています。何となく3になると「黒い画面」になって尻込みする人が多くなって、3以上の人が「こっちに来ましょうよ」と言っても「ちょっと・・・」となってしまう方が一定数いるような気がしています。4と5なども壁としてはありますが、今の仕事で関わる範囲だと、2の人が3になることがデータ分析の業界全体にとってメリットが大きいことかなと思っています。

もちろん、データ分析に携わる人がみんなLinuxなどを扱える必要があるかは微妙なところですが、課題意識としてここを越えやすくする何かが必要だなぁと考えていました。そのタイミングで、縁ががありまして、まさにドンピシャな本の監訳に関わらせていただくことができました。

Data Science at the Command Line

Data Science at the Command Line http://datascienceatthecommandline.com/

本書は著者のJeroen Janssensさんがブログで書いた7 command-line tools for data scienceという大反響となったエントリが基になり、ものすごく大幅に加筆されたものとなります。

実際に発売されているのはこっち

コマンドラインではじめるデータサイエンス ―分析プロセスを自在に進めるテクニック

コマンドラインではじめるデータサイエンス ―分析プロセスを自在に進めるテクニック

本書のポイントとしては、データサイエンスを行うプロセスをOSEMN(awesomeと読むらしいです)と定義して、それぞれのプロセスをコマンドラインで行おう、というものになります。curlなどでAPIからデータを取得して、JSONの結果をjqでパースして...のようにデータの取得、加工にもかなり重きをおいているのがポイントかと思います。また、VMが配布されており、本書で扱っている作業は全て再現できるのも、WindowsユーザーでLinuxに二の足を踏んでいる方にとってはとっつきやすいのではないかな、と思っています。

すでに上述の分析環境で3以上は楽勝です、という方には物足りない内容かもしれませんが、私自身も本書の監訳を通じてこれまで知らなかったけど便利そうなコマンドを知ることができました。

あ、そうそう、監訳に参加したメンバーにて、いざ使うにあたって躓きポイントになりそうな日本語に関してや、弊社でよくある分析パターンなどを書きおろしています。

編集後記

発売の前後のタイミングがちょっとバタバタしており、非常にタイミングが悪いのですが、マーケティングに関する企業に勤めているので一度やってみたかったコンテンツマーケティングってやつです。こんなマニアックなブログの記事を見る人なら関連性は多少なりともあるでしょう。みなさん書店で手にとたり、Amazonでポチったりしてみてくださいね。

反省点など

  • キャッチーなタイトルをつけられなかった(難しい)
  • 記事は30分以内に書くと決めたが45分くらいかかった(記事を書くのはそう簡単ではない)
  • 内容が薄っぺら過ぎる(ささっと書くので深掘り感が足りない)
  • うまいこと商品の紹介に繋がらなかった(文章力の問題)
  • この記事に分析っぽい書籍のレコメンドとかしたらどうなるのだろうとか漠然と思った

まあなんでもやってみないと分からないですし、簡単な話はないですね、という。