はじめに
CTOの椎名アマドです。自分は5年以上前からMOOC(Massive Open Online Course)というオンライン学習系サービスを定期的に聴講して色々と勉強するようにしているのですが、最近は特に面白いものに巡り会えたので、改めて今まで受けてきたコースの中で面白かったものを紹介しようと思います。
ちなみに自分が受けてきたものは全て無料です。最近では有料で実際に修了証明書まで出るものも増えてきましたが、自分はすべて無料のものを受けました。無料でこのレベルの授業がオンラインにゴロゴロ転がってるとは本当に良い時代になったなぁとつくづく感じますし、無知や勉強不足を言い訳にできない時代にもなったなと気を引き締めなければと思っております。
ここに紹介しているものも、それ以外のものも含め、ちゃんと内容を吸収することが出来ればその分野の知識レベルにそれなりに自信を持つことが出来るのではないでしょうか?
特に中級・上級クラスのコースに関しては、ちゃんと学習できればそれだけでその分野のプロフェッショナルの一歩目を踏み出せるレベルに立てると思います。
ちなみに自分は手書きのノートを取ったり取らなかったりですが、それでも全部をすっと頭に入れるのは非常に大変で、今でもちゃんと知識として吸収できているかどうか自信を持って言えません。
おすすめのMOOCサイト
まずはサイト単位での紹介。
Udacity
Google, Reddit, Uber などのトップレベルのエンジニアが講師を勤めている、CS中心のMOOCです。題材もプログラミングの基礎から、機械学習・人工知能、モバイルアプリ開発にも手を広げており、今の技術トレンドもしっかり追ったコースのセレクションです。
あと、ここは有料の修了証明書つきのコースも充実してるので、本気の人はそれに挑戦するのもありですね。
※一部日本語字幕あり
Khan Academy
Youtubeビデオから始まった非営利団体です。コースは数学・科学・経済・歴史と多岐に渡り、内容も非常に深くまで及びます。しかし説明が非常にわかりやすく頭に入ってくるので、気軽に見ても学ぶことが多いです。最近はインタラクティブなプログラミングコースも開始しましたが、あくまで基礎を学ぶものなので一定レベル以上のエンジニアには参考にならないかと。
Coursera
CS系(プログラミング、機械学習、アルゴリズム等)からビジネス系、その他心理学など一部の学問まで、バランス良く揃えているMOOCです。講師も比較的わかりやすく、ちょっと気を抜いていても十分に理解できると思います。ただ個人的な感想としては量も質もCS系に寄っているように感じました。そしてここも有料コースがありますね。
※一部日本語字幕あり
Academic Earth
MIT, Stanford, Harvard などの授業がそのまんま見れるすごいMOOCです。授業の撮影なので、画質はちょっと粗かったり音声が悪いこともありますが、内容はやはり本場レベルです。入門クラスでもだいぶ難しいので、流し見ではかなり苦戦します。
※日本語字幕なし
自分の受講したおすすめコース
1. Udacity : Artificial Intelligence for Robotics
https://classroom.udacity.com/courses/cs373
つい最近受講したばかりの、自動運転AIの基礎コースです。画像認識や機械学習は触れず、どちらかというとロボットがどうやって周囲を認識し、経路検索をするか、のアルゴリズムの考え方にフォーカスしています。車の周りにある物体を確率論的に把握するベイズ理論やカルマンフィルターの話や、最短経路検索の話に入っていきます。2次元の小さな座標の中でPythonで実際にコードを書いて学んでいくので、センサーや画像認識などの複雑な話を抜きにして概念が理解でき、非常に面白いです。
自動運転という高度な技術もこうやってブレイクダウンしていくと仕組みが理解できるとすごく楽しいです。
2. Udacity : Applied Cryptography
https://www.udacity.com/course/applied-cryptography--cs387
暗号学の中級クラスです。シーザー暗号のような簡単な換字式暗号からXORに進むなど、歴史的に使われてきた様々な暗号方式をまずカバーしていきます。そこからモダンな公開鍵認証やRSAの仕組みにも入っていきます。
数式的証明などにも入り、だいぶ深い内容になっていきます。自分は全てをちゃんと理解しきれていないのですが、エンジニアをやっていると暗号技術は何かと触れるので、何度かこのコースは見直しています。
3. MIT : Introduction to Algorithms
https://www.youtube.com/watch?v=JPyuH4qXLZ0&list=PL8B24C31197EC371C&index=1
(Academic Earthより抜粋)MITのアルゴリズム・データ構造の入門講義です。自分が新卒入社した当時にがっつりノートを取りながら学んだ思い出があり、その知識は今でも活きている気がします。Big-O notation, omega notationなどの計算量の考え方の基礎から始まり、色々なアルゴリズムの計算量を数式と擬似コードで計算していくという流れで進んでいきます。ハッシュやグラフなどのデータ構造も、挿入・探索などの操作の計算量をちゃんと数式で証明していったりします。
情報系の大学に通った方にはもしかしたら当たり前な内容かもしれませんが、実はこのあたりの基礎体力が弱い方や「大昔にやったんだけど大体忘れた」という方は何かの機会に見直すと色々と知識がリフレッシュされるかと思うのでおすすめです。
4. Khan Academy : Electrical Engineering
https://www.khanacademy.org/science/electrical-engineering
電気工学全般の長いコースです。電圧や電流の基本的な考え方から、回路の読み方、DCとACの理解や計算方法にも入ります。結構ボリュームがあるので自分は後半まではいってないですが、後半にはフーリエ階級なども出てくるようです。
エンジニアをやっているとソフトウェアだけではなくハードウェアへの理解も必要なので、そういった時にはこのコースはすごくわかりやすいのでおすすめです。Khan Academyは本当に図や言葉の表現が「誰にでもわかるように」を意識しているので、ゼロから学ぶ人も安心だと思います。
まとめ
今回紹介したのは4つ程度ですが、自分はCS系以外も含めると今まで20ぐらいのコースは受けてきたと思います。全部終わったものもあれば、かいつまんだものもあり。サイトのコース一覧を眺めているとどんどん「あれも知りたい、これも知りたい」という気持ちになっていくので、今後もこれは続けていきます。「もっと体系的に知識を増やしていきたい」という方はぜひMOOCに手を出してみると良いです。
また、弊社では、子育て家族アプリFamm、カップル専用アプリPairyを運営しており、現在エンジニアを積極採用中です! 急成長中のサービスの技術の話を少しでも聞いてみたい方、スタートアップで働きたい方など、是非お気軽にご連絡ください! 採用HP : http://timers-inc.com/engineerings