
Pythonの勉強したいけど、何からから手をつければいいのかな?



Pythonで開発するプロジェクトにアサインされたけど、参考書買う前に何となく感覚をつかみたい
こんな悩みを解決します。
今回はPythonのプログラミングを勉強していてコーディングの練習をしたい方向けに、練習に使えるサンプルプログラムを紹介します。
当ブログの中にあるサンプルプログラムは全て無料で公開していますので、まずはたくさんコードを書いて感覚をつかんでみてください。
また、Pythonを学ぶメリットについても以下の記事で解説していますので、あわせてご覧ください。


Pythonでおすすめの練習法


プログラミング言語Pythonを習得するためにおすすめする練習法は、まずはとにかくプログラムを書くことです。
エンジニアの方達の間では、参考書などに記載されているサンプルプログラムを書き写すことを「写経」と呼んでいます。
いきなり理論を完全に理解しながら進もうとすると、参考書を読み進める際にも非常に時間がかかり、挫折してしまうことも多いかと思いますので、まずはひたすら写経(書き写す)というのも有効な手段です。
私はプログラミング歴20年以上で今までにたくさんのプログラミング言語を扱ってきましたが、今でも新しい分野を扱うことになった際は、その分野の参考書(200~300ページくらいのもの)を3冊くらい買ってきてひたすら写経します。
最初は理屈がわからなくても、書いているうちに何となくイメージがつかめてくるため、2週目で理論を理解すると効率よく習得できます。
これからプログラミングを習得していきたい方は、ぜひ勉強の中に写経を取り入れてみてください。
また、Pythonを体系的に学びたい方や途中で挫折するのが心配の方には、Pythonをオンラインで自宅で自分のペースで学べるプログラミングスクールも以下の記事で紹介していますので、あわせてご覧ください。


Pythonの開発環境 AnacondaとVisual Studio Code(VS Code)のセットアップ
Pythonのプログラミングを始めるには、まず開発環境を構築する必要があります。
機械学習やデータサイエンスなどで多用される数値計算ライブラリをあらかじめセットにしたディストリビュージョンであるAnacondaと、コーディング、デバッグを行うVisual Studio Code(VS Code)をインストールしましょう。
OSごとにセットアップ方法が異なりますので、以下のページを参考に進めてください。
Windows編
Windowsでのセットアップ手順を以下のページで解説しています。


Linux(Ubuntu)編
Linux(Ubuntu)でのセットアップ手順を以下のページで解説しています。


Pythonの基礎
Pythonのプログラミングを始める上で、データ型や文法など最低限の前提知識を持っておく必要があります。
最初はざっと目を通して、なんとなく雰囲気だけ頭に入れておけばOKです。プログラミングの練習をしていく中で、必要に応じて読み返してください。
Pythonの概略
Pythonの基本的な型、演算子、制御文については以下のページで概略を解説していますので、参考にしてみてください。


知っておくと便利な標準ライブラリの使い方についても以下の記事で解説しています。


\ Pythonを自宅で好きな時に学べる! /
Python公式ドキュメント
また、Pythonの仕様については以下の公式ドキュメントで詳細な説明がありますので、必要に応じて参照しながら進めてください。
Python公式ドキュメント


Pythonプログラミング実践編 サンプルコード集


ここからは実際にPythonのプログラミング練習に使える、当ブログ内のサンプルコードを掲載している記事を紹介します。
最初は意味が理解できなくても繰り返し写しながらコーディングしていくことで頭に入ってきますので、とにかく量をこなすつもりでトライしてみてください。
PythonでGUI(デスクトップアプリケーション)
まずはもっとも簡単に作成できるアプリケーションとしてGUIがあります。
GUIとは「Graphical User Interface」の略です。
GUIは画面上に視覚的にわかりやすい形でコンピュータとやり取りするためのインタフェースです。GUIでは、画面上にアイコンやボタンなどを表示し、マウスやキーボードを使ってそれらをクリックや入力することで、コンピュータに命令を出すことができます。
当ブログではPythonの標準ライブラリであるTkinterを使って入力フォームを作成する方法を以下のページで解説しています。Windows 、Mac、LinuxなどOS問わず動かすことができますので、まずはTkinterを使ったアプリケーションを作成してみましょう。


サンプル通りの入力フォームが作成できたら、オリジナルの項目を追加するなどして改良してみましょう。
事務処理の自動化など、自分の仕事に当てはめて項目を作成してみるとより実践的です。
Web上のデータを取得する(スクレイピング)
PythonではWeb APIやスクレイピング用ライブラリを使用することで、Web上のデータを自動で収集することができます。
以下の記事ではlivedoorの天気予報サイトから、WebAPIを利用して天気情報を取得する方法について解説しています。


スクレイピングで使用できるライブラリ、BeautifulSoupを使ってHTMLで記述されたページからデータを取得する方法について解説しています。


以下の記事ではPythonのHTTP通信用ライブラリ、requestsモジュールを使ってWeb上の画像ファイルをダウンロードする方法について解説しています。


\ Pythonを自宅で好きな時に学べる! /
Pythonでデータを可視化
続いて紹介するのはPythonのプログラムで生成されたデータを可視化するためのプログラムです。
Pythonではデータを元にグラフを描画するためのMatplotlibというライブラリがあります。このMatplotlibを使っていくつかのパターンのグラフを描くためのソースコードを下記の記事で解説しています。
Matplotlibは後ほど紹介する機械学習やデータサイエンスなどの分野でも多様されるライブラリですので、ぜひ使ってみてください。


Pythonとカメラを使って画像処理
続いては、Pythonが得意な分野の1つでもある画像処理についてです。
尚、この項で紹介している記事はRaspberry Pi用に書いたものですが、ソースコードは普通のWindows、MacなどのPCでもそのまま使用できます。
PythonではOpenCVなどの画像処理ライブラリを利用することができます。処理する画像をPCなどに接続したカメラから取り込むことで実用的なアプリケーションを開発することができます。
最近ではAmazon等でUSB接続できるカメラが非常に安価で販売されていますので、手軽に画像処理プログラムを作成することができます。


画像処理ライブラリOpenCV
OpenCV(Open Source Computer Vision)は、Intel社が開発、公開している画像と動画の分析に用いられるコンピュータビジョンライブラリで、PythonやC++などの言語から利用できるインタフェースが提供されています。
OpenCVには、オブジェクト検出、顔認識、動き分析など、画像や動画の分析に有用な機能が多数用意されています。
OpenCVをインストールするにはコマンドプロンプトで以下のコマンドを実行します。
pip install opencv-python
基本的な動作 画像の取り込み
PythonでUSBカメラを使って画像を取り込むためのソースコードを以下の記事で公開しています。
まずはカメラの映像をOpenCVで取り込み表示してみましょう。


画像処理の応用
カメラの映像が取り込めるようになったら、今度はその映像に対して動体を検知するための処理をOpenCVのライブラリで実現します。監視カメラなどで使用されている技術を、Pythonのコードで実装することができます。


続いて、今度は画像に写っている人物の骨格をOpenOpseというライブラリを使用して検出プログラムです。
Part1では静止画に対して骨格検出を行うためのプログラムを公開しています。


Part2ではPCに接続したカメラで取り込んだ映像に対して骨格検出を行います。




\ Pythonを自宅で好きな時に学べる! /
Pythonで機械学習(AI)
最後の練習用のサンプルとして、機械学習(AI)を使ったプログラムを作成します。
機械学習とは、コンピュータが自動的に大量のデータを学習し、データのルールやパターンを抽出します。そしてそのルールやパターンを元にデータを分類したり、今後のデータを推定したりすることができるようになります。
機械学習は、自然言語処理や画像認識、医療や金融など様々な分野で活用されています。
学習済みモデルを使って推論する
機械学習で使用するモデルを作るためには、前提となる数学、統計学などの知識を習得した上でネットワークの実装を学ぶ必要があります。
しかし今回はPython習得のための練習ですので、既に学習済みのモデルを利用して画像に写った物体を判別するプログラムを作成してみます。学習済みモデルがあれば数学や機械学習の知識は不要で、Pythonの知識のみで実現することができます。
以下の記事ではMETA社(旧Facebook)が公開している機械学習ライブラリPyTorchと、学習済みモデルYOLOv5を使ってオブジェクト検出をするためのソースコードを公開しています。


以下の記事では先ほどのPyTorchとYOLOv5を使って検出したオブジェクトが画面のどの位置にあるかの座標情報を取得する方法とソースコードを公開しています。


\ Pythonを自宅で好きな時に学べる! /
機械学習のモデル作成から推論まで
少しハードルは高くなりますが、機械学習のモデルのトレーニングからトライしてみたい方には、以下の記事で学習から推論までの流れを全てソースコード付きで公開しています。


数学的な理論などは別の教材、書籍などを利用して補完されることをおすすめします。


機械学習は必要とされる知識の領域が広く難易度が高いため、大学等で情報工学を専攻して習得するのが一般的ですが、社会人の方で体系的に学びたい方には機械学習に特化したプログラミングスクール等を受講されることをおすすめします。
まとめ
今回はPythonのプログラミングを練習したい方向けに、当ブログ内で公開している記事を用途ごとにご紹介しました。最後の機械学習まで全て完了すると結構なボリュームになりますので、Pythonのスキルも向上しているかと思います。
当ブログ内記事は全て無料ですので、初心者の方もぜひトライしてみてください。。
また、途中で挫折しそうで不安な方には業界で活躍するメンターから学べるプログラミングスクールも紹介しています。


また、独学で学びたい方には講座単位で購入できるUdemyがおすすめです。


それでは、また次の記事でお会いしましょう。




コメント