成熟したエコシステムを活用する
プログラミング学習においてPythonは、有力な選択肢です。
- シンプルなプログラミングコード
- 使用人口の多さ
に加えて、
充実しているエコシステム
が強みです。
拡張機能である
- フレームワーク
- ライブラリ
などを使うことで、
- Webアプリ開発
- データ分析
- 機械学習
などの幅広い場面で、効率よくプログラミングしていくことができます。
今日は、無数にあるPythonのフレームワーク / ライブラリの中から、比較的広く使われているものをシーン別に紹介します。
プログラミング学習では、基礎的な部分を抑えたあとは、何か作るものを決めて、実際に作成しながら色々と学んでいくという方法がお勧めです。
その際に、今日紹介するフレームワーク / ライブラリは、役に立つと思います。
Web開発
Pythonには、Webアプリケーション開発をはじめとしたWeb開発に活用できるWebフレームワークがあります。
Ruby言語のRails、PHPのLaravelと同様の位置づけです。
がPythonでは広く知られています。
Django、FlaskともPythonのフレームワークとしては広く使用されています。Stack Overflowの2020年の開発者向け調査では、Webフレームワークの使用ランキングで、Djangoが10位、Flaskが11位でした。
特徴は少し異なっていて、
Djangoが
- 大規模開発向け
- 多様な機能を実装
という方向性に対して、
Flaskは
- 動作が軽い
- 必要最低限の機能を搭載
とされています。
FlaskもDjangoともにチュートリアルが用意されています。
また、Djangoには、Django Girlsというチュートリアルサイトもあります。
データ分析と機械学習
データ分析と機械学習の分野でもPythonには豊富なフレームワークやライブラリがあります。
データ分析
Pythonでのデータの取り扱いを補助するものとして、
があります。
NumPyを使うことで、Pythonでの複雑な数値計算がスムーズに行えます。
また、Scipyを使えば、高度な科学計算を行うこともできます。
Pandasは、表形式のデータの取り扱いに便利です。
グラフの描画をサポートするものとして、
などがあります。
Pythonでデータ分析をする際には、NumPyやPandasでデータを扱い、Matplotlibでグラフ化して視覚的にデータを理解するという手順を踏むことは一般的です。
機械学習
Scikit-learnは、Pythonでの機械学習に広く使用されています。
- 分類
- 回帰
- クラスタリング
といった一般的なタスクに対して多様なモデルで機械学習を試すことができます。
ディープラーニング
Pythonでは、機械学習の中でも特に、ディープラーニングにフォーカスしたフレームワークがあります。
ディープラーニングのフレームワークとしては、
が広く使われています。
TensorFlow、PyTorchともに初めて公開されてから、2021年時点でまだ数年しか経過していませんが、
Pythonでディープラーニング
という文脈では、どちらかが使用されるケースが一般的です。
数年前まで、ディープラーニング用のPythonフレームワークは多数あったのですが、2021年時点では、TensorFlowかPyTorchに統合されつつある、という形だと思います。
統合されていった結果、TensorFlow、PyTorchともに周囲にツールが整備されてきており、大きなエコシステムを作り上げています。
- TensorFlow → Keras、TensorFlow Lite
- Python → PyTorch Lightning、fastai
などの多様なツールがあります。
スクレイピング
データを集めるときに、スクレイピング=効率的にデータを取得する
を活用するケースがあります。
Pythonでのスクレイピングには、専用のフレームワークやライブラリがあります。
などが知られています。
Seleniumを使うと、Webブラウザの操作を自動化できます。
スクレイピングの文脈では、SeleniumをBeautiful Soupと組み合わせて使用することが多いです。
Beautiful Soupを使用することで、マークアップ言語形式のファイル(HTMLや XML) からデータを取得することができます。
Scrapyは、スクレイピング周りの機能がBeautiful Soupよりも豊富にある点が特徴です。
ゲーム開発
プログラミング学習という面からゲーム開発を考えると、
- Unity (ゲームエンジン) + C#言語
- Unreal Engine (ゲームエンジン) + Blueprint言語
という組み合わせを想像するかもしれません。
ゲームエンジンというのは、ゲーム開発で使用されるソフトウェアのことです。
ゲームエンジンを使用することで、1から全てプログラミングしてゲーム開発するよりも効率的に開発することができます。
Pythonにもゲーム開発のためのフレームワークやライブラリが用意されています。
例えば、
です。
PyGameは、ゲーム開発のための専用ライブラリです。PyGameを利用することで結構本格的なゲームを作ることが可能です。
YouTubeにいくつか解説動画があります。
などです。
Pyxelは、ドット絵のゲーム開発に適しています。
Pyxelを活用することで、2Dのドット絵のゲームを作ることができます。
番外編
今までに紹介したもの以外にも、Pythonにはユニークなフレームワークやライブラリがあります。
実行ファイル化
まずは、Pyinstallerです。
Pythonは、コンパイル型言語ではないため、Pythonの実行環境がないところではプログラムファイルを実行できません。
しかし、Pyinstallerを使用することで、実行ファイルを作成することができます。
つまり、Pyinstallerを活用すれば、Pythonの実行環境がないところでも動作するファイルを作成することができます。
Pythonで実行ファイルを作ってみたいという場合には、Pyinstallerを試してみるのもありだと思います。
GUI
次に、Tkinterです。
Tkinterは、PythonのGUI作成用モジュール(ライブラリ)です。
GUIは、Graphical User Interfaceの略で、簡単に言えば、ウィンドウやボタンなど、視覚的なオブジェクトを作成できるようになります。
Tkinterは、基本的にはPythonに標準搭載されているので、すぐに試してみることができます。
Pythonで、ウィンドウやボタンなどGUIを作ってみたい、という時には候補になると思います。
ツールを活用してプログラミング学習を進める
今日紹介した以外にも、
Pythonのフレームワーク / ライブラリは本当にたくさんあります。
これらの豊富なツールが整備されている、
というのはPythonの強みです。
Pythonで、基礎的なプログラミングコードの書き方を学習した後は、
これらのツールを活用して、自分で作りたいものを、どんどん作っていくと
よりプログラミング学習がスムーズいくと思います。
Pythonのエコシステムを十分に活用して、
ツールを駆使しつつプログラミング学習を進めていく、というスタイルはお勧めです。
コメント