非IT学部卒からデータサイエンティストになった勉強法

はじめに

わたしはIT系の学部・院を出ていませんが、いま(いちおう)データサイエンティストをやれているので、自分の勉強方法をまとめておくとが誰かの役にたつこともあるかな、と思いまして、整理してみました。

書籍の紹介が多いですが、Kindle Unlimitedに加入していると無料で読める本が多いので、プログラミング頑張りたい方は加入するのがおすすめです。すぐにもとが取れます。そうなると、技術書をKindleで読むことになるので、タブレット端末があると勉強がはかどりますよ。

注:プログラミング学習サービス「Progate」について説明している箇所がありますが、PRではありません。単純に自分がやってみていいと思ったので紹介しています。また、書籍やUdemy、YouTubeの紹介もありますが、これらも完全に個人のおすすめであり利益供与はありません。

これまでもこれからも、どの会社のPRのご依頼も受けないつもりでいます。

わたしの経歴

プログラミングとの出会い

わたしはもともと化学系の学部を卒業して、材料系の大学院(物理寄り)を出て、IT企業の中にある小さな研究所で働いていました。研究所では化学系のセンサの開発をしていました。

プログラミングは学部のときの情報の授業でCをやったのがはじめてだったのですが、ろくに説明がなく丸投げみたいな感じで、TAの大学院生に「わかんないんですけど!」と聞きまくってなんとなく回答を提出して終わりでした。

「Hello Worldの何が楽しいの?」「プログラミングやってなにが便利なの?」「そもそもどういう仕組みで動いているの?」

いろいろ納得できなくて、その授業がきっかけでプログラミング嫌いになってしまいました。

最近その時の化学科の同期の友達と話していて、「あの授業はひどかったよね」という話で盛り上がったので、わたしの授業態度がよくなかったというよりは、授業内容が悪かったのだと思います。

これはものすごい損失でしたね…あのときプログラミングの楽しさに目覚めていたら、いまごろもっとできていたはずなのに…

その後、新卒で入った会社がIT企業だったので、プログラミングの研修があり、2ヶ月ほどHTML、JavaScriptなどを学びました。そこで、「あれ、プログラミングっておもしろいじゃん!」と思えるようになったのでいまがあります。

振り返ると、ここで基本的なプログラミングの知識・概念を叩き込まれたのがあとからすごくよかったなと思います。

「変数ってなに?」「代入ってなに?」「型ってなに?」「forとかifってどう使うの?なにがうれしいの?」というようなことをすぐに聞ける環境にあったのはとてもよかったです。

しつこく質問しながらプログラミングの基本概念をだんだんと理解していった感じです。これを独学で身につけるのは、かなり大変なんじゃないかな。わからないポイントは人それぞれで、そういう「概念」みたいなところはなかなか本には書かれていないと思うんですよね。はじめは誰か「先生」になってくれる人がいた方がいいんじゃないかな、と個人的には思います。

データ分析のためにRとPythonを独学

その後、研究所に配属になり、化学系センサの開発やセンサデータの分析などの業務をしていました。そこでRをちょっとやりました。

そのあといろいろあって転職して、そこでも似たような業務を行っていました。その会社では自社開発のセンサデータ分析サービスを提供していましたが、センサ開発者にとってはやや使い勝手が悪かったので、自分でセンサデータを分析するPythonプログラムを書いていました。

Pythonは、Progeteというプログラミング学習サイトと、書籍で勉強しました。

その後さらに転職して、現職となり、データサイエンティストとして働いています。

以下、自分の体験を交えながらおすすめの勉強法について説明していきます。

「先生」を用意する

わたしの場合は研修を受けたので、完全にゼロからのスタートの場合にどうすればいいのかはわからないのですが、わからないことがあったときに質問できるようにしておいた方がいいと思います。

誰かお友達や、会社の詳しい人とかにお願いするのもいいと思います(謝礼はしましょうね)。

あと、coconalaのようなオンラインレッスン紹介サービスのなかには、「プログラミング家庭教師」を紹介しているものもあるみたいなので、(怪しくないか確認する必要はありますが)そういうものを利用してもいいかもしれません。

東大家庭教師友の会が運営しているTech Teacherというサービスもあるみたいです。先生は難関大学の大学生・院生が中心のようです。オンラインでも受講できるようですね。

どんな方法でもいいのですが、とにかく質問ができる環境を用意しておくことをお勧めします。

プログラミング学習サイトを利用する

最初は「講義とコードの実行環境の両方がある」タイプのプログラミングの学習サイトを1ヶ月くらい集中してやるのがいいと思います。

いろいろなサービスがありますが、個人的にはProgateがおすすめです。

ただ、わたしはこういう初心者向けのプログラミングサービスはProgateしか利用したことがなく、もしかすると他にもっといいサービスがあるかもしれないです。

この辺は好みなので、お好きなものを選んでいただけるといいと思います。

Progateがおすすめ

Progateでは、ひとつの講座が「講義スライドパート」と「実践パート」に分かれていて、学んだことをすぐに使ってコードを書き、ブラウザ上で実行してみることができます。エラーメッセージも日本語で出ますし、ヒントもあるので、初心者でも取りかかりやすいと思います。UIもかわいくてわかりやすいです。

料金体系ですが、「無料プラン」でもいくつかのレッスンが受けられますし、「プラスプラン」に加入するとすべてのレッスンが受けられます。

ここでおすすめなのが、「1ヶ月プラン1,490円」に加入して、一ヶ月で自分の学びたいプログラミング言語の全部のレッスンをやり切るということです!

12ヶ月プラン11,880円(990円/月)や6ヶ月プラン7,740円(1,290円/月)もありますが、だらだらと勉強しても身につかないと思いますので、1ヶ月集中して取り組むのが勉強効率も高いと思いますし、お得です。

この方法だと、仮に2ヶ月かかったとしても3,000円くらいになり、書籍を1冊購入するのとそこまで変わらない金額になります。

Progateのいいところは、「プログラムの実行環境を整えなくていい」ところだと思っています。環境構築っていろいろインストールが必要だったり、いきなりコマンド入力必要だったり、ネットの情報を参考にやってみてもエラーが出てしまって解決できなかったり、初心者がつまづきがちなところだと思います。そういうのをすっとばして「コードを書いて実行してエラーに対処する」ことに集中できるのがとてもいいです。

ということで、「プログラミングをやってみたいけど、どこからはじめたらいいのかわからない」という人にはまずProgateをおすすめしています。

paizaラーニングも良さそう

paizaラーニングも有名ですよね。こちらは講義が1本3分の動画形式というところが特徴です。

Progateよりも講座の種類が多そうです。無料で受けられる講座もありますが、有料プランだと月額1,078円からということでかなりリーズナブルですね。こちらも、Progateと同じで1ヶ月契約にして短期集中で講座をやり終えるのがいいんじゃないかと思います。

わたしはやったことがありませんが、サイトを見てみた限りだと、UIはProgateの方がわかりやすいし、かわいいかな?

あと、paizaは日本のIT企業のコーディング試験対策のスキルチェックも運営しているので、それ向けの講座もあるようで、Progateよりも実践向きかもしれません。

わたしはC++も勉強したいので、今度やってみようかな。

プログラミングの訓練方法〜基本を定着させる

Progeteのようなプログラミング学習サービスはわかりやすいし楽しくていいのですが、「自分でコードが書けるようになる」には訓練が必要です。

はやたすさんのUdemyの演習問題パック

そこでわたしがとりくんだのは、はやたすさんの「Python演習問題100問パック〜データ型・制御構文編〜」です。

わたしがやったときはKindle本で、たしかUnlimitedだったと思うのですが、現在はUdemyの講座になっています。Progateの次に学ぶ!Python演習問題100問パック!〜データ型・制御構文編〜

プログラミングする上で、if, forの「制御構文」と、数値型、文字列型、リスト、タプル、辞書などの「データ型」の扱いに習熟していることがとても重要です。

この講座では100問の練習問題で特訓することができます。

はじめてやったときはかなり難しくて、相当苦労したのですが、自分の頭で考えて試行錯誤しながら問題を解くことで確実にプログラミングスキルがアップしたので、とてもおすすめです。

『実践式はじめてのPython問題集まとめ』もおすすめ

また、書籍だと「実践式はじめてのPython問題集まとめ」シリーズも良いです。

3冊出ていますが、どれもKindle Unlimitedに加入していると無料で読めます。

はやたすさんの講座と比べると一問一問が簡単なので、自信がない人はこちらを先にやってもいいかもしれません。

英語が苦手じゃなければLeetCode

あと、英語に抵抗がない人は、LeetCodeというプログラミングスキルを確認するサイトもおすすめです。こちらは主にアメリカのテック企業のコーディングスキルテスト対策などで使われるサイトです。いろいろな問題があるのですが、「Study Plan」というところを見ると、問題がいくつかパックになったものがあります。わたしはいま「Programming Skills」というStydy Planを進めています。たのしい!

PythonだけでなくCやC++、Javaなど多数の言語で問題を解くことができます。課金プランもありますが、普通に解くだけなら無料です。

プログラミングの訓練方法まとめ

ということで、難易度順にまとめると

  • 「実践式はじめてのPython問題集まとめ」(一番簡単)
  • Progateの次に学ぶ!Python演習問題100問パック!〜データ型・制御構文編〜(ちょっと難しい)
  • LeetCode(英語が苦手じゃなければ&上二つをやり終わってからがいいかも)

という感じです。

「自分の頭で考えて問題を解く」のはプログラミング上達のためには必須なので、これらのサイト・講座・書籍などを利用して頑張ってください!

データサイエンスの勉強法

データサイエンティスト検定とG検定のテキストはよくまとまっている

試験を受けなくてもいいのですが、『データサイエンティスト検定公式リファレンスブック』と『G検定公式テキスト』は必要な知識がよくまとまっているのでおすすめです。

DS検定のテキストのほうは、統計知識やエンジニアリング力・ビジネス力に関する知識もまとまっているので、まずパラパラと読んでみて、どういうスキル・知識が要求されているのか確認すると、今後の勉強の見通しが立つと思います。

G検定のテキストのほうは、誌面の都合もあるのか一つ一つの用語についての説明が少なく、わかりやすいわけではないのですが、ディープラーニングの基礎知識や重要なモデルの紹介など、よくまとまっているので、これを参考に勉強を進めると効率がいいと思います。

じつはわたしはG検定のテキストのCNNの説明は全然よくわからなかったんですよね…『ディープラーニングAIはどのように学習し、推論しているのか』はとてもわかりやすい説明が載っているのでおすすめです。

G検定の勉強方法と対策についてはかけだしデータサイエンティストのG検定合格体験記にまとめています。

統計知識は統計検定2級を受けよう

統計のスキルについてですが、明示的に要求されることは少ないものの、ベースの知識として重要なので、できたら統計検定2級をとっておくといいと思います。試験勉強については以前に記事(はじめてからの統計検定2級合格体験記)を書いていますので、参考になさってください。

基本のpandas, NumPyに慣れる

データサイエンスのコーディングに関する書籍は、まずは『実践式はじめてのPython問題集まとめ numpy pandas編』からやるのがいいかなと思います。こちらもKindle Unlimitedに加入してると無料で読めます。

データサイエンスを学べる入門の本

あと個人的なおすすめは「Python実践100本ノック」シリーズです。「実践」とありますが、分量と難易度が入門にちょうどいい感じです。

『Python実践データ分析100本ノック』は初版の方を読みましたが、Pythonプログラミングがある程度できて、はじめてデータサイエンスをやってみる、という人にとてもいい難易度だと思います。

『Python実践データ加工/可視化100本ノック』はpandasによるデータ加工やmatplotlibでのグラフプロットについてよくまとまっています。

『Python実践AIモデル構築100本ノック』はScikit-learnのモデル群のコード例がたくさん載っていて、モデルについての知識を入れるためにもいいと思いました。

『Python実践機械学習システム100本ノック』は、機械学習モデルを作るというよりもBIダッシュボードを作るという感じです。機械学習システムを構築するにあたっての手順がわかります。

学習する順番としては

  • 『Python実践データ分析100本ノック』
  • 『Python実践データ加工/可視化100本ノック』
  • 『Python実践AIモデル構築100本ノック』
  • 『Python実践機械学習システム100本ノック』

がいいかなと思います。

あと、類似の書籍としては、データサイエンティスト協会の『データサイエンス100本ノック構造化データ加工ガイドブック』もあります。こちらはわたしは未読なのですが、よくまとまっていていい本みたいです。この本は同じ問題に対してPython, R, SQLの3つの言語での回答と解説が載っているというのが特徴です。

同じ内容のコードがGitHub上にあるのですが、解説は(有志の方がQiitaに上げてくださったりはしていますが)ないので、初めての方は書籍を購入するのがおすすめです。

あと、入門の書籍としては、わたしは読んでいないのですが、「Python〇年生」シリーズの『Python2年生 データ分析のしくみ』『Python3年生 機械学習のしくみ』もわかりやすいようです。このシリーズはフルカラーでキャラクターがかわいいです。

本で勉強するときは、自分にとって難しすぎる本を選んでも遠回りになるだけなので、わからなかったら人に聞くか、本のレベルを下げる方がいいです。『Python〇年生』シリーズからはじめるのもいいと思います。

ディープラーニングに詳しくなる

ディープラーニングに関しては、G検定のテキストがよくまとまっているので、まずそちらを読むのがおすすめ。

先ほど紹介した『ディープラーニングAIはどのように学習し、推論しているのか』は理論の部分がとても丁寧に書かれていて、これ以上わかりやすい本はないんじゃないかな?と思うのでとてもおすすめです。(タイトルがあんまり良くないよね…)

以前書評を書いた『物体・画像認識と時系列データ処理入門 第2版』はTensorFlow, Keras, PyTorchそれぞれでのコーディングの方法が書いてあります。理論とコードのバランスがよくわかりやすかったです。時系列データはテキストデータを扱います。

書評のブログ記事は 書評『物体・画像認識と時系列データ処理入門 第2版』です。

あと、『Python3年生 ディープラーニングのしくみ』もよさそうです。

動画学習

じつはわたしは動画で勉強するのが得意ではなくて…音からよりも文字から情報を取得する方が得意みたいです。逆に動画の方が頭に入ってくるというタイプの方もいらっしゃいますよね。

動画だと講師のPCの画面を見ることもできたりして、初心者はつまづきにくいかもしれません。かめ れおんさんのUdemyの講座のシリーズは評判が良いようです。少し値が張りますが、動画で勉強するのが好きな人はこちらもいいかもしれませんね。かめ れおんさんのX (Twitter)@usdatascientist ではときどき割引クーポンの告知もされているので、気になる方はチェックしてみてください。

あと、YouTubeだと スタビジ【誰でもAIデータサイエンス】byウマたん という人の動画は短く良くまとまっていてわかりやすいです。この方はUdemyでも講座を出していらっしゃいます。

Udemyはときどきセールをやっていて、1万円を超す講座が1,200円になったりするので、こまめにチェックしてみてください。

データサイエンスの勉強法まとめ

いろいろ書籍を紹介してきましたが、結局のところ書籍で勉強できることには限界があるので、ある程度基本的な知識を入れたらあとは実践していくしかないと思っています。

データサイエンス業務に参画するのが一番ですが、自己研鑽としてはKaggleSignate, Nishikaなどのデータ分析コンペをやってみるとよさそうです(わたしもやらねば!)。

データエンジニアリング力を高める勉強法

ITパスポートや基本情報を受けよう!

ITパスポートや基本情報技術者試験の内容を頭に入れておくのが望ましいです(わたしはどちらも持っていませんが…)。業務の現場ではあたりまえのようにIT用語が飛び交うので、基本情報レベルの用語の知識がないと理解が難しい場合があります。

基本情報は2023年4月から試験の形式が変わり、試験センターでいつでも受験できるようになりましたし、問題も簡単になったと聞きますので、受けてみるといいと思います(わたしも一年以内に取ります!)。

ITパスポートの難易度は分かりませんが、こちらも通年受験できますし、まずはここから一つずつレベルアップしていくのもいいと思います。(ITパスポートバカにしてる人も多いけど、コスパはともかくとして勉強のとっかかりとしてはとてもいいと思いますよ!)

試験対策というだけなら、過去問だけで受験するという猛者もいるようですが、知識が身につくことが重要だと思うので、教科書は購入して一度は目を通すことをおすすめします。あ、もちろん、資格試験対策としては過去問対策が重要です。過去問はIPAのサイトからもPDFが取得できますし、午前問題の対策としては「基本情報技術者試験過去問道場」は解説もあります。(このサイト運営している人すごいですよね…!)午後問題に関してはそれ専用の参考書を買った方がいいと思います。

Docker

あとDockerとコマンドライン・シェルスクリプトについての知識はすべてのベースになるので、勉強しておくことをすすめます。

Dockerは簡単にいうと「実行環境をひとまとめにする」ためのツールです。「実行環境がひとまとめになったもの」をDockerコンテナといいます。これによって、誰でも同じ環境を再現することができるようになります。とくにデータサイエンスをやっているとライブラリ間のバージョンの競合関係が多発するので、うまくいく組み合わせをまとめておくのはとても大事です。さらに、チーム開発においても実行環境をそろえることは重要です。

Dockerについては、わたしは『さわって学ぶクラウドインフラ docker基礎からのコンテナ構築』で勉強しました。こちらはKindle Unlimitedに加入していると無料です。この本はちょっと古い本ですが、基本的な内容に大きな変更はないので、問題ないと思います。

もっと新しい本で勉強したい、という方は、『Docker実践ガイド第3版』『仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん』も良さそうです。

また、 かめ れおんさんのUdemyの講座 もわかりやすいようです。

コマンドライン

コマンドラインはいわゆる「黒い画面(ターミナル)に打ち込む魔法の呪文」みたいなやつです。

開発はUbuntuというLinuxのディストリビューション上にDockerで環境構築をして行うことが多いと思うのですが、その際にファイルを作ったり操作したり、ほかにもファイルを検索したりなどなど…コマンドでいろんなことができます。

わたしは『6日間で楽しく学ぶ Linuxコマンドライン入門』で勉強しました。この本はとてもわかりやすいし、つまづくポイントを押さえてあるので、とてもおすすめです。書評のブログ記事は書評『6日間で楽しく学ぶLinuxコマンドライン入門 コマンドの基本操作を身につけよう』です。これもKindle Unlimitedで無料で読めます。

ある程度この本で知識があれば、あとはChatGPTに聞くといい感じにコマンドを教えてくれるのでそれを使ってもいいと思います。ただし、コマンドはPCに破壊的な処理もできてしまうので、基本的なことは理解した上で注意して実行してください。

シェルスクリプト

シェルスクリプトは、簡単にいうと「複数のコマンドをファイルの形にまとめたもの」です。Pythonプログラムを実行するときに、実行時引数が複数ある場合も多く(たとえばファイルのパスとか)、それらを実行のたびに入力するのは面倒です(コマンド実行履歴があるとはいえ)。また、フォルダ作成からプログラムの実行までを引数をちょっと変えて繰り返して実行したいときなどもあります。そういうときにシェルスクリプトはとても便利です。

シェルスクリプトについては、わたしは実務の中で学んでいった感じなのですが、『覚えて便利 今すぐ使える!シェルスクリプトシンプルレシピ54』はよさそうです(あとで購入して書評を書くかも)。

AWS

AWSは機械学習システム開発にはなくてはならないサービスです。同様のクラウドサービスとしてはMicrosoftのAzureやGoogleのGCPもありますが、一番シェアがあるのはAWSなので、ひとまずこちらを勉強しておけばいいと思います。

基本的にはクラウドサーバーであるEC2と、クラウドストレージであるS3というサービスを使うことが多いと思うので、それらについて重点的に勉強しておくといいと思います。

AWSは無料枠で試せるチュートリアルが用意されていますので、まずはこちらを試してみるのがおすすめです(わたしも今度やってみます)。こういうのはやっぱり使ってみないと身につかないので、できたら自分でいろいろ作ってみると身につくのではないかなと思います。あ、従量課金制なのでご利用は計画的に。

AWSには200を超えるサービスがあります。AWSでインフラを構築することはそれだけで一つの職種(インフラエンジニア)ですが、データサイエンティストも基本的なことは理解しておく必要があります。AWS認定資格の中で一番簡単な「クラウドプラクティショナー」を受験するのもいいと思います。わたしの勉強法はブログ記事 はじめてからのAWSクラウドプラクティショナー合格体験記 にまとめています。ひたすら暗記になりますが、どんなサービスがあるのかを頭に入れておくのは大事です。

わたしは今後、クラウドプラクティショナーの一個上の資格である「ソリューションアーキテクトアソシエイト (SAA)」を受験しようと思っています。がんばる!

おわりに

ちゃんとデータサイエンスを仕事にし始めたのは、現職になってからなので、じつはまだ1年半くらいです。短い!

それまで研究で分析をしていたとはいえ、どちらかというと実験がメインの業務だったことを考えると、経験値は低かったのですが、いまは(助けてもらいつつ)それなりに仕事できている…はず。

こうやって書き出してみても結構勉強していて、自分がんばったな〜と思っています。

この仕事は継続的に自学するのはあたりまえなので、これからもコツコツ勉強して、inputしたものはブログにoutputする、というのを続けていきます!

一年以内に基本情報とAWS SAAを取りたいなあ。

この記事がどなたかの参考になれば嬉しいです。

コメント

タイトルとURLをコピーしました