見出し画像

公務員を辞めて機械学習エンジニアになって42に入学するまで

以前にも自己紹介noteを書いている気がしますが、最近また環境が変わったのと、42Tokyoが公式note始めましたってことで、改めて

・公務員の事務辞めてエンジニアってどういうこと?
・どうやって42に入って、機械学習エンジニアになったの?
・どんな勉強してきたの?
・これからどうしていきたいの?

について、書いていきたいと思います。

この投稿を見て、42に興味を持ってもらえたり、エンジニア楽しそうだなと思ってもらえたり、そんなエンジニアへの道筋の参考になってもらえたり、はたまた転職しようかなと考えてる人の後押しになれたりしたら嬉しく思います(欲張り)。

ちなみに、最初は私が機械学習エンジニア&42の生徒になった経緯を話していきます。

もし私が学んできた書籍等にご興味ある方は「2020.2~8:機械学習エンジニア兼42の学生として」からご覧ください。

私はこんな人です

とりあえず、今の私の話を少しだけ。

・機械学習エンジニアをやっています(一応)
・42Tokyoで勉強中です
・数学が好きです
・音楽をやってます(ギター、ピアノ)
・ボルダリングやってます
・割といろんな本読みます

最近はやりたいことがたくさんで、日々いろんなことに手を出しています。
これからやりたいことの話は最後にしようかなと思います。

とりあえず、プログラミングの勉強とかいろいろしているのですが、そんな毎日勉強みたいな生活のきっかけになったのは、有名なあの人の影響でした。

2018.6~2019.1:きっかけはあの人

自分ではそんなに「勉強」って感じではないんですけど、勉強が一応趣味みたいな、そんな感じになったきっかけを与えてくれたのはあの有名なDaiGoさんでした。

DaiGoさんのYoutubeをひとつでも見たことある人はわかると思うんですけど、まぁいろんな知識がぽんぽんと出てくる人で、私もあぁなりたいなぁと当時は思ったわけです。

そんなDaiGoさん信者だった私は、当時の放送の中の「5分からでいいから毎日の習慣を作って勉強を始めてみよう」という内容を実践して、まずは一日1ページという勉強から始めました。

それが2年位前ですね……。当時はスプラトゥーンガチ勢だったので、エクセルマクロの本をちょろっと読んで、それからスプラトゥーンを4, 5時間やるような毎日を送っていました笑

ちなみにエクセルマクロはこのときが初めてで、公務員として事務仕事をしていたので、業務が楽になったらいいな~くらいな感覚で始めました。

それから半年くらいかけて勉強の習慣の時間の割合が増えて、昨年のはじめくらいには、仕事後はほとんど勉強みたいな毎日を送ってました。

その頃のメニューはたしかこんな感じです。

・高校数学の復習(大学が数学科だったので完全に趣味)
・高校物理の復習(量子力学にあこがれてたので復習から)
・エクセルマクロ
・機械学習(AIに興味があった)
・ビジネス書(たしか1カ月に2冊くらいのペース)
・簿記(2級)
・ピアノ
etc...

2019.1~8:仕事か趣味か

この頃から仕事が忙しくなって、少し勉強の時間が圧迫されるようになっていました。

しかし、時間は減ってもやりたいことは増えていく一方で、このnoteを含めたブログを始めたのもこの頃でした。

ブログの内容は主に3つあって

・本を読んだ内容のアウトプット
・Ececlの記録
・名言を毎日ツイート

で、今は本のアウトプットはほぼしていませんが、Excelの代わりにちょくちょくqiitaなどで技術系のブログを書いたり、名言は変わらず毎日つぶやき続けたりしています。

本のアウトプットもDaiGoさんの影響で、アウトプットした方が知識として残りやすいと聞いたので始めました。

習慣にしたいことは最初は週に4日以上、できれば毎日やった方がいいということを聞いていたので、毎日速読で1冊の本を読んで、1つブログを書き上げるということをやろうとしたのですがさすがに無理で、1日で1冊読んだら次の日には1つブログを書くというサイクルで去年の冬くらいまでやっていました。

Excelも同じような感じで知識を定着させるために最初の1カ月は毎日書いていました。

そんな感じでだいぶ忙しくしていたのですが、別にその結果のほとんどは仕事で活かせるわけでもなく、勉強という趣味を趣味のままで終わらすのかをずっと迷っていました。

私は公務員だったので、副業もだめですし、安定している代わりに仕事上では劇的な変化もありません。

ときには淡々と嫌な仕事をこなさなければならない時もあって(どんな仕事でもそういうときはあると思いますが)、ある意味で向上心は邪魔になることもあります。

そんな生活が劇的に変わったのが、去年の9月でした。

2019.9~11:Webエンジニア

去年の9月頃に、「やっぱり勉強という趣味を仕事にしたいな」と思った私は、すでにやっていたプログラミングでお金を稼ぐにはどうすればいいのかを調べました。

たしか「プログラミング お金」みたいなずいぶん頭の悪そうな検索の仕方をしていた気がします。当時の私はchromeを「コラム」と読むくらい、割とその界隈には弱い人間でした。

そこで検索にヒットしたのが「Webエンジニア」でした。

最初はそんな感じのよこしまな気持ちでエンジニアを目指したいたわけですが(全然それでもいいと思いますが)、紆余曲折あって、色々調べていくうちに東京フリーランスという会社(当時は会社じゃなかった気がする)がやっている「デイトラ」に出会いました。

そのデイトラは当時は無料でやっていて(今はちょっとわからないです)、無料なのにずいぶん実践的な内容までやっている印象で、独学で勉強している身としてはとても助かるツールでした。

そんな中本当にぴったしなタイミングで、東京フリーランス主催の「30DAYSブートキャンプ」というプログラミング合宿が開かれるということを知って、どうしても行きたかったので急遽仕事をやめることにしました。

当時の職場の方々は本当に暖かく送り出してくれて、こんな温厚な職場なかなかないんだろうなと思いつつも、挑戦したいという気持ちの方が上回っていました。

ということでそのままWebエンジニアになりそうな雰囲気ですが、実はそうではなく、事前の合宿の面接で「実は機械学習に興味がある」ということを話していたのですが、東京フリーランスのメンバーの一人が機械学習の経験があって、その話を聞く目的も含めて合宿には参加していました。

結果的にそこから今いる会社を紹介してもらったり、機械学習を含めたエンジニアのいろいろな技術や仕事の仕方について教えてもらったので、本当に参加してよかったと思っています。

さらにその合宿中に偶然42Tokyoについて知っている人がいて、一緒にWebテストを受けようという流れになり、そして今年の1月、42Tokyoの入学試験であるPichineをうけることになりました。

2020.1:42Tokyo-Piscine

これ読めないですよね。ピシンって読むらしいです。私は最初フィジンって言っていました。

Piscineは約一カ月かかる試験で、一緒に受ける人たちと協力&競い合いながら課題をこなしていくという内容になっています。

今はなかなか一つの場所に集まってみんなで学びあうということはできませんが、私が受けたときはまだその影響はなかったので、当時すでに仕事を辞めていた私は毎日15時間くらい会場に行ってコードをいじっていました。

全くプログラミングをしたことない人からプログラミングを仕事にしている人まで、みんなで切磋琢磨していて、テストであるPiscineからすでに魅力的な学習環境だなと感じていました。

そんなPiscineで、みんなに助けられたことと、そしてフルで参加できたこともあって、嬉しいことに私はMVP(ある総合スコアみたいなもので一位)をとることができました。

まぁかなり僅差ではあったんですけどね。

詳しい試験内容等は話せないことになっているのですが、今は一部オンラインでもやっているようなので、ご興味ある方はぜひ上のURLから覗いてみてください。

2020.2~8:機械学習エンジニア兼42の学生として

ということで、無事42に入学し、転職先も決まり、ゆっくりと腰を据えて勉強に取り組めるということで、現在まで勉強漬けの毎日を送っています。

というのも、仕事がまだ研修段階で、しかも基本リモートなので、ひたすら勉強しているわけです。

ということで、ここからはどんな勉強をしてきたのかについて少し詳しく話していきたいと思います。

G検定

ディープラーニングの基礎知識を有し、適切な活用方針を決定して、事業活用する能力や知識を有しているかを検定する。

という検定です。

そもそも機械学習って何?という方もいると思いますが、そういうことを知ることも含め、仕事にするのであればなおさら「プログラミング」以外の部分も知識として知っておいた方がいいと思います。

検定をうける必要は必ずしもありませんが、そういった知識が体系的に学べるので、私はよく検定の勉強をしたりしています。

今思えば公式が勧めている本は結構良い本が多くて、G検定関連では私は以下の本を読みました。

・人工知能は人間を超えるか
・AI白書

「人工知能は人間を超えるか」はとても読みやすい読み物的な本で、機械学習って何?という方には特におすすめです。

AI白書は辞書みたいな感じでした……。G検定が欲しいだけなら、必要ではないかなって印象です。

数学

機械学習をちゃんとやるのであれば、ある程度の数学の知識が必要です。

レベルでいうと大学の数学もある程度必要になってきます。数学が苦手な方にはなかなかつらいですよね。

もちろん、数学をしらなくてもコードは書けますけど、その仕組みまでしろうとするとやはり数学が必要になるので、結局はどんな目的で機械学習が必要か……というところに行きつくのかなと思います。

とまぁそんな数学が必要かという議論はとりあえずおいておいて、どんな数学が結局必要なの?ということを優しく解説してくれているのが以下の本でした。

・人工知能プログラミングのための数学がわかる本


機械学習に必要な数学の基礎が載っています。

中学数学がわかれば一応読めるようになってるはずです(高校数学は知っているともっと読みやすい)。

例えば必要な大学数学として線形代数とか、微積分とかがあるんですけど、普通の数学の本とは違いこの本は「機械学習について必要な部分だけ」割と過不足なく載っているので、初学者の方には結構おすすめです。

この本を読んで数学に興味がわいてきたら、以下の本と動画がおすすめです。

・スッキリわかる線形代数
・ヨビノリの線形代数

微積分の本で優しめの本はまだ読んでないので、ちょっとご紹介できません。

あとは数学科出身の私の趣味みたいな感じになってしまいますが、このシリーズを今は読んでいます。

・基礎数学1線型代数入門
・基礎数学2解析入門

これらは入門と書いておきながらかなりレベルの高い本なので、あまりおすすめはできません。ですが、かなり深い内容まで書いてある名著ではあるので、機械学習の勉強を機に数学にどっぷりはまりたい……という方にはおすすめです。

統計

機械学習はデータ分析の手法の一つみたいな感じでもあるので、データを読む力はやはり必要になってきます。

私は数学科出身ではありましたが、あまり統計はやってこなかったので、ここに関してはしっかりと勉強して、統計検定2級も最近取得しました。

・統計が最強の学問である
・統計Web
・統計学入門

統計に初めて触れる方は、どんなことを学ぶのかな?ということを知ることができるので、1冊目から読むことをお勧めします。

統計Webは統計2級検定レベルの内容わかりやすく、しかも無料で書いてあるので、とてもおすすめです。

3冊の目の統計学入門は例のごとく全く入門な本ではないので、初学者の方にはお勧めできません。ですが、統計をやるものなら誰しも一度は目にする本、みたいな感じだそうなので、しっかり統計をやりたい人にはこのシリーズはお勧めです。

Python

機械学習をするうえで一番使われているプログラミング言語は、たぶんPythonだと思います。

Pythonの基礎はすでに勉強していたので、そのころに学んでいたものから載せていきたいと思います。

・Progate
・みんなのPython
・入門 Python 3

初学者の方は、ProgateでとりあえずPythonに触れてみるのがいいと思います。とてもやさしく解説してあって、環境構築もいらないので手軽に学べます。

そのあとは

・本かWebで体系的に学ぶ
・いきなり何か作ってみる

の2択だと思いますが、私は体系的に学ぶ方からやりました。

今思えば何か作ってみるのも面白かったかなと思いますし、覚えが早かったかもなと思います。

先ほどあげた本の中であれば、どうやら入門Pythonは辞書的な扱いで読む人もいるくらいかなりしっかりとした本なので、みんなのPythonがお勧めです。

他にもWebサイトだと、こんなサイトがおすすめです。

・Paiza
・DataCamp

Paizaはあまりやったことないのですが、結構良いと聞きます。

DataCampはすべて英語なのですが、ついでに英語も勉強したい!とか、英語大丈夫だよ~というかたにはお勧めです。

ちなみに、英語の文献は読めるに越したことはないので(まぁ最近は英語翻訳がだいぶ良くはなってきましたが……)、私は英語の勉強目的でDataCampをやっていました。

機械学習

これがメインディッシュという感じですね。私が学んだ機械学習の本をあげておきます。

・ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
・PythonとKerasによるディープラーニング
・Python 機械学習プログラミング 達人データサイエンティストによる理論と実践
・はじめてのパターン認識
・パターン認識と機械学習

1冊目の本は、流行りのディープラーニングについてをゼロから実装するという内容になっていてとてもおもしろかったです。このシリーズはかなり人気があるようで、優しく書かれているので初学者の方ににもおすすめです。

2冊目の本は、そのディープラーニングを今度は「使う」ことに着目している本です。理論を追わなければ初学者の方にもおすすめですし、そうでない方にもkerasというライブラリの実践的な使い方が余すことなく書いてある本なのでとてもお勧めです。

例えば、画像認識や、機械に文章を書かせたり、画像を合成させたりなんかもできて、とてもおもしろかったです。

3冊目の本はディープラーニングに限らずいろいろな機械学習の手法が書いてある本です。少し古いバージョンで書かれていたり、理論的な部分は必要最低限しか書かれていなかったりするので、理論については次の本を、プログラムについてはまた別の本を探すのがいいかもしれません。

4冊目の本は、機械学習の理論的な本で、結構説明が省かれている部分もあって読み応えのある本です。ですが、そもそも機械学習の理論をちゃんとやろうとすると、理工学部の3年レベルくらいにはなってしまうので、これでも優しめに書かれている本なのかなぁと思いました。

5冊目はとても有名な本のようで、ですが内容はかなり難しいものになっています。学部レベルからちゃんと数式を追うと博士課程レベルまで書いてあるそうなので、私も勉強中というところです。かなり高い本ですが、英語版だと無料で読めたかと思います。

また、本だけではなく、コンペに出るのもとても勉強になります。

・kaggle

腕試しという意味でももちろん大事ですが、ほかの人がわかりやすくまとめてくれたコードなどがあって、最新の手法を知れるのも魅力の一つです。

少し機械学習に触れたあとにkaggleに挑戦するのは、とても勉強になると思います。

プログラミング

ここからは少し周辺知識という感じです。

機械学習とはいってもプログラミングであることには変わりないですし、かなりの計算量が必要になることも多いのでアルゴリズムの知識もあるに越したことはないのかなって思っています。

ということでそんなアルゴリズムの勉強として、私はC++という言語を使って競技プログラミングをしています。

・Atcoder

Atcoderをやるならとにかくこのサイトがお勧めで、C++以外でやる方にも参考になると思うので、載せておきます。

他にも、こっちは(私は)Python縛りで、プログラミングを使ってゲームをするというちょっと変わった競技プログラミングもしています。

・Codingame

こちらは英語で書かれているので少し難しく感じるかもしれませんが、優しいチュートリアルもあります。

周辺知識

機械学習をするとなると、例えば大きなデータをどこに格納しておくかとか、それを集めるためにはどうしたらいいかとか、また機械に組み込んだりアプリにしたりするのにはどうしたらいいかなどを考えることもあると思います。

意外に、純粋に機械学習についてだけ考えている人はごく少数なのかなという印象です。

ということで、ネットワークの知識や、ソフトだけでなくハードの話もできれば知っておいた方がエンジニアとして深みが出るのではないかなぁと思って、結構いろいろ手を出しています。

・Webを支える技術
・CPUの創りかた
・3分間ネットワーキング
・応用情報技術者 合格教本

この中だと、3分間ネットワーキングはわかりやすくてしかも無料なので、おすすめです。

他にも42でいろいろな勉強をしていて、その知識が結構機械学習の中でも役に立っています。

42はあまり内部の情報を公開しないので(多分)、どんな勉強をしているのかとかは具体的に言えないのですが……。

あと、ほかにも何かやっていた気がするんですけど、だんだん長くなってきたので(とっくにかなり長い)、このへんにしておこうかなと思います。

あっ、最近自作PCも組んだんですけど、結構勉強になるし比較的安く性能の高いものが作れるので、おすすめです!

今後やりたいこと

ということで、最後に今後やりたいこと、勉強したいことを並べておきます。

ここからは雑談みたいな感じです。

・AWSなどのクラウド系サービス
・ゼロからコンピューターを作る
・機械学習コンペに出まくる
・機械学習を使ったアプリ開発
・量子コンピューターの勉強
・理系科目全般の学部レベルの勉強
・友達になってくれるAIを作る

思いついた順に書いたので順番に深い意味はないです。

今後インターネットの速度が速くなって、手元のコンピューターがほとんど計算する必要がなくなったら、どんどんハードは小さくなっていくと思います。

そうなったらクラウド上で扱えるサービスには詳しく成っておいた方がいいと思うので、AWSには興味があります。

また、次の機械学習みたいなインパクトを与えるものは量子コンピューターだと思っているので、量子力学について学びつつ、量子コンピューターを扱えるようになりたいなって思っています。

やっぱりコードの書き方とかちょっと違うんですかね……まだ全然知らないですし、ほかにもやりたいことがたくさんあるので、少し学ぶのは先になってしまうかもしれません。

あとは、やっぱり友達になってくれるような、いわゆる「心」を持っているようなAIを作るのにはロマンがありますね~。

それは機械学習ではできないだろうといわれていたり、そもそも作れるのか~という議論があったりしますが、夢を語るのは自由です。

ですがそのためにも、広い視野で考えられるようになるために理系全般の知識が欲しいところだなって思っています。

おわりに

ということで、なかなかえぐい文字数になってしまいましたが、これで最後になります。

今回の投稿は

・今の私
・これまでの私
・これからの私

について書いてきました。

最初にも話しましたが、この記事の内容が誰かの参考になったら嬉しく思います。

……というのも、私も誰かのブログや、動画やなんかを見て、勉強の仕方や生き方なんかを参考にしてきたからです。

例えば最初にあげたDaiGoさんや東京フリーランス、またその後の進路や勉強についてはLilianさんのこの記事が参考になりました。

とはいっても今あげた方々みたいに何かを成し遂げたわけでもないので、誰かの役にというのはおこがましい話ではあるかもしれません……笑

そんなまだまだな私の長い投稿を最後までみてくださって、ありがとうございました。

とりあえずこれが今の私ではありますが、今後どんなことしてくのかなとか、どういう投稿してるのかなと思った方は、ぜひTwitterやnoteのフォローをしてください(露骨な宣伝)。

この記事が参加している募集

自己紹介

この記事が気に入ったらサポートをしてみませんか?