渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

データ人材は日本に何人必要なのか?(2018年Q2版)

f:id:TJO:20180529102204p:plain

(Image by Pixabay)

最近になって以下のようなメディア記事やそれに類する報道が殊に増えているようです。

以前研究者だった身としてはこういう「これから日本には〇〇万人の△△人材が必要」みたいな物言いを聞くとポスドク1万人計画の悪夢を思い出してしまう部分もありますが、そもそも論として「今後データ人材は日本に何人必要なのか?」を現場のヒューマンリソースの需給状況から述べる向きは相変わらず少ないのではないかという印象が強いです。


ということで相変わらずの与太記事で恐縮ですが、自分の6年間のデータ分析業界での経験と見聞をもとに「今後データ人材は日本に何人ぐらい必要なのか」を極めて主観的ながら論じてみようかと思います。いつも通り異論反論またはご指摘大歓迎ですので、コメントのある方は何がしかの方法でお寄せくださると有難いです。


まず最初に結論を


個人的な経験と見聞に基づく主観的な予想では「データサイエンティスト(統計分析メイン)と機械学習エンジニア(機械学習メイン)を合わせて日本全体で1万人」が上限ラインだと考えています。以下、その理由と(極めて主観的かつ弱いながらも)根拠を書いていきます。


データ人材から成るチームの平均的な構成を考えてみる


ここでは極端な例として「機械学習システムの構築もマーケティングモデリングなどの統計分析も包括的に一手に引き受けるデータ分析チーム」を想定します*1。実際には個々の企業でそれぞれがばらけて分散したチームだったり人員だったりの構成になるのではないかと思いますが、便宜的に全部ひとまとめにします。その上で1社当たりの平均的なチーム構成を考えると、

  • データサイエンティスト(統計分析担当):2人
  • 機械学習エンジニア(機械学習システム担当):3人
  • データ基盤エンジニア(DWH含めデータ基盤まわり担当):5人
  • アナリスト(集計分析・ダッシュボード監視など担当)及びコンサルタント(企画・接続・渉外担当):10人程度もしくはそれ以上

という感じになるのではないかなと個人的には考えています。もしかしたら企業によってはおそらくそれぞれ1人ずつでも余るというところもあれば、逆に100人ずついても足りないというところもあるかもしれません*2。けれども、例えば一部上場企業の規模だとこんなものかなと。以下その定性的な根拠を挙げます。


まず、データサイエンティストが2人というのは「平均的には多くても1ヶ月に4〜5件程度しかある程度高度な統計分析を要する業務は発生しない」という経験則を踏まえています*3。そして大体1件当たり2週間の納期でこなしていく(ここでは並列に処理することは考えない)とすると、とりあえず2人は必要だということになります。ちなみに2週間という納期は、特に統計モデリング系のタスクでありがちな「前処理が追いつかないor間違っていた」とか「現場の肌感覚と照らし合わせてみたらマッチしない不具合を見つけた」とかそういう理由で遅延やロールバックを繰り返したりすることで、時間を浪費することを想定した上での見積もり値です*4。もちろん人数で言えば1人でも足りるところも多いでしょう。


次に、機械学習エンジニアが3人というのは、相互に業務を融通しながらとはいえある程度専門分野ごとに分かれることを想定していて、その内訳として

の3通りぐらいになるのではないかと。それぞれに1人ずつ割り当てる(ただし後ろ2人は汎用的な機械学習タスクもある程度はやる)ことを考えると、3人必要だという推論になります。ここでは納期は特に想定せず、各々がプロジェクトを完遂するまで特に制約なく取り組み続けると仮定しています(なのである程度並列に処理する状況も考えられる)*6。これ以上多い人数が必要になる現場は、個人的な見聞の範囲では割と珍しいと思います*7


データ基盤エンジニアは、単純にデータサイエンティスト及び機械学習エンジニアにそれぞれ最大で1人張り付くというシンプルな想定をしただけです。DB / DWHの構築や、データパイプラインの整備や、はたまた機械学習含めた分析システムのインフラ構築を担当するというイメージです。実際の現場ではもっと少ないか、もしくはシステム開発部門のインフラエンジニアに掛け持ちで支援を仰ぐということの方が多いかもしれません。特に全面的にクラウドで分析業務をやるケースでは、データサイエンティストや機械学習エンジニアが自らクラウド環境を構築できるのであればデータ基盤エンジニアはそれほどいなくても済むはずです*8


残りは必ずしもデータ人材とは言えないかもしれませんが、例えばアナリストは現状だとSQLを叩いて主に集計ベースのデータ分析を行ったり、ダッシュボードを構築してその監視を行ったりすることが多い職種だと思います。これは企業・現場によっては結構な人数を抱えているところもあるので、どちらかというと今後はこちらの人々の方が多くなるかもしれません*9


そしてもう一つ、意外とデータ分析のチーム構成として見落とされがちなのが実務との接続を担当するコンサルタント。データサイエンティストや機械学習エンジニアが生み出したアウトプットを、チーム外に共有し尚且つ実務に実装していったり、もしくはチーム外の事業部門から要望を受けて企画立案したり、場合によってはチーム外の関連部門との協業の際の交渉なども担当したりする、そんなイメージです。これが出来る人材がいるとデータ分析チームの業務効率の桁が変わるというのが個人的な印象ですが、現状だと1人しかいないor誰もいないところも多いような。。。


なお、この記事のドラフトを見た前職時代のチームメイトにして機械学習エンジニア氏曰くは「大事な役職としてプロダクトマネージャー・プロデューサーが要るはず、予算獲得・組織運営・対外アピール・調整・仕様決めなどを担当」とのことで、これには僕も同感です。この辺はpeople managerとしてどういう人を上に頂くかにもよるのかもしれませんが、データ分析チームのマネージャーというのもそれはそれでやや特殊な仕事だというのは強調してし過ぎることないのかなと思います。


これを日本の一部上場企業数と掛け合わせてみる


日本取引所のこちらのページを見ると、一部上場企業は大体2000社強あるようです。なので、これを掛け合わせると5人(データサイエンティスト2人+機械学習エンジニア3人)×一部上場企業2000社=10000人、という冒頭に掲げた数字になります。ただし上にも書いたようにこれは「上限値」です。おそらくですが、これ以上は要らないはずです。


ここでちょっとしたシミュレーションを考えてみました。僕の勝手な想像では、「データサイエンティスト+機械学習エンジニア」の1企業当たりの必要人数は平均が5ぐらいのポアソン分布に従うのではないかと考えています。平均が5 (= 2+ 3)なのは上に書いた通りで、ポアソン分布に従うというのは「おそらくロングテール気味で基本的にはニーズの少ない職種なので分布のピークは少ない側に寄るはず」という主観的な印象をよく表しているからです。そこで実際にRで乱数生成してみました。

> set.seed(71)
> x <- rpois(n = 2000, lambda = 5)
> summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.000   3.000   5.000   5.017   6.000  15.000 
> sum(x)
[1] 10034
> hist(x)

f:id:TJO:20180529104143p:plain

何となくそれっぽいヒストグラムになりました(笑)。実際には最大値は15名ではきかないのではないかという気もしますが、平均像として均すことを考えたらこんなものではないかと思います。当たり前の話ですが、0人(=データ人材は不要)というところも出てくるはずです。その場合はどこかパートナーやベンダーに外注することになるのでしょうが、それは結局どこかが0人になって余った分を外側から補填しているだけなので*10、全体の規模としては変わらないのかなと。


ところで、これは以前書いた僕の予想するデータ人材数よりも1桁多い数になっています。

2年目のこの記事では「多くても1000人」と書きましたが、それ以降空前の人工知能ブームが沸き起こったことで急激に日本国内でも企業各社のデータ人材ニーズが拡大しているという点を踏まえています。実際、僕が見聞している範囲でもそれまでデータ人材を全く抱えていなかったにもかかわらず「今後はデータ利活用体制を整備しないと置いていかれる」と真剣に人材確保と体制整備に乗り出す大企業が増えてきています*11。それでもその10倍というのは、やはりあくまでも「上限値」として見るべきものかなと。


データ人材は何年で入れ替わるのか


これは非常に悩ましいところです。というのは、ビッグデータブームと共にデータ分析が産業界で盛んになり始めてからまだ10年も経っておらず、人材のライフサイクルやエコシステムもまだまだ確立していないからです。


僕が見聞している範囲でも、例えば「上位のマネジメント職に昇格したのでデータ分析の現場からは退いた」という人は一定数いるものの*12、まだ多くはなさそうです。ということで、一旦データ人材の入れ替わりや代替わりのような現象は「まだない」ものと想定しています。ただしそれこそ2030年代にどうなるかは正直僕にも予想は付かないです。


入れ替わりや代替わりがないのであれば、「年に〇〇人育成し続けなければならない」というような物言いは程度問題ながらナンセンスになります。少なくとも今後〇年間の毎年の育成計画を云々というのはちょっと合理的ではないように思います。


データ人材の「レベル分け」は必要なのか


冒頭に貼った記事では棟梁レベルがどうのこうの言っていますが、僕はそういうレベル分けは不要だと考えています。理由は簡単で、大半の実務の現場ではきちんと手を動かせることの方がまだまだ重要で、当面はリーダーシップがどうのとか世界レベルでのスキルがどうのとかいう議論をする段階にはないと個人的な観測範囲からは見受けられるからです。そういう議論をするのは上記で「まだない」と想定した「データ人材の入れ替わり・代替わり」が起きるような段階に移行してからかなと。


ついでに個人的な考えを書いてしまうと、冒頭の記事で議論されている世界レベルがどうこうという話は、どうも「研究者」と「実務家」を混同しているように見えます。確かにトップカンファレンスに論文を通す常連というような高度な研究&開発スキルの持ち主は非常に貴重かつ強力な人材ですが、そういう人たちは一般には「研究者」であり、尚且つ研究し続けてもらった方が明らかに社会のためになるというような存在です*13。彼らを無理やり「実務家」として働かせることが、本当に社会にとってプラスになるかどうか僕には疑問に思われます。


今回想定しているのはあくまでも「実務家」であり、企業の実際のビジネス課題(かなり抽象的なものからかなり具体的なものまで広いスペクトラムにまたがる)を解決することが期待される人たちだと思うので、そこに棟梁レベルだの業界代表レベルだの線を引くことに何か意味があるとは僕には思えないです。データサイエンティストもしくは機械学習エンジニアという仕事が務まるかどうかのhiring barのようなものはあっても良いと思いますが、それ以外のbarを増やす必要はないかと。


特に、現在ではMLCCCourseraUdacityのようなオンラインコース機械学習統計学方面ともに充実しており、GitHub / StackOverFlow / Kaggle / Qiitaのようなオープン化を体現する技術コミュニティ及びその支援フレームワークが世に溢れ、なおかつ機械学習統計学を基礎から応用・発展まで学べる書籍は毎月のように大量に出版されるようになってきており、駆け出しのデータサイエンティストや機械学習エンジニアであっても自助努力によってスキルレベルをステップアップさせていくことは限りなく可能な世界になってきています。そこで「お上のお墨付きの〇〇レベル」みたいなものは逆に意味がないのではないかとすら思えるのですが、いかがでしょうか。


最後に


何もかも僕の個人的な経験と見聞と観測と、さらには主観的かつ定性的な予測ばかりの記事なので、あまり真に受けないことをお薦めいたします(笑)。とは言え、あまりにも根拠薄弱な「データ人材〇〇万人不足」論が巷に多過ぎるので、現場の雰囲気を踏まえた人材需給予測を書いてみた次第です。お粗末様でした。

*1:ぶっちゃけ前職ではそういう雰囲気のチーム構成でした

*2:大手のweb系・tech系企業だと日本国内でも100人に近い単位で抱えているところは実際に存在する

*3:高度な統計分析の依頼を出す側にも相応のリテラシーが必要という側面もあり、ここが弱いと永遠にそんな依頼はどこからも来ないことになる

*4:安全マージンを考えると3週間〜1ヶ月の方が無難

*5:Kagglerがここをゴリゴリやるとナイスな印象

*6:結局完成せずに放棄されるつらいケースも。。。

*7:ただし機械学習で動くことを売りにしたB2Cのプロダクトを持っているところだと何十人も機械学習エンジニアを抱えているケースがあります

*8:それを目的として逆にデータサイエンティストや機械学習エンジニアにクラウド環境構築・整備をトレーニングするところもある

*9:Excelダッシュボード職人が増えるだけになってつらいことも

*10:0人の企業数十社に対して10人抱えるベンダー1社が対応するという感じ

*11:中には張り子の虎みたいな見掛け倒しのところもありますが、一方で極めて真剣に鳴り物入りでやっているところもあるので、全体を均すと結構な数の大企業がデータ人材の確保に動いているのは事実かと

*12:直接面識があって存じ上げているケースでは2人ほど

*13:NIPSやKDDに通せるような人たちに現場の汚いデータの前処理や汚いコードのデバッグをさせるのは間違っていると思うので