こんばんはエンジニアの眠れない夜です。
プログラミングの勉強を初めて基本的な if文 や for文 を使えるようになったけど、これで一体何ができるんだろう?プログラミングのスキルってどうやって上げていけば良いんだろう?
と思っている方も多いのではないでしょうか?
そんな方のプログラミングスキルアップに役立つ無料で勉強できる動画を紹介します。
基本、英語のコンテンツですが、無料で本何冊分も勉強ができます。
英語が苦手な方も日本語字幕で見ればだいたいの言いたいことはわかると思うので英語だからといって恐れることはありません。
Udemyのような何万円もするコンテンツに引けを取らない優良なコンテンツがたくさんあります。動画を見ながら一緒に勉強しましょう!
プログラミングスキルの良し悪しは何で決まる?
プログラミングのスキルを測る要素には
- プログラムを速く書ける
- バグりずらいコードを書ける
- プログラムを綺麗に書ける
- 綺麗な設計ができる
- 高速な実装ができる
など、いろんな要素があります。
その他には「1つの言語について深く知っている」という要素もあります。
1つの言語でいろんなモジュールやフレームワークを使えるようになると、いくつもプログラミング言語を覚えなくても、1つの言語でいろんな事ができるようになります。
また、他の言語を勉強する時に既に知っている概念の学習コストは下がるので、この記事ではPythonを深堀りするためのモジュールやフレームワークを紹介していきます。
何系のプログラマーになる?
自分がどんなモジュールやフレームワークを使えるかで何系に強いエンジニアなのかが変わってきます。
例えば
- Djangoの使い方に長けている人はウェブ系(バックエンド)のエンジニア
- Requests、BeautifulSoup4、Seleniumの使い方に慣れている人はスクレイピングが得意なエンジニア
- numpy、pandas、Matplotlab が得意だとデータサイエンティスト系のエンジニア
- scikit-learn、TensorFlow, PyTorouch が得意だと機械学習系のエンジニア
- OpenCVが得意だと画像処理系のエンジニア
という感じで得意なモジュールによって、その人の得意分野が変わってきます。
機械学習はデータサイエンスの応用みたいな位置づけなので、データサイエンティストが使うモジュールを使いますし、画像を扱うときはOpenCVを利用します。分野によっては他の分野と組み合わせて、初めてその力が発揮されるものもあります。
自分の得意分野を決めつつ、できることの幅を広げるというのが理想だと思っています。
Pythonの勉強にオススメの動画まとめ
言わずとしれた最近は機械学習やデータサイエンス関係で人気の言語、Python。
処理速度が遅いと言われるが、やりたいことがサクッとできる幅広いモジュールが用意されています。
今回、紹介するモジュールを一通りマスターするとプログラミング関係でやりたいことは、ほぼほぼカバーできるようになります。
紹介している動画はブログに貼り付けると1つの動画になってしまっていますが、シリーズ物が多いです。
何時間もある動画は1本で完結。数十分で終わる動画は10〜30本の動画になっているので、続きを探してみてください。(通常、連続再生されます。)
Pythonの基本的な操作にまだ不安がある人やこの先紹介する動画が膨大すぎてちょっと見れない…という人はまずはこの動画を御覧ください。
4時間くらいまでは基本的なPythonの使い方、残りの2時間はPythonでよく使うモジュールやフレームワークの紹介をしています。
Django(ウェブサイト構築)
ウェブサイトやウェブアプリケーションを作りたいならDjangoがおすすめです。
他にもPythonのウェブ開発で使えるフレームワークはたくさんありますが、Djangoが1番人気で情報が豊富です。
ユーザー管理が必要なアプリケーションを作る時にも、登録画面、ログイン、パスワード再設定、を簡単に作れるようになっているので便利です。
また、大規模なウェブアプリケーションの開発にも耐えられる一例としては、Youtube が Django で作られているので相当大規模なプロジェクトにも耐えられるフレームワークであることがわかります。
Flusk (簡易ウェブサイト構築)
簡易ウェブサイトを構築するときは Flusk がオススメです。Hello World を表示するだけの簡単なウェブページなら10行以内で作れます。
下の動画ではFluskでできる深いところまで解説されているので Flusk だけでも相当色々できることがわかるはずです。
動画の後半では作成したウェブアプリケーションを自分のパソコンだけではなく、インターネットに公開するために必要な環境構築についても紹介されています。Fluskのウェブフレームワーク意外の部分でも役立つ解説が満載です。
Bootstrap5(ウェブデザイン、CSS)
Pythonではないですが、Django や Flask のデザインを簡単に整えたいと思っている方はBootstrapを勉強しましょう。
Bootstrapの使い方を覚えて、もっと綺麗なページを作りたい場合はBootstrapのテーマを購入するといいです。
デザイナーいらずでバックエンドエンジニアが綺麗なウェブページを作れます。
SQLAlchemy(データベース)
Pythonでよく使われるORMマッピングモジュールです。 データベースとのやりとりをSQLを書かずに オブジェクト指向でクラスの値を変更するような感覚でテーブルの読み書きができるようになります。
Requests (ウェブ上から情報を取得したり、投げたり)
ウェブ上から情報を(GET)取ってきたり、POST(投げたり)するときの定番のモジュールです。
16分の動画なので見やすいです。その割に利用頻度の高いモジュールなので費用対効果は抜群です。
BeautifulSoup4 (ウェブから情報取得、スクレイピング)
Pythonでスクレイピングをするときの定番のモジュールです。Requestsや次に紹介するSeleniumなどで取ってきたHTMLを解析するために使われます。いわゆるスクレイピングというやつですね。
BeautifulSoup4を直訳すると「美しいスープ4」意味不明です。
由来が気になったので調べてみると、英語でスープというのはドロドロした煮込まれたものというイメージで、あまり綺麗なものではないという例えのようです。
HTMLはごちゃごちゃしていて解析しづらいので、それを綺麗に、美しく解析できるツール→「BeautifulSoup(美しいスープ)」というのがこのモジュールの由来のようです。4はバージョンです。
Selenium(テスト、ブラウザ操作、スクレイピング)
Seleniumはウェブサイトをテストするときに手動でボタンをポチポチしたり、入力するのは手間なので、それを自動化するために開発されたツールです。Chrome、Safari、Firefoxなどをパソコン、スマホ両方で自動操作できます。マルチプラットフォームで開発しているウェブアプリケーションのテストに利用するととても便利です。
ブラウザでレンダリングするため、JavaScriptで表示されるような要素の取得が可能です。(ボタンを押したら表示される要素や文字です)そのため、Requestsでは取ってこれない値を取得できるのでスクレイピングには非常に便利です。レンダリングが必要な分、動作がRequestsの何十倍も遅くなります。
DOMの解析が可能なので、RequestsとBeautifulSoup4を1つにしたようなツールです。もちろんHTMLを吐き出すことができるのでBeautifulSoup4に入れて解析することもできます。
Xpath (DOM操作・スクレイピング)
XpathはHTMLを解析してほしい要素を指定するために使います。Seleniumでスクレイピングを極めたい人には必須のスキルです。BeautifulSoup4でXpathは使えないのですが、Seleniumで要素を指定するのに役立ちます。
そして、DOM操作はPythonに限らずウェブ関係のプログラミングをしているとよく出てきます。プログラミング言語に関係なく使える技術なので、早めに習得しておくと後々色んな所で使えて楽になります。
RegEx(正規表現・文字列操作)
RegEx(正規表現)はPython で import re
をすると利用できます。RegEx(正規表現)は他のどの言語でも利用できる技術なので、Python のプログラミングに限らずRegEx(正規表現)の使い方に集中した動画を選びました。
- スクレイピングで取り出した文字列から必要な部分だけを抽出したり、
- Django のURLの規則に利用したり、
- フォームを作ってユーザーが入力した時に正しいパターンにマッチしているかの確認
(電話番号・郵便番号・メールアドレスなど)
などに利用します。
どのプログラミング言語でも、エディターでも使えるので、結構重要な技術にも関わらずあまり重要視されていない(話題にならない)のがRegEx(正規表現)かなと思っています。
Python の実装に即した re モジュールの使い方を確認したい場合はこちら。上の動画を見てRegEx(正規表現)の使い方を抑えてから、下の動画でモジュールの使い方を確認する。というのが良いと思います。
動画を見るのが面倒な人はドキュメントを読んでも良いかもしれません。
Pillow(簡単な画像処理)
画像をリサイズ、回転、画像を重ねる、トリミング、簡単なエフェクト、テキストの挿入と言った簡単な操作ならPillowを利用します。一般的な画像の操作はPillowがあれば十分です。
日本語フォントのテキストを挿入したい場合は、OpenCVよりPillowの方が簡単です。
OpenCV(高度な画像処理)
Pillowではできないもっと高度なことをしたくなったときは、OpenCVを使います。
例えば
- 動画で撮影した机の上においている紙のエッジを検出して書類だけを綺麗に切り取る
- 機械学習のモデルを読み込んで人物の顔を切り取る
- ヒトの姿勢(骨格)の座標を取得する
など、Pillowではできない高度な画像や動画の処理が可能です。
MoviePy(動画編集)
それほど有名なモジュールではないと思いますが、Pythonで動画を編集したいときには MoviePyのお世話になるはずです。動画編集ソフトでできる
- 動画の切り取り
- エフェクトの追加
- テキストの挿入
- 音声の挿入・抽出
- ボリュームの調節
- 画像を貼り付ける
- 動画を重ねる
- 動画の水平・垂直方向への反転
などの基本的な操作を一通りできます。
下の動画は2本立てで、短くて見やすいです。
NumPy (計算)
- Pillow
- OpenCV
- Pandas
- scikit-learn
- Theano
- Tensorflow
- Keras
- PyTorch
など、いろんなモジュールの基礎となっているのが計算で、それを一手に担っているのがNumPyです。
上で紹介している全てのモジュールにNumPyが使わています。
NumPyの学習を飛ばして他のモジュールを使うと、NumPyって何?ndarrayって何?とどこかでつまずくことになるのでNumPyの基本的な操作を確認しておきましょう。
数学的な難しいところはひとまずおいておいて、初めは「こんな事ができるんだ。」くらいで大丈夫です。
pandas (データ処理・分析、テーブル操作)
CSVファイルやエクセル、データベースに保存されたデータを分析・操作する時に利用する定番のモジュールです。Python のモジュールの中でもトップ5に入る利用頻度のモジュールです。
データサイエンスや機械学習の分野では必須のモジュールなので panda を使ってデータ分析をできるようになりたいですね!
matplotlib(グラフ化)
matplotlib は NumPy や pandasで分析する時に可視化するのによく利用するライブラリーです。
pandas に matplotlib が組み込まれているので pandas 利用時のグラフ化に特化するのであればこちらの動画でだいたいカバーできます。
matplotlib 全体について勉強したい場合はこちらの動画の方が詳しいです。
scikit-learn(機械学習)
ディープラーニングを勉強したい人は先に scikit-learn を勉強して機械学習について知ることで、ディープラーニングへの理解が深まります。
機械学習が基礎、ディープラーニングが応用みたいな位置づけなので順番を間違えると色々知らない概念が出てきて学習の効率が悪くなります。
また、NumPy, Pandas, Matplotlib を多様するので機械学習を始める前には先の3つのモジュールの学習を済ませておきましょう。
ちなみに私はPythonを初めた頃にKerasでディープラーニングをしようとして、わからないことだらけで大量の時間を無駄にしました orz… この記事を読んでくれている方はそんな時間の無駄遣いは避けて通りましょう。
TensorFlow(Keras、ディープラーニング)
Google製の機械学習モジュールです。最近はPyTorouchに押され気味ではあるものの、ディープラーニングモジュール2強の1つです。
TensorFlow と Keras は別々のモジュールでしたが、Keras はTensorFlow に吸収されて1つになっています。
GPU環境の設定方法、画像の分類、ファインチューニング、作成したモデルの保存やFluskを使った公開方法まで解説してくれています。
モデルの公開方法をどうすればいいかまでディープラーニングを初めたときは気が行き届かないので、そんなところまで解説してくれているのはなかなか気が利いています。
更に、クライアントサイドで動くTensorFlow.jsの解説までしてくれているのでイタレリツクセリです。
※ 環境構築が面倒な人やGPUを持っていない人はGoogle Colabを使うといいです。
PyTorch(ディープラーニング)
Facebook製のディープラーニングモジュールです。TensoFlow(Keras)は機械学習、初級〜中級者向けで、PyTorchは中級から上級者向けのフレームワークです。柔軟性が高い分覚えることが多くなるのでKerasに触れてからPyTorchを学ぶことをおすすめします。
この動画はNumPyを使ってニューラルネットワークを実装する方法から少しずつPyTorchにコードを置き換えながら解説してくれています。ニューラルネットワークの基礎を確認したい人におすすめです。
後半はPyTorchを使ったモデルの作成方法について解説しています。
もっと詳しく PyTorchを使っていろんなモデルの作成方法について知りたい場合は、この動画が詳しく解説しています。
まとめ
無料で公開されている動画で各モジュールやフレームワークの非常に細かい使い方が解説されています。
主要なモジュールやフレームワークついては無料の動画で一通り学べることがわかりましたね。
上記の動画だけでも本何十冊分の情報量ですし、普段のプログラミングで困ることはほとんど無くなると思います。
私も日々勉強をしながらこの記事を更新していくので、ブックマークに保存して次にどんなことを勉強しようか迷った時の参考にしていただけると嬉しいです。
たくさんプログラミングを勉強してワクワクするものを世に作り出していきましょう(^^)v
※ 他にもオススメのモジュールやフレームワークなどがありましたらコメントを頂けると嬉しいです。
おまけ:Flutter (iOS、Android、ウェブアプリケーション)
Googleが開発したDart と言う言語でiPhone、Androidに対応したマルチプラットフォームのアプリケーションが作れます。また2020一年のフラットバージョン2以降はウェブアプリケーションも同時に作れるようになりました。
Flutter を使えるようになると基本的にはどんな端末でも自分のアプリケーションを動かせるようになるので開発したものを広く使ってもらいやすくなります。
Dart の文法は Java と Javascript の間のような文法になっています。そのためどちらか一方、もしくは両方を知っている人はかなりなじみやすく習得のハードルが低い言語です。
興味がある方はぜひこちらも御覧ください。
コメントを残す