CodeZine(コードジン)

特集ページ一覧

【デブサミ秋2015】S5セッションレポート
これからの開発者に必須なデータ分析スキル ~ サイバーエージェント流分析環境の構築からチームへの普及まで

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/11/26 14:00

 システム開発に携わっているいわゆる「普通」のエンジニアにとって、データ分析の仕組みはつくっても、それを活用することはあまり考えていないかもしれない。しかし、データ分析の手法は、いわゆる普通のシステム開発にも役立つ。つまりデータ分析の手法がシステム改善やシステム開発のライフサイクルに使えるという。そんなことを考えたのが、サイバーエージェントのシステムエンジニアとして、国内アドネットワーク技術責任者を兼任している神田勝規氏である。どのようにデータ分析がシステム開発に役立つというのか。またデータ分析をシステム開発のエンジニアに活用してもらうために、どんな仕組みを作ったのか。そしてその勉強手法とは。さらに活用したことで得られる効果など、「これからのエンジニアにとって、データ分析のスキルが無いことはリスクなる」という神田氏。その熱い思いを吐露した。

目次
株式会社サイバーエージェント システムエンジニア 兼 国内アドネットワーク技術責任者 神田勝規氏
株式会社サイバーエージェント システムエンジニア 兼 国内アドネットワーク技術責任者 神田勝規氏

 ビッグデータの活用が広がりを見せているが、システム開発に携わっている普通のエンジニアにとって、データ分析はそれほど馴染みのあるものではない。ましてや分析自体を自身ですることは、データ分析チームに配属されない限り関係がないことだと思っている人も多いだろう。

 しかし神田氏は、「これからのシステムエンジニアにとって、データ分析をし、その結果を見ることができなければ、リスクになると考えた方が良い」と言い切る。なぜ、そう言えるのだろうか。

システム開発エンジニアにとってデータ分析スキルは必要か

 神田氏はアドテク本部に所属し、スマートフォン向けのアドテク「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の両方を入れているのは、エンジニアの好みがあるため。双方のニーズに応えることで、データ分析の間口を拡げられると考えた」とその理由を明かす。

データ分析では対象のデータサイズによって結果が出るまでの時間が変わる
データ分析では対象のデータサイズによって結果が出るまでの時間が変わる

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

バックナンバー

連載:【デブサミ秋2015】セッションレポート
All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5