28歳、一念発起して未経験からデータサイエンティストを志した2年間の軌跡

#はじめに
経済産業省の試算によるとAIやビッグデータといったデータサイエンティストが関わる分野では2020年に4.8万人が不足すると言われています。
まだまだ、世の中的に需要があり、将来性のある職業ですので、これから目指そうと思われている方も少なくないのではないでしょうか。

私も時代の流れに乗って、データサイエンティストを目指した人の一人です。

**「一念発揮して未経験からデータサイエンティストを目指した普通の社会人が、2年後どのような姿になったのか？」**
ということに、少しでも興味のある方に読んで頂けましたら幸いです。


##そもそもデータサイエンティストとは
データサイエンティストは大きく分けて2種類あると考えています。

- 企業の課題解決のために大規模データを分析し、その結果をもとに状況の改善をすべく施策立案を行うデータアナリスト・コンサルタント寄りのDS
- サービスに機械学習を用いた機能を実装したり、課題解決のために機械学習技術を活用して事業に貢献する機械学習エンジニア寄りのDS

*DS:データサイエンティストの略

会社やプロジェクトによって求められる業務領域は異なりますが、
**「ビックデータを活用して、企業に価値を提供する」**
という本質的なところは共通していると思います。

また、近年では、求人情報等を見ると役割によって
「機械学習エンジニア」「データアナリスト」「データ基盤エンジニア」
などの職種に細分化されるようになってきている印象です。

[引用元1](https://www.sas.com/ja_jp/insights/analytics/what-is-a-data-scientist.html)
[引用元2](https://employment.en-japan.com/engineerhub/entry/2018/10/30/110000)


# 私の簡単な経歴です。
2007~2011年:MARCH文系
2011~2017年:大学受験予備校
2017~2019年:データ分析会社（Co-graph inc）
2019~現在:事業会社（bitkey inc）

上記の通り、私のキャリアの大半は予備校職員として、校舎運営・教材作成・模試運営に携わっており、ほぼ未経験の状態からのキャリアチェンジでした。

#なぜデータサイエンティストを目指すようになったのか
キャリアチェンジのきっかけは2016年頃でしょうか。当時、数学の教材作成に携わっていたころ、大学入試全体で**「データ分析」に関連する出題が増えている**ことが巷で話題になっていました。
世の中的に「ビックデータ」に注目が集まっていたため、大学入試もその影響を受けた模様です。
教材研究の参考になればと思い、ふと本屋に立ち寄ったときに下記の雑誌が目に止まり、その時にはじめて**データサイエンティスト**という職業があることを知りました。

![71bzYojZNgL.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/327405/a6e66177-3f5b-f70e-9ab2-0ec7da0289a8.jpeg)

[データサイエンティスト最前線-amazon](https://www.amazon.co.jp/%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%83%86%E3%82%A3%E3%82%B9%E3%83%88%E6%9C%80%E5%89%8D%E7%B7%9A-%E6%97%A5%E7%B5%8CBP%E3%83%A0%E3%83%83%E3%82%AF-%E6%97%A5%E7%B5%8C%E6%83%85%E5%A0%B1%E3%82%B9%E3%83%88%E3%83%A9%E3%83%86%E3%82%B8%E3%83%BC/dp/4822230473)より引用

純粋にこの本に登場するようなビッグデータを活用して課題解決する仕事のカッコ良さに憧れました。
###30歳手前のキャリアチェンジに不安はなかったのか？
予備校業界でキャリアを積むことに限界を感じていたので、スパッと気持ちを切り替えました。
ビックデータに対する世の中的な注目度が高い、今を逃したら絶対に後悔すると直感的に思ったのもあります。

**「俺もデータサイエンティストになったろ！」**
と決意し、間もなくして転職活動をスタート。
必死の転職活動が実り、データ分析の会社に採用していただきました。

その後、2019年7月に現職bitkey incに転職し現在に至るわけですが、今日までの約2年間をbefore、afterで振り返ってみたいと思います。

# Before（2017年11月時点）
**・分析スキル**
　エクセルで相関関係と相関係数出す程度
**・プログラミング経験**
　VBAが少しだけ書ける程度。黒い画面は見たことない。
**・python**
　「パイソン？」ダイソンの掃除機なら使った経験はありますがなにか。
**・SQL**
　「えすきゅーえる？」なにそれ、美味しいの？
**・統計知識**
　偏差値は知っているけど、標準偏差って何？

自分でいうのは忍びないですが、イケてるスキルセットですね。
伸び代しかないってやつです。
ドラクエで例えると、序盤のスライムLV1を倒すところからのスタートです。

#After（現在地：2019年12月末時点）

・SQLはおそらく中級ぐらい。普段はBigqueryを使って[青本](https://www.amazon.co.jp/%E3%83%93%E3%83%83%E3%82%B0%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E3%83%BB%E6%B4%BB%E7%94%A8%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AESQL%E3%83%AC%E3%82%B7%E3%83%94-%E5%8A%A0%E5%B5%9C-%E9%95%B7%E9%96%80-ebook/dp/B06XRWPPC9)に登場するようなクエリを書いています。
・pythonも中級レベルぐらい。
・pandasでデータの前処理、集計。matplotlibでの可視化は日常業務。
・わからない箇所も多々あるのでググりながら仕事してます。特にpandas操作は1000回ぐらいググってます。
・最近はBigqueryからデータを取得し、pythonで可視化したグラフをcloudfunctionsでslackに投稿するbot作成しました。
・基本的な機械学習やディープラーニングモデリング
- 単回帰、重回帰分析、最小二乗法、ロジスティック回帰
- 決定木、ランダムフォレスト、サポートベクターマシン、K-means、階層クラスタリング
- Keras(Tensorflowバックグラウンド)を用いた基本的なディープラーニングの実装
・得意領域は自然言語処理。今年はメールのカテゴリ分類器、感情分析器の自作にチャレンジ。
・要件定義→基礎分析→前処理→データ加工→集計→モデリング→評価までは経験済。運用は未経験。
・linuxコマンドやvim操作は必要最低限


箇条書きにすると「なんとなくできる人」のように見えてしまうかもですが、実際はまだまだヒヨコ🐤です。本当に。
現に[データサイエンティスト協会のスキルセット2019年版](https://www.datascientist.or.jp/common/docs/PR_skillcheck_ver3.00.pdf)と照らしてみると良く見積もって**独り立ちレベル**程度ではないでしょうか。

#Future（2020年はこうなりたい）
・サービスに機械学習モデルを実装
・機械学習運用サイクルの自動化
・機械学習を使ったwebアプリを作成
・BIツールを何かしら使いこなせるようになる
・kaggleでメダル獲る
・統計検定2級・G検定取得
・qiitaで1000いいね記事
・gitアレルギーをなくす

現在は、機械学習エンジニア寄りのデータサイエンティストとして一人前になるべく精進中です！

では、ここからは未経験からスタートして2年間でどのようなステップを踏んできたかを具体的に書いていきます。

#データ分析会社（Co-graph inc）時代
コグラフは「ソフトウェア開発」＋「データ分析」技術のソリューション・プロバインディング・カンパニーです。

当然ながら未経験者がいきなりデータ分析の業務ができるわけないため、SQLの勉強からスタートすることになりました。
##2017年11月〜12月（1~2ヶ月目）
###トピック
・研修期間として約2ヶ月間SQLを勉強
・**SQLの概念が全く理解できないという壁**にぶち当たる
・ノートにクエリを手書きで書いて腱鞘炎になる

###総括
会社のルールでSQLの試験に合格しないと案件にアサインされないため必死でした。
入社から2ヶ月後にOracle Bronze SQL基礎Iを受験し無事合格しましたが、
SQLを書けるようになったわけでなく、[白本](https://www.amazon.co.jp/%E3%80%90%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E5%AF%BE%E7%AD%96%E6%9B%B8%E3%80%91ORACLE-MASTER-Bronze%EF%BC%BB12c-SQL%E5%9F%BA%E7%A4%8E%EF%BC%BD%EF%BC%88%E8%A9%A6%E9%A8%93%E7%95%AA%E5%8F%B7%EF%BC%9A1Z0-061%EF%BC%89%E5%AE%8C%E5%85%A8%E8%A9%B3%E8%A7%A3%EF%BC%8B%E7%B2%BE%E9%81%B8%E5%95%8F%E9%A1%8C%E9%9B%86-%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%82%B9%E3%82%BF%E3%83%87%E3%82%A3%E3%82%AC%E3%82%A4%E3%83%89-ebook/dp/B00QJINS56/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=oracle+sql&qid=1577788593&s=digital-text&sr=1-1)の内容と試験の問題集を丸暗記して辛うじてのクリアです。
翌月から現場に出ることになるため、喜び半分と不安半分な気持ちでした。

##2018年1月〜3月（3~5ヶ月目）
###トピック
【業務】
・最初の案件は、模試の集計をSQLで行う業務を担当。ゴールが明確に決まっているためひたすらコーディングのお仕事。
・全てが初めてのため何がわからないのかがわからない状態
・どんなクエリを書いてもエラー連発。最初の一週間はひたすらググる。
・なんだかんだ最終的にはSQLの基礎構文はマスター
【業務外】
・正月にUdemyのpythonデータサイエンス講座を受講するも意味不明すぎて挫折
・3月頃に気を取り直してpython基礎文法をpaizaで勉強。paizaはおすすめです。
・並行してpythonの超初心者用の参考書を一冊読み込む

###総括
初めてのIT業界での現場で、毎日SQLクエリと格闘していました。
なんでエラーになるのかさっぱりわからず、ググってもわからず、泣きそうでした。
今思えば、2週間ぐらいの仕事量を2ヶ月程度掛けてやっていたんだと思います。
教育業界からIT業界に転身したことによる企業文化の違いにも苦労しました。
まさに「未経験者には全てが黒魔術に見える」状態です
https://qiita.com/mackey0022/items/73f77873facc22e22c8c
##2018年4月〜6月（6~9ヶ月）
###トピック
【業務】
・2番目の現場はSQLとVBAを組み合わせた社内ツールの開発
・美しいコードを書くように指導される
・SQLにも慣れ、応用構文までなんとか書けるようになる
>私「クエリかけました！クエリ結果も多分合ってるぽいです！」 
上長「確かに合ってるんだけど、クエリが汚いからちゃんと書いて。」
私「・・・」
上長「やり直し！」

【業務外】
・将来的にデータ分析案件にアサインしたかったので週1頻度でpython勉強会に参加
・統計モデリングのコードの模写してとりあえず目の前で動くコードができて感動
・とりあえずは動くが何をやっているかはさっぱりわからない状態
・エラーコードの読み方がわからない
>私「なんでこのコードエラーなるんすか？」
パイセン「え、エラーメッセージに書いてあるじゃん」
私「だから、それが意味わからないんですよ」
パイセン「書いてる通りなんだけどな・・・」

###総括
業務では現場の上長が厳しく、「何くそ」と思いながらも何回もクエリを書き直した経験は良き思い出です笑
業務外ではpythonで機械学習できるようになりたい一心で背伸びして勉強会に参加していましたが、講義内容が意味不明過ぎてほとんど意味はなかったです。そもそもpython基礎文法が身についていないのに機械学習をやろうとしたのが間違いだったと後悔しました。

##2018年7月〜2019年1月（10~1年2ヶ月）
###トピック
【業務】
・3現場目はアプリサービスの基礎分析
・初めてのBigquery
・ドメイン知識やデータへの深い理解度が求められる
・自然言語処理案件をやれるチャンスがあり、初めてのモデリング
>
私「○○の分析に必要な△△と□□のデータが欲しいんですけどBQのどこにあります？」
上長「どこかにあるから良い感じに探してきて！」
私「テーブル100個近くあるんですけど、どうやって探せばいいんすか？」
上長「メタルキングとコンフルに書いてあるよ。あとはよしなにやってね。」
私「メタルキングってあのめっちゃ経験値もらえるヤツですか？？」
上長「・・・」
*メタルキング：某R社のビジネスを支えるビッグデータ活用基盤とメタデータ管理システム

【業務外】
・自由研究としてpythonで画像識別に挑戦。CNNで麺類分類器を作成
・自社＆勉強会＆中学校でLT
・副業でSQL講師を兼務

###総括
業務では初めての分析案件で、日々の業務をこなすのに精一杯でした。
扱うデータとビジネス要件の理解が一番大変であり、かつ専門性を必要とするため、とても苦労しました。

分析における要件定義の重要性、適切な集計定義の設定、データの信頼性の確認、データベース移行に伴うクエリの変換等々、分析業務に必要なことを経験させていただいた半年でした。
業務はハードでしたが本物のデータサイエンティストの方々の側で仕事ができたこの半年間の経験が後々一番生きているように思います。

業務外では、自由研究として画像識別（ディープラーニング）に挑戦。
社内での発表日に間に合わせるべく、2ヶ月間、平日夜と土日フルに使ってなんとか仕上げる。
先輩にアドバイスをもらいながらでしたが、データ収集→前処理→モデリング→評価までやれたのでメタルスライム倒したぐらいの経験値を得られレベルアップした実感はあります。

##2018年2月〜2019年3月（1年3ヶ月~1年4ヶ月）
###トピック
【業務】
・4現場目は、マーケティング会社で分析案件
・時系列分析やクラスタリング
【業務外】
・pythonもう一度体系的に学び直す
・機械学習に関する書籍を読み漁る
・自由研究として顔認識にチャレンジ
・qiita執筆
[【Python】🍜機械学習で「隠れた名店」を探してみた。（そして実際に行ってみた）🍜](https://qiita.com/toshiyuki_tsutsui/items/b3ac8fd1b300c3404508)
[【Python】🍜ラーメンガチ勢によるガチ勢のための食べログスクレイピング🍜](https://qiita.com/toshiyuki_tsutsui/items/f143946944a428ed105b)
[【Python】🍜ラーメンガチ勢によるガチ勢のためのWord2vec（食べログ口コミコーパスの威力を検証してみた）🍜](https://qiita.com/toshiyuki_tsutsui/items/19590b464f15f845efcd)

###総括

pythonを基礎からやり直した＆いろんな人のqiita記事を見ながら機械学習コードを試したことでできる領域が一気広がりました。
qiitaのラーメンガチ勢シリーズを書くために、結果的に
スクレイピング・自然言語処理・pandas操作全般・matplotlibでの可視化・kmeansでのクラスタリング
をやったので、はぐれメタルを倒すぐらいの経験値を得られ、レベルアップした実感があります。
そして、qiita記事は転職活動の際のポートフォリオの役目を果たしてくれたので、書いてよかったです。
##2018年4月〜2019年6月（1年6ヶ月~1年8ヶ月）
###トピック
【業務】
・自社の営業同行
・小規模な受託案件とSQL講師
・多変量解析

【業務外】
・副業で自然言語処理案件をお手伝い
・qiita執筆
[【Python】🍜可愛い店員さんがいるラーメン店を食べログ口コミから自然言語処理で抽出してみた。🍜](https://qiita.com/toshiyuki_tsutsui/items/a192cac082926a7aced5)
[【Python】🍜食べログの口コミから点数を予測してみたが予想以上に難しかった件。🍜](https://qiita.com/toshiyuki_tsutsui/items/fe62326a95e9ec788dcc)
###総括
この時期は転職活動に専念していました。
転職動機は、客先常駐や受託ではなく、自社プロダクトの成長に貢献できる仕事&機械学習モデリングをガッツリやりたかったからです。

#bitkey inc時代
ビットキーは、本人認証と権利移転のプラットフォーム=bitkey platformを開発・運営することで、世界中のあらゆるものを1つのIDでつなぐことを目指すスタートアップです。
https://www.wantedly.com/companies/bitkey

##2018年7月〜2019年12月（1年9ヶ月~2年1ヶ月）
【業務】
・データ部署の立ち上げ
・仲間集め
・機械学習基盤構築
・データ活用による事業課題解決
・機械学習技術を駆使した社内課題の解決

【業務外】
・自然言語処理案件のPM
・qiita執筆

[【自然言語処理】感情分析の進め方＆ハマりやすいポイント](https://qiita.com/toshiyuki_tsutsui/items/604f92dbe6e20a18a17e)
[小説「天気の子」を丸ごと一冊、感情分析してみた☔️](https://qiita.com/toshiyuki_tsutsui/items/10f52c30fe1504b83ba1)
[pipでcabocha-python のインストールができない現象について](https://qiita.com/toshiyuki_tsutsui/items/31cd363fab142db17c28)
[🙈猿も木から落ちる、CaboChaでも係り受け解析をミスる😭](https://qiita.com/toshiyuki_tsutsui/items/d9682bb77b8386b4825b)

###総括
機械学習エンジニアとして、全体的な至らなさを痛感しつつも、機械学習を活かせる領域がたくさんあり新しいことへのチャレンジの連続でワクワクする日々を過ごしています。
急成長のプロダクトを扱っており、日々の業務が事業の成長に直結するのを間近で体感できるので、非常に刺激が多いです。そして、優秀かつ善良で謙虚に努力し続ける素敵な仲間の姿を間近でみると**「もっと頑張らねば」**というモチベーションに繋がっています。

いざ事業会社に入って業務して感じたのは、クラウド知識やweb知識、その他一般的なエンジニアとしての基礎（開発経験的なsomething）が不足していることです。
私のようにデータ分析を主戦場にしてきたデータアナリストは、あくまでもアナリストであり、エンジニア領域は弱いです。ですが機械学習エンジニアは実装してなんぼの世界なので、必然的にエンジニアリング力が要求されます。

#スキル以外の部分の重要性
分析手法や機械学習やディープラーニングのモデリングスキルに注目しがちですが、それ以前にビジネスへの理解や扱うデータの理解も同等もしくはそれ以上に重要です。
##データへの理解
**勘違いや思い込みでデータを扱うと事故ります。**
・対象となるデータはいつどこからどのように発生しているデータなのか
・テーブルデータであれば1レコードが何を意味しているのか
・各カラムが何を意味しているのか。
・データの意味が将来的に変化する可能性があるかどうか。
・そもそもそのデータは正しいデータであるのか（常に疑ってかかる）

上記のことを第3者にきちんと説明できるぐらい理解度を上げて、データに対して責任を持つ意識が求められます。

##ビジネスや業務に対する理解とコミュニケーション力
仮に分析や機械学習モデルが仮説通りにできたとして
**「ユーザ視点ではどのように嬉しいのか」「どの部署の誰の何の業務にどのように役立つのか」「そもそもやる意味あるのか」「スピード重視なのか精度重視なのか」**
上記のことを正しく理解していないと、「実は必要なかった」「求めていたものと違う」という認識のズレが生じてせっかく作ったモデルが無駄になってしまうこともあります。
これらは、書籍やネットに正解があるわけではなく、現場の人との間のコミュニケーションによって知り得るものです。そして、その情報は生き物のように時間とともに変化していきます。
従って技術力だけでなくコミュニケーション力も同じくらい重要です。
。コミュニケーション力は相手に伝えるためだけでなく、**正確な情報を受け取って正しく判断するため**にも重要なのではと感じます。対面だけでなくslack上でのやりとりも同様です。

#まとめ
データサイエンティストを目指す中で、
**「どんだけ勉強すればええねん？！！」**
と愚痴りたくなる日も少なくないですが、この職種で価値を出そうと思ったら地道ですがコツコツ勉強してできることを増やして一歩ずつレベルアップするのが最善な気がしています。
私の反省ですが、**闇雲に勉強するのではなく、計画性を持って体系的に学習すること**をおすすめします。技術の全体像が把握できると理解スピードが速くなるため学習効率が良いです。

これからデータサイエンティストを目指す方は、多かれ少なかれ似たような経験をされていくと思います。ITエンジニア未経験の方は事実としてハードルが高いですが、やる気と根性と時間さえあれば、だいたいこのぐらいのスキルセットには到達すると思います。

以上、2年間のまとめでした。

#参考
[【保存版・初心者向け】独学でAIエンジニアになりたい人向けのオススメの勉強方法]
(https://qiita.com/tani_AI_Academy/items/4da02cb056646ba43b9d)
[データ分析で重要な「ビジネス理解」についてのフレームワーク検討](https://qiita.com/takubb/items/0ae474f820c985289dc8)
[データ抽出＝作業、と扱われないためにするべき3つのこと
](https://qiita.com/k_0120/items/bca79b456d37a6f1b573)