どうも、データと名の付くやつらはみんな友達。
Hirosato Gamoです。
誰だこいつと思ったら下記の自己紹介をどうぞ。
自己紹介 - AIソリューションアーキテクトのおしゃべり
ブログを始める以前からこれは絶対書きたいと思っていた記事です。
「〇〇社、デジタル人材を拡大!」なんてニュースが飛び交うようになって久しいですが、
みなさんこんな募集要項は見たことないでしょうか*1。
データサイエンティスト募集要項
<応募資格/応募条件>
■要件
(1)経験:
・データサイエンス分野におけるビジネス価値を創造した経験
・マーケティング実務の知見
・関係各所との調整能力、技術を分かりやすく伝えるプレゼンスキル
・R,Python,Juliaを用いた機械学習、統計解析の幅広い知見
・ベイズモデリングに関する深い知見
・パブリッククラウドでのITシステムの開発経験
・DWH、ETLツールを用いたデータ加工・集計の技術
・IoTなどストリーミングデータの処理
・Sparkによる分散処理の開発
・SQLを用いたデータ抽出、RDBに関する知見
・BIツールを用いたダッシュボード作成
・機械学習コンペティションでの入賞経験
・MLOpsに関する知見および実際の機械学習システムの運用経験
・分散機械学習の実装
(2)資格:
・統計検定一級
・Python技術者認定
・IoT技術者認定
・AWSもしくはAzureの認定資格
(3)語学:
TOEIC900点以上もしくはビジネスレベルの英語力
一体お前らは何の職種を作ろうとしてるんだ。
データ救世主か。Data Savor的な新職種か。
隙が無い布陣。
史上最強打線。*2
もちろん、私の創作なのでここまで酷い募集要綱は無い*3と思いますが、
データサイエンティストに何をしてもらいたいのか、それは果たしてデータサイエンティストがやる仕事なのか、この辺を整理できていない求人募集は未だ散見されます。
このまま仮に採用された人がいたとしても、「データサイエンティストとして来たのに、毎日ETLツールのお世話と周辺部署との調整ばっかやってる」みたいに半年で転職されて後任がいなくなり、属人化していたシステムが火を噴く訳です。これはお互いにとって非常に不幸な話だと思います。
もちろんそれを既定できていない企業側にも問題はあるんですが、人事って技術と違ってリファレンスがあまり無いので若干仕方ない部分もあり*4、実際現場でも最近まで職種と仕事内容に食い違いが生まれるケースも多いようです。
そして、求人情報がカオス状態が続いてしまうと、これからデータ活用人材が何を学んでいったら良いか分からなくなってしまう。
ということで、データと名の付く仕事を雑に振られまくってここまで来た私が、何となく今はこういうマップなんじゃね?というものを纏めてみました。
自社でデジタル人材の採用を強化しろと丸投げをされたりして日々疲弊している方、或いは自分がデジタル人材になったると思う方に是非とも参考にしていただければと思います。*5
書いてみたらやたら長文になりましたが、個人ブログのため校正は甘く私見を多く含みます。 参考程度にお楽しみください!
データ活用人材を定義
まずそもそもデータ活用市場ってなんやねんという突っ込みから入るかと思います。こちら、私が勝手に設定している言葉なので当然だと思います。
データ活用を、本ブログでは下記のように定義しましょう。
「業務オペレーションのためにデータを用いるのではなく、データを可視化・統計解析・機械学習のために利用する。」*6
ざっくりしてて怒られそうですが、ニュアンス伝わるでしょうか。
例えばECサイトにおいて、顧客データはまずオペレーション(画面上に顧客情報を表示したり、顧客情報から決算情報を紐づけて決算したり)に使用されます。一方で、業務を回すのとは関係なくマーケティング等で顧客の購買行動を追う目的で履歴を分析するためにデータを使用することもあります。
前者はビジネス・システムを回すためにデータ使用が不可欠ですが、後者のデータの使い方は業務上は必須ではない。このように、データを使う際は「オペレーション」と「活用」は明確に分けられています。実際、多くの企業では触るシステムも基本的には分けられていたりします。*7
この「活用」シーンにおけるシステムはデータ基盤と呼ばれています。
ほんで、データ基盤には下記のような人材が関わるんですね。
- データ基盤を使う人(データサイエンティスト、データアナリスト、リサーチャー)
- データ基盤を開発・運用する人(データエンジニア)
- データ基盤のデータから生まれた機械学習システムを開発・運用する人(機械学習エンジニア)
これらの人材を本ブログではデータ活用人材と定義し、筆者がデータ活用の現場に入り、時に苦しみ、泣き濡れ、果てしない闇の向こうに手を伸ばそうとした経験から、最近だとどんな役者が現れ、どんな技術を求められているか詳しく扱っていこうと思います。
ちなみに、単純にデータ基盤に関わる人材を知りたい場合にはデータ総研さんの出版した下記の書籍を参照いただくことをお勧めします。キャリア育成を主眼に置いたものではないですが、本ブログで扱わない細かい役割の人材まで記載されています。育成や採用の前に自社に必要な組織体制や全体感を把握したい場合に非常に有用だと思います。
データ活用人材の概要
前置きが長くなりましたが、
早速データ活用界隈にはどんな人材がいるのか
まず簡単に表で見てみましょう。
# | 役割 | 役割・概要 |
---|---|---|
1 | データアナリスト |
・データに基づいてビジネスに紐づく仮説立案を進める。 エンジニアというよりはビジネス課題をデータ分析の文脈に落とし込む専門家の意味合いが強く、スキルセット的にも高度な機械学習技術より、BIによる可視化やプレゼンなどビジネスサイドへのコミュニケーションにも重きが置かれる。 |
2 | データサイエンティスト |
・ビジネスサイドが設定した仮説の統計的な検証 ・予測分析のための精度の良い機械学習モデルの構築 よくこれらに加えビジネス力、エンジニアリング力を兼ね備えたスーパーマン的な人がモデルケースとして語られることが多かったが、最近の市場では分業化が進んでいる印象。ただ、ビジネスサイドやエンジニアサイドと会話をすることが多いので基本的な知識は求められる。 |
3 | データエンジニア |
・データ基盤の開発・運用 ・ビジネスサイドから要求されたデータの抽出 (データ抽出専門の人材が用意されることもあるが兼任となるケースも多い) |
4 | 機械学習エンジニア |
・機械学習システムの開発・運用 ・MLモデルのライフサイクル管理 ・機械学習モデルの精度向上 (精度向上はデータサイエンティストが実施することも) |
5 | リサーチャー |
・高度もしくは独自の機械学習・統計解析アルゴリズムの研究開発 基本的には自社のサービスやプロダクトへ組み込むための活動になり、新しい職種というよりは従来の研究・開発職となる。 |
彼らがデータ基盤上のどこにいるかというと、
こんな感じです。*8
もちろんこれは例に過ぎず、現場によってはBIやRDBの専門家が入ってアナリストを支援するケースなど分業化することはあると思います。初めからすべてのメンバを揃えられるわけではないので、足りてない場合は育成も含めて進めていくことがほとんどだと思います。
下記で各人材の細かいスキルやちょっとした小話を書いていきます。
データアナリストのスキルセットと小話
実は結構重要な立ち位置と思っているのがこのポジションです。
データ分析においては課題設定がかなり肝と言われていて、データサイエンティストの中には統計や機械学習の手法はバッチリでも課題づくりは難しいと思ってる方は少なくありません。実際、ビジネス課題と機械学習の目標設定が誤っていて「気づいたら違う分析やってるぞこれ…」みたいなことは結構あるんですね。
このあたりの苦難は下記の書籍結構扱われてたりもします。気になる方はぜひ。
入試問題を作るのが入試を解くのとは別のスキルであるように、本来はデータサイエンティストとアナリストは違ったスキルになります。*9ビジネス寄りにバリバリ活躍していきたい方や、キラキラなカッコいいイメージは実はこっちなのではと思う今日この頃。
実際求められるスキルも↓のような認識です。
- コンサル相当のビジネス課題整理力、データサイエンス課題への落とし込み
- データ活用の主要なユースケースに関する知見
- 解析結果をビジネスサイドへ分かりやすく伝達するプレゼン技術
- BIツールを使用したデータビジュアライゼーション力
- 得たいデータを抽出できるSQLクエリの作成知識
- 基礎的な統計解析・機械学習の知識(統計検定で言えば最低でも2級程度)
究極系はデータサイエンスに詳しくてSQLやBIくらいなら余裕で使えて簡単な統計解析ならRで出来ちゃうコンサルタント?と思うと、結構ハードルが高いですし、この手の役割はデータサイエンティストを巻き込んでマネジメントする立場にもなりそうなので、実はキャリア的にもブルーオーシャンになってくるのではと思います。
コンサルやSIerなど受託系の企業ではかなり重宝されるかと。
データサイエンティストのスキルセットと小話
最もセクシーな職業*10として一世を風靡し、この記事のきっかけにもなっているデータサイエンティスト。日本でも各所でデータサイエンティスト争奪戦なるものが始まり、彼らを雇うために給与体系の変更まで考える企業が出てきました。(本当に自社のビジネスに見合った給与を算出できているのかは不明ですが)
この高給神話は、元々はWeb業界のマーケティングやゲーム業界から始まったものだと私は思っています。というのも、この業界は推薦システムや広告のコンバージョン率、UIの変更による効果検証など、データの取り扱いが売上やサービス利用に直結してしまうんですね。となると優秀なデータサイエンティストを高給をはたいてでも獲得することで、結果的にもっと大きなリターンを得ようとするのは自然な発想なわけです。
結果、この業界での争奪戦が始まり「なんかデータサイエンティストに高給払うのがスタンダードらしいぞ」と、なぜか色んな業界で値上げ合戦が始まった…と。まあデータサイエンティストは業界を跨げるので、市場価格的には吊り上がるのは正しいとは思うのですが、データを素早く取得して活用できる業界でない限り、その高給をペイできる効果を得られずどう扱っていいのか分からない企業も多かったのでは…。現在もこのジレンマは残っています。なので、高年収での募集があったとしても、それが業界的に維持でき、企業的にもデータ基盤を抱えてバリバリ分析需要が高まっているような状況なのかはよく調査したほうがいいと思います。
例えば製造業においてデータ活用を推進するためにデータサイエンティストを雇ってみたものの、実際に使えるデータがわずかで、できることと言えば工場内の一部設備の故障検知くらい…となったら「よく考えたらうちの会社でこんな金出す必要ねーや」となる可能性も十分あるわけです。
そんなデータサイエンティスト、ここで語り切れるほどではないですがスキルセットはざっくり下記のような認識。
- 発展的な統計解析・機械学習に関する知識や実装経験(詳しくは別記事で)
- Python,Rなど解析用のプログラム言語およびライブラリを用いた実装力
- 各種解析手法の必要なデータ加工に関するTips
- データビジュアライゼーション力
- 基本的なITの知識
- 得たいデータを抽出できるSQLクエリの作成知識
- クラウドベンダのMLプラットフォームやmlflowはじめ実験管理ツールの使用
- ソースコード管理ツール(Gitなど)の知識
データサイエンティストについては
- 受託系か、自社データ分析か、プロダクト開発か
- Kaggler寄りか、アナリスト寄りか
- エンジニアリング能力、ビジネス知識はどこまで必要か
- 文系未経験からジョブチェンジは可能か
などなど、Twitter上で定期的に嵐を呼ぶトピックが満載なので、近いうちに本ブログでも扱いたいと思います。データサイエンティストに求められるスキルセットも、書けばキリがないので別記事で紹介したいと思います!こうご期待!
データエンジニアのスキルセットと小話
データサイエンティストに比べると知名度的には若干地味めながら、今後需要が高まりそう。というのも、日米問わず企業は現在データ基盤の整備を急ピッチで進めています。ビジネスのデジタル化が進む以上、この流れは大企業を中心に更に加速するでしょう。私が市場を見渡す限り、ここの知識を持つ人はデータサイエンティスト以上に供給が間に合っていない印象があります。データエンジニアブームなるものも無かったですしね。*11
元々オンプレでビッグデータを処理するのが主流だった時代から、Hadoopはじめ分散処理技術、fluentd,Kafka,Flink等のOSSベース*12のストリーミングデータ処理など、それぞれ1冊書籍が書けてしまうレベルの重い話題が多かったのですが、クラウドベースが主流になりサーバレスアーキテクチャやDockerの知識まで求められる始末。
結局、思いつくだけでもちょっとエグいレベルの広範な知識が必要になります。しかもデータ基盤のデータ連携元はRDBやNoSQLなど多様なデータソースとなることも多いです。IoTデータまで連携されることもありますね…。このような技術素養的に求められることも多い一方、ビジネスサイドへのデータ抽出を兼任するケースも多く、データエンジニアの組織は大体の企業でかなり多忙だなあという印象を受けます。
データエンジニアのスキルセットは(若干広くとると)こんな感じ。
- AWS、Azureはじめ主要クラウドのネットワーク・権限管理
- ETLツールを使った開発(informatica,Talend,DataFactoryなど)
- DWH製品(Redshift,Synapse,BigQuery,Snowflakeなど)の運用
- SQLの文法やデータモデルに関する知識を駆使した設計
- Sparkによる分散データ処理の開発
- BIによるダッシュボード作成・運用
- ストリーミングデータの処理やアプリケーションへの連携
- サーバレスアーキテクチャの各種サービス(Lambda,Functionsほか)を駆使したデータ処理
- データマネジメントツールの活用
- CI/CDツールを使用した日々のデプロイ・運用
- 機械学習・統計解析を使ったデータ分析の基本的な知識によるデータ利用方法の把握
ということで、沢山仕事があるデータエンジニアは当然1人では追い付かず、基本的には複数人のチームで構成されることになると思います*13。ビジネスサイドに売上貢献などの直接影響をもたらすわけではないので分かりやすい高給が出されるケースはあまり見ませんが、確実に需要が伸びていくので今後じわじわと市場価値も高騰していくのでは、と個人的には予想しています。独自技術が多いことから比較的、市場に人が多いレガシーな技術と微妙に合致しないので、若い人にとってもチャンスかも。
機械学習エンジニアのスキルセットと小話
さて、このポジション、定義が一人歩きしている人材だと思います。個人的には2つの派閥があると思っていて、1つはKagglerよろしく機械学習の精度向上を得意とし、機械学習の学習・推論コードをプロダクトレベルまで高めていくエンジニア。もう1つはいわゆる機械学習システムを構築するエンジニア。前者はソフト*14で後者はインフラと言ってもいいかもしれません。
前者はデータサイエンティストのスキルセットを別記事で纏める際に触れるとして、ここでは後者のインフラ系エンジニアに触れたいと思います。恐らく近いうちにMLOpsエンジニアとも呼称されるようになっていくのではないでしょうか。
機械学習システムについても詳しくは別記事で扱おうかと思いますが、基本的に下記の図のように学習環境と推論環境に大別されます。
学習環境ではデータを機械学習のアルゴリズムに食わせ、機械学習モデルを生成し、推論システムではデータのリクエストに対して推論結果を返します。例えば、画像に写っているのが犬なのか猫なのかを判定する機械学習モデルがあるとすると、推論システムではリクエストと共に画像を受け取り、それが犬か猫かを返します。一見、簡単そうなAPIシステムですが機械学習が絡むことによって面倒な部分が生じるんですね。
このように、学習および推論をスムーズに進行し、運用保守を回せるようになるために必要な人材が機械学習エンジニアなわけです。こちらもかつては機械学習が本番システムとして運用されるケース自体が市場に少なかったために注目されてこなかった役割ですが、パブリッククラウドベンダの各社が機械学習開発運用サービスを展開*15しているように、その需要は高まりつつあります。
機械学習エンジニアの主なスキルセットとしてはこんな感じ。
- Pythonの機械学習ライブラリの使用方法(scikit-learn,Pytorch,Tensorflowなど)
- 機械学習の実験管理、パイプライン管理、テスト方法の知識を駆使したMLOps
- Docker,Kubernetesなどコンテナ技術を使用したモデルデプロイ
- REST APIの基本的な知識を用いたエンドポイントの運用
- GPUの適切なコスト管理
- 分散機械学習の構築
- 機械学習運用サービスのSDKを使用したプラットフォーム開発
- CI/CDツールを使用した日々のデプロイ・運用
既にWebシステムのモダンな運用を経験している方であれば、さほど高度ではないように思えるものの、この領域はまだ世界的に試行錯誤の段階にあります。MLテストはじめ概念的にも学術的にも少々難しい知識を要求されるケースがあるので油断は禁物です。
リサーチャーのスキルセットと小話
リサーチャーについては、基本的にはデータサイエンティストと求められる知識等は似通っているかと思います。大きな違いとしては、データサイエンティストがビジネス貢献を目的にしている点に対し、リサーチャーは独自に機械学習アルゴリズムを開発したり研究することを目的にしています。単にライブラリが使えるだけでなく裏にある理論をより理解しておくことはデータサイエンティスト以上に求められます。もちろん技術動向の把握についても重要で、最新の論文をチェックしアルゴリズムから自らコードに落として実装できるような技術も必要になります。
また、R&Dの領域では類似技術を扱ってきた別の人材も多いです。例えばニューラルネットワークの発展で機械学習での画像解析が急速に発展しましたが、画像解析のリサーチャーは以前にも多数存在していました。こうした人材が現在は機械学習のリサーチャーとなっているケースもあるので、分野によってはレッドオーシャンな領域も多いことは注意が必要です。
今回扱わなかったデータ関連人材
データベースエンジニア
今回扱わなかった人材の中で、「これってデータ活用人材じゃないの?」と思われる代表的なものとして、データベースエンジニアがあります。例えばオンプレシステムにおいてはOracle DBやSQL ServerといったRDBを主として扱うエンジニアとでも言いましょうか。
RDBを扱ってきたエンジニアはSQLにもデータ構造にも慣れており、データ基盤を扱う上でもかなりの戦力になることは間違いありません。その点ではデータ活用人材の一種と捉えてもいいのですが、彼らの主たる業務はオペレーショナルなデータベースを扱うことであり、データ基盤で扱うDWHや分散処理などとは若干の違いがあります。データエンジニアとスキルセットに共通する部分もあるものの、基本的には目的が違うと見ていいと思います。
また、ビジネス側の要求に応じてデータを抽出する役割も担うデータエンジニアに対し、基本的にはデータベースエンジニアはビジネスサイドとやり取りするケースは少ない、といった組織体制的な違いもありますね。
データスチュワードなどのデータマネジメント系人材
実はデータ活用に関わる人材はこれらエンジニアだけではありません。データ基盤を運用するためには周辺システムとの連携や、データの使用許可、運用変更などが毎日のように発生します。またユーザが目的のデータにたどり着くための調整を担うデータスチュワードや、企業全体のデータ活用方針をデザインするアーキテクト、品質管理、セキュリティなどにも専門性が必要で、マネジメント系の人材も多岐に渡ります。技術的な役割ではないものもありますが、これらの人材も今後市場では求められるようになるはずですので、気になる方は再掲ですがデータ総研さんの書籍*16をチェックしてみましょう。
最後に
さあ、いかがだったでしょうか。読むの大変だったでしょう。私が一番後悔してます。*17
データ活用領域は今後の発展が見込まれるため、人材獲得競争が活発化します。エンジニアとしてキャリアに悩んでいたら、このあたりの技術を身につけてみてはいかがでしょうか。活躍の幅がぐっと広がるはずです。たのしいですよ。
とはいえ途中述べたように、1本のブログでは語り切れない部分も多いので、近いうちにデータサイエンティストの勉強方法など含め、記事にしていきたいと思います。
私の感覚的な部分も多いので、「実態はこうだよ」みたいな意見があれば是非ともご指摘いただければと思います。
それでは次の記事でお会いしましょう~。
*1:私の渾身の創作です。
*2:今の20代の人には分からないネタかと思います。すみません。
*3:断言はできませんが
*4:最近はキャリアの書籍も出版されてるみたいですが、まだ読めていないのでここでは触れません。
*5:一応データ活用人材はデジタル人材の中核を成す人たちだという認識
*6:独自の定義です。もしかしたら名前あるのかも知れませんが…
*7:まあ、本番システムのDBにベタベタ触ってクエリ投げてるケースもありますが…
*8:リサーチャーもデータサイエンティストと同じ位置な気はしますが、企業によってアクセス可能範囲が違うかもしれません。
*9:兼任するケースも多いですが…
*11:ビッグデータブームの時もデータサイエンティストがやはりバズワードになっててデータエンジニアの名前はあまり聞きませんでした
*13:データ総研さんの書籍ではデータ抽出は別の役割として分けられていましたし、それが健全です。ただ実態は…
*14:データサイエンティストに分類されることも多いです。
*15:AWSのSageMakerやAzure Machine Learningなど
*16:再掲 https://jp.drinet.co.jp/corporate/books/data-management-that-leads-dx-to-success
*17:記載ミスありましたらどんどんご指摘ください