ビッグデータの活用が広がりを見せているが、システム開発に携わっている普通のエンジニアにとって、データ分析はそれほど馴染みのあるものではない。ましてや分析自体を自身ですることは、データ分析チームに配属されない限り関係がないことだと思っている人も多いだろう。
しかし神田氏は、「これからのシステムエンジニアにとって、データ分析をし、その結果を見ることができなければ、リスクになると考えた方が良い」と言い切る。なぜ、そう言えるのだろうか。
システム開発エンジニアにとってデータ分析スキルは必要か
神田氏はアドテク本部に所属し、スマートフォン向けのアドテク「AMoAd(アモアド)」のシステムを開発していることから、自身のことを「いわゆる普通のエンジニアだ」と言う。
そんな神田氏がなぜ、データ分析に興味を持ったのか。そのきっかけは「現状把握に時間がどれだけかかっているのか」という単純な疑問からだと語る。
システム運用をしていると、エンジニアとして把握しておかなければならないことがいくつかある。日別・週別のアクティブユーザー数や1日におけるユーザーの平均広告接触回数などはその一例だろう。ただこのような定期的な情報であれば、集計や分析のフローが整理されているので、時間をかけずに結果を出すことができる。
しかし「ユーザーの平均広告接触回数をOS別に知りたいというような、少しアドホックな条件を加えて分析しようとすると、ものによっては1週間以上かかることもあった」と神田氏は明かす。
このようにちょっとした疑問を解決するのにでも時間がかかることの弊害の第一は、ちょっとした疑問が生じても調査しなくなることだ。つまり「本当に困ることが発生するまで、調査をしなくなる」というわけだ。そういう習慣が身についてしまうと、「根拠のない思い込みによる誤った判断」や「古い調査結果に基づく誤った判断」が行われてしまう。
第二の弊害は、データを見るには特異なスキルが必要だと思ってしまうことである。「人は時間がかかる=誰もができない特異なスキルが必要と思いがち。データの分析や抽出はやり方さえ分かれば、エンジニアならだれでもできること。しかし実際にやったことのない人は先のように思いがちなので、一部の人にしかできないタスクだと思ってしまう。これによりデータ抽出・分析業務の属人化が起こってしまう」と警鐘を鳴らす。
ではなぜ、時間がかかってしまうのか。神田氏は、仮説検証、ETL(Extract/Transform/Load)、データ抽出、分析のどの工程にどれだけ時間がかかるのか、自身のチームで調べてみたと言う。分析対象としたのはアプリケーションサーバのログデータ。「一か月分のデータから抽出しようとしたところ、ETLの情報を流すだけでも何週間もかかってしまった」と神田氏は続ける。「どのデータをどのくらい分析するか、分析対象のデータサイズによって分析時間は大きく変わる」ことが分かったのだ。
理想的には誰でも、気軽にデータ抽出・データ分析ができるような仕組みを実現したい。ではその理想の仕組みを作るのには何が必要なのか。「それは大きく3つある」と神田氏は指摘する。
第一はデータへのアクセスが容易であること。もちろんこれはセキュリティ的な観点を考慮した上での話だが、「広い範囲のデータにアクセスできた方が、開発に関わっている人たちも新しい知見を得られ、改善につながるので良い」と神田氏は説明する。
第二は高い応答性。「これは非常に重要」と神田氏。「理想的には5分以内に返ってくるように設計したい」。
そして第三が手順の再現性である。つまり誰が分析をやっても同じデータが得られるような再現性を担保することだというのである。
では実際にどのようなことを行ったのか。まず「データ分析の専用ログを出力するようにした」と神田氏。これまではいろいろな場所にさまざまなフォーマットのログがあったが、それを分析するのではなく分析用の専用ログを作ったというのである。これにより「データサイズも抑えられた」という。
次に行ったのはデータ分析基盤の構築。「計算エンジンはBigQueryとSparkを採用した」と神田氏。BigQueryはクラウド、Sparkはオンプレミスで運用。ストレージはGoogle Cloud Storage、UIはApache ZeppelinとJupyterを採用。「Apache ZeppelinとJupyterの両方を入れているのは、エンジニアの好みがあるため。双方のニーズに応えることで、データ分析の間口を拡げられると考えた」とその理由を明かす。