エンジニアHubPowered by エン転職

若手Webエンジニアのための情報メディア

データサイエンティストの定義は?必要スキルは?現役データエンジニア/アナリストと考えた結論

需要が高まるデータサイエンティストというロールですが、業務の定義や、必要スキルは一体どのようなものでしょうか。3名のデータエンジニア/アナリストに実践から得た答えを聞きました。

「データサイエンティスト」という肩書を耳にすることが増えています。 データの蓄積はとどまるところを知らず、さらにビジネスにおけるデータの重要度が増し続ける現在、同職が同じく重要になっていることは想像に難くないでしょう。

反面、データサイエンティストが現場で何をしているかは、なかなかイメージできません。果たして、現場のデータサイエンティスト、何を読み解き、そこから何を生み出しているのでしょうか。

今回はWeb系の企業に勤める3名の若手データエンジニア・データアナリストに集まってもらい、データサイエンティスト、データを取り扱うエンジニアが現場でどのような仕事をしているか、どんな職業なのか、どのようにして事業に貢献し価値を生み出しているのか。そしてデータサイエンスのためのスキルセットをいかにして獲得するか、などデータサイエンティストを志す方が気になる部分を語っていただきました。

LINE株式会社 LINE Data Labs
データアナリスト 丸尾大貴(写真左)
東京大学大学院情報理工学系研究科電子情報学専攻修了。NTTデータを経て、2016年10月、LINEに入社。現在は、データ分析技術を使って、LINEの各種サービスにおける意志決定の改善に携わっている。
クックパッド株式会社 研究開発部 機械学習グループ
データエンジニア 染谷悠一郎(写真中)
東京工業大学大学院で情報工学を学び、2016年4月、クックパッドに入社。同年7月に発足した研究開発部に配属され、機械学習基盤の効率化に加え、研究成果をプロダクトに実装する業務にも従事。
株式会社Gunosy 開発本部データ分析部
データエンジニア 米田 武(写真右)
大阪大学院理学研究科数学専攻を修了し、2017年4月、Gunosyにロジックエンジニアとして入社。「グノシー」や「ニュースパス」に用いられるニュース推薦アルゴリズムの開発・実装を担当。

データエンジニアとデータアナリストの違い

——いわゆる「データサイエンティスト」と呼ばれることが多いとうかがっています。ますはじめに、どんな業務を担当されているかを教えてください。

米田 僕はGunosyのロジックチームに在籍し、推薦アルゴリズムの改善に携わっています。データも扱えば、推薦システムのバックエンドなどサーバエンジニアがやるような仕事にも取り組みますが、経営者層や事業部トップの意思決定に関わるようなデータを集めたり、分析したりする業務には関わっていません。

ロジックチームは組織横断的な職種ですが、データ分析やレポーティングは、GunosyやLUCRA(女性向けトレンド情報提供アプリ)など、それぞれのプロダクト専属のアナリストが担当しています。

染谷 だとするとロジックチームは実装を担当し、プロダクトを改善する際の根拠となるデータは、アナリストの分析レポートがもとになるわけですか?

米田 ABテストの集計などでアナリストにサポートしてもらうことはありますが、基本的にはロジックチームは独立して動いていて、推薦アルゴリズムの改善の根拠となるデータもチーム内で収集・分析しています。僕たちのチームが意思決定をサポートするために動くことはほとんどないので、アナリストとは全く違う分野の仕事と言っていいかもしれません。

染谷 うちも同じだな。僕が所属している研究開発部の機械学習グループも、アプリケーションへの機械学習の実装や、研究開発部で行われる実験を効率化するための仕組みづくりがメインの業務です。分析は各事業部が必要に応じて行なっています。

例えば僕のチームの取り組みの中に、料理写真を分類するため機械学習のモデルの精度を高めたり、分類できる料理の種類を増やすという課題があります。しかし、モデルの精度を高めるという仕事がサービス開発全体が追いかけているKPIにどれだけ貢献しているか、判然としないという感覚があるのは確かです。ただ僕自身は、ユーザーに「こういうサービスや機能を届けたい」というアイデアと実現の間を埋める手段として、機械学習を活用しているのだと理解して取り組んでいます。

——なるほど。お二人の場合、データ分析よりも「分析基盤を実装する」という業務が中心になっているのですね。丸尾さんは「データアナリスト」とのことで、分析そのものを中心に担当されているのでしょうか。

丸尾 私はABテストを設計したり、経営判断のための指標数字を考えたりしています。統計学や機械学習という手法を使って、意志決定を支えるコンサルティングをしている、というのが実態に近いでしょうか。

日々、数字そのものを見てJupyter Notebookと向き合っている時間が長いので、推薦アルゴリズムの改善といった、もの作りは、自分の業務とはかなり異なる印象があります。

分析と実装。データサイエンティストに求められる要件

——ここまでデータエンジニア、データアナリストのお仕事の内容をうかがってきました。それでは「データサイエンティスト」の定義はどう考えられていますか?

丸尾 データサイエンティストは2種類あると考えています。1つが機械学習エンジニアで、サービスに機械学習を用いた機能を実装するのが役割です。もう1つがデータアナリスト、意思決定の精度を上げるためのレポーティングを受け持ちます。

データサイエンティストという言葉そのものは2010年ごろから言われ始めましたが、その頃は今で言うデータアナリストとデータエンジニアが一緒くたになっていたと思います。今ではデータサイエンティストとエンジニアは違う、と考えるエンジニアが多いと感じます。

言葉が流行りだした当時のイメージが未だに残り、「データサイエンティスト」としてひとまとめにされている印象はありますね。

染谷 僕自身がデータエンジニアなので、データエンジニアについて言うと、データを利用したアプリケーションを開発するエンジニアがデータエンジニア。機能的には機械学習エンジニアや検索エンジニアなどが含まれていると認識しています。

米田 僕の定義もデータアナリストの使命は統計学・機械学習を駆使してデータを活用し事業貢献することだと思います。それに対してデータエンジニアは、機械学習・統計学のみならず、基本的なWebエンジニアリングの知識やコンピュータサイエンスの知識を用いサービスにデータを活用した機能を導入することが使命だと思っています。

丸尾 小さいサイズの組織では分析と実装を同じ職責にしているところもあるようですが、まるでスーパーマンですよね。実装と分析では求められるスキルも違うから、専門のロールがあったほうが個々の能力を上手く生かせるように思います。

染谷 見るべき数値や、有効な差を見いだせるサンプルサイズといった部分は、本来はアナリストの方に任せるべきでしょう。とはいえある程度、組織が大きくないと分離しにくいロールだと思います。

米田 一時期僕は、ロジック作りとA/Bテストの設計を自分ひとりでやってましたけど、分析にはかなり手間取りましたね。僕はものづくりが好きなので、テストの集計や、「統計的に有意な差があるか」を見ていくことに対しては、あまりモチベーションが湧かないです。

データアナリストもデータエンジニアも得意とする領域が違うので、本来は分業すべきなのは確かだと思います。

染谷 データエンジニアの立場からすると、データアナリストには、不確定な状態下でも根拠を持って方向性を打ち出してくれる存在だと思っています。

米田 それは分かります。

数学の素養が重要。技術は仕事で身につけられる!

——みなさん、どのようにデータエンジニアやアナリストのスキルを身につけていったのですか?

丸尾 今の仕事を選んだ経緯を話すと、学生時代は物理専攻で、機械学習を学んでいたわけではないんです。修論で量子情報の実験のお手伝いと理論をやっていたときも、実験やシミュレーションの結果を分析する瞬間が一番楽しかったので、データ分析を仕事にしようと思ったんです。

物理と機械学習はどちらも数学を使いますし、データ分析も研究も問題定義、仮説立案、仮説立証、のプロセスはよく似ているので障壁も大きくなかった。流行りもの好きということもあって、機械学習を用いたデータ分析の仕事をやろうと考えてSIerの研究部門に新卒で就職するつもりでした。しかし別の部署に配属されてしまい、データサイエンスの仕事ができる環境を求めて半年で退職しています。

米田 大学・大学院では純粋数学を専攻していて、卒業後も何かしら数学に関わる仕事をしたいと考えていました。そこで個人的に機械学習、とくに理論部分を学んでいきました。独学を進めるうちに応用数学にのめり込んで、Twitter(@mathetake)やブログで発信するようになりました。

その発信の結果として、卒業直前にGunosyと縁があり入社したのですが、元々情報系ではなかったのでエンジニアリングがそこまでできなかったんです。

最初の頃は、とにかく分からなかったことをその日のうちにメモして、土日のうちに全部勉強してというのを繰り返していましたね。今でも分からないことがあったら、同じようにして調べて学ぶ。知識がついてくると、優秀なエンジニアとも話がかみ合うようになってきて自信もついてくるので、当時はそれが学習のモチベーションになっていましたね。

染谷 自分はコンピュータサイエンスを学んでいたものの、学部の4年生の時に研究室に入ってみると、周りのしゃべってることが何も分からない。昼食の時に聞こえた単語を拾ってあとで調べていたのをいま思い出しました(笑)。大学時代にCourseraのMachine Learningコースは一通り終えましたが、機械学習を専攻していたわけではなく、開発基盤やDevOpsに興味を持っていたくらいです。

——学生時代に機械学習を専攻されていたわけではないんですね。

米田 確かに、3人とも機械学習は学んでいないですね。でもデータエンジニアやアナリスト、サイエンティストを目指すなら、数式を読めるといった素養がないと難しいかなという気はします。僕の同僚も、全員が理系の修士以上で、数学的素養をある程度は持っています。

染谷 僕も業務でそこまで複雑なモデルを組むわけじゃないですけど、データサイエンスの全体図を把握する上では、論文をシュッと読めるっていうのは結構重要かもしれません。

米田 確かに。実現可能性を見極める力は、日常的に論文を読んでいないと身につきませんからね。

現役データエンジニア/データアナリストのオススメ論文

【丸尾さん推薦】Inferring causal impact using Bayesian structural time-series models

ベイズ統計学に基づいてキャンペーンを打たなかった時どのようにKPIが推移していたかを推測し、実際の時系列との差分を計算することによって、キャンペーン効果を測定する手法を提案している。このような考え方(反実仮想/counterfactual)をベイズ統計学に基づいて実現するアイデアと、分析での使いやすさが非常に優れた論文だと思います。(丸尾)

【染谷さん推薦】Exploring the Limits of Weakly Supervised Pretraining

Instagramのハッシュタグを利用した大規模な弱教師あり学習(ノイズが含まれていたり、教師あり学習)を行うことで、転移学習において優れた性能を持つモデルが学習出来ることを示しました。画像認識に用いるデータセットについて、ラベルの質を敢えて犠牲にしてその量を増やすことでより有用なデータセットを構築できるという可能性を示したという点で優れた論文だと思います。(染谷)

【米田さん推薦】DIZK: A Distributed Zero Knowledge Proof System

データサイエンスというよりはどちらかというと暗号学の論文です。 信頼できない計算リソースに対して計算のアウトソースをした際に、その結果の正当性を検証するためのフレームワークとして用いることが出来るゼロ知識証明(または検証可能計算)についての論文。この論文で初めてその計算リソースの提供サイドの処理の並列化の仕組みが提案されただけでなく、その機械学習モデルの応用に関する実験もある。(米田)

丸尾 数学はできてもエンジニアリング経験が乏しい、という人にはどうアドバイスしますか?

染谷 どういうロールにつきたいかで変わると思いますが、仕事で覚えるのが一番じゃないかと思います。

丸尾 アナリストで入って、少しずつエンジニアリングのタスクを振ってもらうとか?今ならインターンにいくのもいいでしょうし。

染谷 そうですね。インターンを願い出れば受け止めてくれる会社は多いと思います。仕事として取り組んでみると何を学ぶべきかはっきり分かってきますから。僕もアルバイトを始めてから、エンジニアで学ぶべきことはこういうことなんだなあ、とやっと分かりました。

米田 仕事で学ぶのが一番早いです。学生が1人で「どうすればいいか分からない」と悩むくらいなら、少し虚勢を張ってでも良い環境に飛び込むほうが絶対いい。もちろんどんな会社でも、優秀なエンジニアが来れば嬉しいでしょうけど、めちゃめちゃプログラミングができる人じゃなきゃダメっていうことはないですからね。分かっている人がいる環境に身を置くのは有効な手段だと思います。

データエンジニア/アナリストが考える必要なスキルセット

データエンジニア/アナリストが考える2018年現在、データエンジニアに必要なスキルセット一覧

エンジニアリング
 ・プログラミング能力(Python、C++ or Golang など)
 ・自社で利用しているWebフレームワークの知識
 ・AWSなどクラウドサービスの知識
 ・Docker

サーバ・データベース
 ・サーバ基礎知識
 ・ネットワーク基礎知識
 ・高速かつ保守性の高いhttpsサーバ構築
 ・ビッグデータを扱うソフトウェア技術(hadoop、Spark、Hive、Presto)

機械学習
 ・統計学、数学基礎知識(大学学部レベルの”微分積分”・"線形代数"・"確率統計"を使いこなすレベル)
 ・論文やIT技術のニュースを理解できる英語力
 ・機械学習知識
 ・特定のリサーチ領域(ex.画像検索、言語処理)の全体的な理解(重要な論文を読む。最新情報へのアップデート)

——良い環境に飛び込め、ということですが、具体的にはどのようなスキルセットを身につけていけばいいんでしょうか?

丸尾 データサイエンティストについて言えば博士号を持っていたほうが有利だと思います。スキル的にはSQLやPythonもしくはRで簡単なプログラミングができること。統計ライブラリや機械学習ライブラリが使えることなどもありますが、一番大事なのはデータに基づいた意思決定を行う会社が最後に生き残る、という信念が持てることだと思います。あとは、分析目的の定義から、精度の測定、結果の解釈までをきちんとフォローできることも重要ですね。

今だと受託分析のニーズは高いですし、勉強できる環境も整ってきていますから、統計学と機械学習の知識をベースに、コンサルティング力があったら強いでしょう。

染谷 データエンジニアに関して言うと、機械学習を利用したPoC(概念実証)やサービス化へのニーズが高い現状では、モデルの実装から本番導入までを一気に行える人材が求められています。ですから、Webアプリケーションのデプロイに関する最低限のスキルと、たとえば画像認識など特定領域での全体的な理解が必須でしょうね。

いずれにしても、有益なスキルはこれから大きく入れ替わっていくと思うので、よりレイヤが低く汎用性のある知見を重点的に吸収していくか、知識と経験の入れ替えを続けていく覚悟を持って新しいモノを次々と取り入れていくといった選択が必要になってくると思います。

米田 Web系の企業でデータエンジニアとして活躍するための要件としては、基本的なWebエンジニアリングの基礎やPython、C++、Golangなどでのプログラミング経験、ビッグデータを扱うためのOSSの扱いに慣れていることなどに加え、統計学、数学、機械学習の知識、論文・学術書が読める程度の英語力、数式をプログラムに落とせる能力などが必要だと思ってます。

しかし必要とされるスキルセットはこれからもどんどん変わっていくでしょう。Gunosyの創業当初は自然言語処理を活かしてユーザ数や売上げを伸ばしてきたのですが、当時使われていた技術の中身を振り返ってみると、今であれば大学3年生で学ぶような内容です。今後、機械学習の技術がさらに進歩し普及が進めば、機械学習だけで食べていくのは難しくなり、仮説を検証する力やテクノロジーを優れたサービスに落とす力が求められるようになる。そういう意味では、必要とされるスキルセットはこれからもどんどん変わっていくでしょう。

あくまで僕の推測ですが、「情報をスコアリングして並べ替え、最適な情報のみを抽出してユーザーに届ける」推薦ロジックや検索システムの仕組み自体は、10年、20年経ってもなくならないでしょう。それをちゃんと作れる人になるためには、スコアリングでソートするという基本概念をきちんと実装できるスキルと、スコアリングのロジックを作れるスキル、の両方が欠かせません。一方でこれらができるエンジニアは多くはないはずですので、今後もクリティカルなスキルとして生き残れるのではないでしょうか。

データアナリスト・データエンジニアにとっての「事業貢献」

——どんなときに「やりがい」を感じたり、事業に貢献していると感じられますか?

米田 僕は推薦ロジックや情報検索の領域に携わっているので、クリック率等のKPIが上がれば、それと連動して会社の利益に貢献しているという実感が高まります。

丸尾 担当している業務領域の関係上、プロダクト改善を目的とした分析はメインでは行なっていないため「自分が携わった分析のおかげでKPIが改善した」という経験はまだ少ないですが、日々、経営層の意思決定に至る時間を削っているという面では価値貢献ができていると感じています。

染谷 僕は自分が作った機能やサービスが使われて、ユーザーからフィードバックがあるとうれしいですし、貢献しているという実感があります。

米田 会社に直接的に貢献する以外にも、たとえば対外的に発表できるような技術や仕組みを編み出したり、エンジニアとしてのプレゼンスを上げる仕事ができたかっていうのも、仕事の満足度にかなり影響があるように感じますがどうでしょう?

染谷 そうですね。私の場合は、技術の進歩とビジネス化への期待がせめぎ合っている状況です。その流れに乗って対応しているうち、どんどん自分の中にどんどんスキルが貯まっていく実感があるのも、ひとつのやりがいと言えるかもしれません。

米田 論文を読みながら勉強して、実装して、というのを繰り返しながら、会社にも社会にも貢献していると思えるのは幸せですよね。自分の市場価値も上がりますし。

丸尾 ええ。私自身、数学や分析のテクニックがすごく好きですし、社会科学や医療科学統計など、異なる分野の分析手法を勉強して、学んだことが実際の分析に役立っていると感じる瞬間がとても楽しいです。自分にしかできない仕事をやっている感覚といえばいいでしょうか。

経営層やプランナーが「俺はこう思ってるけど、でもはっきりとは分からない」という状況に直面した時に、「おそらくこっちのほうが確度が高いですよ」という形で、意思決定をサポートすることはありふれていますよね。こうした役割は、きっとなくならないと思います。

米田 スーパーな人工知能ができない限りそうですね。そうなると、ある種の人間力のようなサイエンスと別の領域の能力が一層問われるのかもしれないですね。僕はずっと家でプログラミングしてプロダクトを作っていても構わないタイプなのですが、それが嫌だという人もいます。どちらに進むかはその人次第でしょう。

——三者三様なんですね。今後の役割、という部分に触れていただきましたが、最後にご自分の今後の目標を教えてください。

染谷 僕もまだ本当に今のロールで仕事を始めて3年も経っていないんですけど、今は何でもやってみると面白いと実感しているところです。とはいえ、環境はどんどん変わっていくので、この先、3年後、5年後も機械学習をバリバリやっているかっていう強いイメージはないんですよ。今手にしている知見をベースに、いろんなことに手を広げてやっていくのかなっていう気がしています。

米田 僕は、「一生研究で飯を食ってく」という覚悟を決めている人たちと同じ土俵で戦えるとは思っていないので、機械学習以外の領域も念頭に置いています。優れた研究の成果は完全にオープンで、だれでも論文で読めるような世界になっていますから、研究の分野はそういう天才たちに任せて、自分はそれを活用しながら別の領域を開拓してみたいですね。

丸尾 私はこれからも流行に乗り続けていくつもりで仕事に取り組んでいます。新しいことに挑戦し続けていないと楽しくないからです。ただ、データを使って経営層の意思決定を支えることにやりがいを感じているので、今後もそれをやり続けている可能性は高いと思います。

先に環境を変えた方がいい、という話が出ましたが。私自身、新卒入社した会社は希望通りの配属が叶わず、辛い思いをしました。「自分で頑張って楽しいことを探そう」と思い立って半年で退職し、今はデータサイエンスの仕事に就き、日々仕事を楽しんでいます。行動して本当に良かったと思うばかりです。

米田 3人とも違う点はあるけれど、データを使った仕事が楽しいという点については同じじゃないですか?

染谷 その点は同感です。

丸尾 日常でも統計データを見るのが本当に好きで、年間の交通事故の件数とか、つい気になって分析してしまう。今のような仕事をしていなくても一生データ見てるんじゃないかと思います(笑)

関連記事