Python Mega Course を受講しました

The Python Mega Course: Build 10 Python Applications」というUdemyのビデオレクチャーを受講しました。ビデオが21.5時間となかなかのボリュームになっています。英語のコースなので途中でやめちゃわないかなと少し不安でしたが結果問題なかったです。講習内容もとても面白かったので感想を簡単にまとめてみました。

Pythonの便利さが体感できるお得な内容

この「The Python Mega Course: Build 10 Python Applications」というレクチャーですが、座学だけでなく毎回具体的なアウトプットがあるのがとても良かったです。タイトルに冠しているとおり10個のアプリケーションを作るんですが、作っているものがあるので技術的な説明も具体的で理解しやすいです。

扱っている内容は大まかに下記のような感じです。

  • CLIプログラム開発
  • Jupyter NotebookでのPython利用
  • 地図+ピン等のWebページ作成
  • CLI常駐プログラム開発
  • Webアプリケーション開発(Flask)
  • GUIデスクトップアプリケーション開発(Tkinter)
  • 画像・ビデオ解析プログラム(OpenCV)
  • データの可視化(Bokeh)
  • Webスクレイピングプログラム開発
  • ジオコーダープログラム開発

といった感じです。作っているアプリケーションは時間の制約もあるので当然単純なコーディングになるんですが、数十行のコードで出来る事がなかなか実用的なので「プログラミング言語としてのPython」はともかく「ツールとしてのPython」の魅力がとても理解できました。ライブラリや周辺のツールが優秀ですね。Jupyter Notebookは以前Deep Learningのセミナーやハンズオンで使っているのを見てすごい便利そうだな〜と思ってたんですが、自分で使って本当に便利なのが実感できました。Python好きになった気がします。

英語の理解はどうか?

Ardit Sulceさんというドイツ系の方が講師をしています。少しドイツっぽい発音があるような気もしましたがけっこうゆっくり説明してくれてるので画面見ながらであればだいたい理解できました。聞いてるとやや眠くなる時もあったので、そういう時は1.25倍速くらいで聞いてるとちょうど良かったです。

英語のテック系のPodcastも最近聞くようにしてるんですが、こちらのほうは残念ながらあまり聞き取れません。けどビデオレクチャーだとよく分かるのは、会話の内容を先読みしやすかったり、視覚情報から理解しやすいという側面があるのかと思います。なので、リスニング苦手でも大丈夫だと思いました。

Pythonで印象的だった事

Pythonは今回初めて書きました。ここでは印象的だった事をメモ程度に書いておきます。

pandasとJupiter Notebookが便利

pandasとても便利です。そしてpandas単独ではなくJupyter Notebookを使って、インタラクティブに操作しつつ視覚化していくという進め方がPython初心者の自分にとってはとても新鮮でした。作ったNotebookはそのまま共有もできますし、これとても生産性高いですよね。で、pandasなんですがデータの分析などでよく使われてるみたいですね。他のUdemyのデータ分析系のレクチャーでも取り上げられています。公式を見てみると概要のYouTube等もありました。

pandas

Python has long been great for data munging and preparation, but less so for data analysis and modeling. pandas helps fill this gap, enabling you to carry out your entire data analysis workflow in Python without having to switch to a more domain specific language like R.

pandasを使う事でPythonでデータの準備から分析まで完結できるようになる、という事みたいです。良いですね。

自分でもJupiter Notebookでデータの整形をしました。ちなみにipynbファイルはGitHubでプレビューができるみたいです。地味に便利。こんな感じです。

OpenCVとカスケード分類

OpenCV自体はPythonに限らずなんですが、これまで画像や動画などはあまり触れてこなかった領域だったのでとても新鮮でした。Pythonの場合はcv2というライブラリを使って利用する事ができます。

OpenCVではカスケード分類器という機械学習済みの物体検知用のxml定義を使うことで画像や動画から該当する物体検出を行う事ができます。これもJupiter Notebookで試してみています。こちらです。

レクチャーの中では動画で物体検出を行ってそれをpandasを通してデータとして出力しbokehを利用してグラフ化するというところまでやっています。

VirtualEnvとrequirements.txt

virtualenvコマンドでPythonのまっさらな環境を用意します。

$ virtualenv virtual

で、virtual以下にあるpip等を利用してライブラリをインストールしたりpythonを実行します。そして、ライブラリの状態などを定義情報として抜き出すのにpip freeze > requirements.txtしてrequirements.txtに書き出します。逆にまっさらなvirtualenvにrequirements.txtからライブラリをインストールするにはpip install -r requirements.txtという感じでpipコマンドを実行するようです。

こういうパッケージマネージャの動作とか考え方って、pipもgemもnpmもcomposerもみんなそれぞれ違ってて面白いですね。

次は何をするか?

今はUdemyで別のAWS Certificateのレクチャーを受講しています。Python系ではやはりデータ分析やAI系のものをもう少し深掘りしていきたいなと思います。しばらくUdemy漬けになりそうです。今自分の中でUdemyブームが来てますね(笑)。