最終更新日:
新興の技術職であるデータサイエンティストは、確率や統計に関する体系的知識のような従来のソフトウェアエンジニアには不可欠とされなかった知識が必要とされます。その一方でソフトウェアエンジニアを経験していれば習得できる技術と知識の一部は、データサイエンティストになっても役立つものです。そうした技術と知識には、ソフトウェアテストやソースコード管理が挙げられます。それゆえ、ソフトウェアエンジニアからデータサイエンティストにキャリアチェンジする場合には、ソフトウェアテストやソースコード管理に関する技術と知識を持っていることを大いにアピールすべきなのです(以上の論点は、本翻訳記事前編で解説)。
また、実際にデータサイエンティストを目指す場合には、どの業界で働くのかが重要になってきます。というのも、業界ごとに取り扱うデータの種類と内容が異なるからです。データサイエンティストとして働きたい業界が取り扱うデータの特徴とそのデータに適用する技法を知るには、目指す業界におけるAIスタートアップの公式サイトに掲載されている業務内容と求人要項を調べるとよいでしょう。こうして調べた情報のなかには、働きたい業界で現実に使われている技術と求められている人材像に関する記述があるはずです。使われている技術や必要とされるスキルがわかったら、あとはそれらを習得すべく勉強すればよいのです(以上の論点は、本翻訳記事後編で解説)。
本記事ではデータサイエンティストになるために必要な知識と技術の習得に役立つオンライン講座や独習資料が豊富に紹介されています。これらの情報は英語圏のものなのですが、日本における同種の情報に関しては以下のAINOW記事にまとめられています。
ソフトウェアエンジニアとデータサイエンティストは全く別種の職種ではなく、ソフトウェアエンジニアで培った技術と知識はデータサイエンティストでも役に立つという本記事の主張は、日本におけるデータサイエンティスト志望者を大きく勇気づけるのではないでしょうか。
なお、以下の記事本文はCecelia Shao氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。
最近、みんながデータサイエンティストになりたがっているように見える。博士課程の学生からデータアナリスト、さらには今でもLinkedInから「コーヒーでもどう」などとメッセージを送ってくるような学生時代の古いルームメイトまでこぞってなりたがっているようだ。
少なくともあなたが何かしらのデータサイエンス職を探しており、この職種が大流行していることを目の当たりにしていたら、みんながデータサイエンティストになりたがっていることが薄々わかることだろう。もしかしたら、すでにVicki Boykisのブログ「データサイエンスは現在難しい」のなかの以下のような一節を読んでいるかも知れない。
その流行が収束段階に入っているデータサイエンスは次第にエンジニアリングに近づいており、要求されるスキルもデータ・ビジュアライゼーションや統計学の基礎から伝統的なコンピュータサイエンスを引き継いだものに移ってきている…
単体テストや継続的インテグレーション(※註1)といった概念は急速にジャーゴンとなって、データサイエンティストと機械学習エンジニアリングに携わっている計算機学者が使う共通のツールセットとなった。
(※註1)継続的インテグレーション(continuous integration:CIと略される)とは、ソフトウェアエンジニアが自身の作成したソースコードをリポジトリにアップロードすると自動的にビルドとテストが実行され、そのテストのフィードバックにもとづいてさらにソースコードを修正するという開発プロセスを繰り返してソフトウェアを完成させる開発手法。バグを早期に発見できるために短期間の開発が可能となる。
あるいはTim Hopperのツイートも参考になる。
Love data science pic.twitter.com/RZ18jaOJRQ
— Tim Hopper ?? (@tdhopper) May 11, 2016
その一方で今もって明らかではないのは、いかにしてあなたのソフトウェアエンジニアとしての経験をデータサイエンス職に生かすことができるか、ということである。この疑問に関して、以下のような疑問も生じるだろう。
データサイエンス職に就くには何から勉強するべきなのか?
様々にいるデータサイエンティストにとって、ベストプラクティスやベストなツールは存在するのか?
ソフトウェアエンジニアで習得したスキルはデータサイエンティストになっても生かせるのか?
本記事はデータサイエンティストという職種にまつわるバックグラウンドとソフトウェアエンジニアという経歴がデータサイエンス職にも役立つ理由を伝えたうえで、もしあなたがソフトウェア開発者であるならば、データサイエンスにも強くなるためのアクションを分かりやすく順を追って説明する。
データサイエンスの役割を知りたい場合はどうするか。そんな時は、隔週で配信される新しいデータサイエンスに関するメーリングリストML Jobs Newsletterに登録すると、あなたのメール受信箱に情報が届くでしょう。
データサイエンティスト VS データエンジニア
まず初めに、データサイエンティストとデータエンジニアという互いに補完的であるふたつの職種を区別するべきだろう。このふたつの職種の役割は両方とも機械学習モデルを取り扱うのだが、そのモデルの取り扱い方はデータサイエンティストとデータエンジニアの仕事の本質とその要求に応じて非常に異なっている。
追記:機械学習に専門特化しているという意味でのデータエンジニアは、求人の募集要項には「機械学習に関するソフトウェアエンジニア」あるいは「機械学習エンジニア」と表記される可能性もある。
機械学習のワークフローにおいて、データサイエンティストは採用すべき機械学習モデルを決定するために必要な統計的分析を実行して、そのモデルを試作し実際に構築する。
機械学習エンジニアは、次のようなモデル構築過程の前後においてデータサイエンティストとしばしばコラボレートする。(1)モデルにデータを供給するデータパイプラインの構築(2)構築した機械学習モデルが健全かつ継続的に稼働することを保証するシステムの設計と開発
以下の図は、データサイエンティストとデータエンジニア、そしてその周辺の職種のスキルが連続的であることを示すものだ。
以下では、データサイエンティストとデータエンジニアの違いに関するオンライン上にある豊富なリソースの一部を挙げる。ぜひチェックを。
Panoply:データエンジニアとデータサイエンティストの違いとは何か?
Springboard:機械学習エンジニアVSデータサイエンティスト
オライリー:データエンジニアVRデータサイエンティスト
以下の解説の免責事項として、本記事は原則的に機械学習エンジニアリングの側に向かって隣接しているものとしてデータサイエンスの役割を論じる(それゆえ本記事は、もしあなたが機械学習エンジニアとデータサイエンティストの両方を担当しなければならないような小さい企業における求人を探しているならば、特に関係があるだろう)。もしあなたがデータエンジニアあるいは機械学習エンジニアにキャリアチェンジできる方法に興味があるのなら、本記事の最後にあるコメント欄でその旨を知らせてください。
開発者であることのアドバンテージ
AIに関心のあるすべてのヒトにとって、損失となっていることがある。「Pythonを使ったデータサイエンス入門」やAndrew Ng氏のCourseraの講義(※註2)といった機械学習にまつわる授業では、ソフトウェアエンジニアリングに由来する単体テスト、再利用可能なモジュールのコーディング方法、CI/CD(※註3)、あるいはバージョン管理のような概念やベストプラクティスは扱わないのだ。確かに先進的な機械学習開発チームは、機械学習のコーディングのためにもはや以上のような概念やベストプラクティスを使っていない。そうは言っても、ソフトウェアエンジニアリング由来の知恵を継承しない傾向は不安を感じさせるトレンドとなっている…
こうした傾向に関して、Pete Wardenはブログ記事「機械学習における再生産性の危機」で以下のように述べている。
もはやわれわれは、いちいちソースコードの変更を追跡してその都度モデルを最初から再構築するような暗黒時代に戻ってしまっている。この暗黒時代においては、ソースコードの管理もしないで開発していた頃に戻ってしまったような気持ちになって気分が悪くなる。
データサイエンティストの求人要項で単体テストのような「ソフトウェアエンジニアリング」のスキルが明記されていることはあまりないようなのだが、こうしたソフトウェアエンジニアリングのスキルを習得していることを職歴の一部として持っていると、データサイエンティストとしての仕事を何十倍にもする助けとなる。さらには、データサイエンス職における面接の時に尋ねられるプログラミング能力に関する質問に対する答えとしても、ソフトウェアエンジニアリングのスキルは使えるのだ。
ソフトウェアエンジニアリングスキルのデータサイエンスに対する効用に関して、以上に述べたこととは別の簡単から論じた興味深いものしてTrey Causeyのエッセイ「データサイエンティストのためのソフトウェア開発スキル」があるので、こちらもチェックするとよい。このエッセイにおいて、彼はデータサイエンティストが「より良いコードを書くこと、ソフトウェア開発者とより良く交流すること」を学ぶべきだと勧めており、こうした学びが最終的には時間を節約し頭痛の種を減らすことになる、と述べている。
データサイエンスに強くなる
あなたがソフトウェアエンジニアリングにたずさわった経歴によって良い素養を身につけているのは素晴らしいことではあるが、それではデータサイエンティストになるための次のステップとは何であろうか。データサイエンティストの定義に関するJosh Willsの皮肉混じりのツイートは、驚くほど的を射ている。
Data Scientist (n.): Person who is better at statistics than any software engineer and better at software engineering than any statistician.
— Josh Wills (@josh_wills) May 3, 2012
もしあなたがデータサイエンティストの役割やキャリアを追いかけることに興味を持っているならば、Josh Willsのツイートはあなたがやるべきことに関するヒントとなるだろう。そのヒントとは統計だ。以降の節では、以下のような論点に関する素晴らしいリソースを紹介していく。
- 機械学習に特化した知識の構築術
- 業界に関する知識の構築術
- 機械学習関連のツール
- スキルと知識
(後編に続く…)
原文
『If you’re a developer transitioning into data science, here are your best resources』
著者
Cecelia Shao
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん