こんにちは、KiYOです。
システムエンジニア歴20年オーバー。製造現場に特化したシステム開発を主にやってます。
新しい物好きで色々なIT技術を勉強しては、仕事に使って行ってます。
Python(パイソン)について紹介します。
仕事で最適化問題を解くために採用しましたが、うまいこと最適化してくれなくて見事失敗しました。 なぜダメだったか色々試行錯誤しながら使えるようにしていきたいと思って、Python勉強に励んでいます。
今回はこの本を参考に、私の独断と偏見で記事を書いています。
言語を5点中評価
容易性 | 容易に言語習得できるか? | 5 |
将来性 | 将来性があるか? | 5 |
普及度 | 普及しているか? | 4.5 |
保守性 | 保守性が高いか? | 4.5 |
中毒性 | ハマるか? | 3.5 |
22.5 |
Pythonの特徴
機械学習など幅広い分野で使用されている書きやすい言語
Pythonの歴史
開発者 | グイド・ヴァンロッサム、Python Software Foundation |
誕生 | 1991年にPythonのバージョン0.9が公開 |
公式サイト | https://www.python.org |
言語の歴史
1991年 | Pythonのバージョン0.9が公開。オブジェクト指向の機能実装 |
1994年 | バージョン1.0が公開。ラムダ式やmapなどの関数が実装 |
2000年 | バージョン2.0が公開。ガベージコレクションやUnicode、リストの機能が実装 |
2008年 | バージョン3.0が公開。Python2.x系と一部互換性なく移行が難航 |
2019年 | 開発者のグイド・ヴァンロッサム氏が開発から退く。 |
AIブームで火が付いた
世界中で使われているPythonですが、日本では2010年代中頃まで、あまり活用されていませんでした。PythonのライバルであるRubyの存在が大きかったのかも知れません。
しかし、第3次AIブームにより機械学習や深層学習(ディープラーニング)が盛り上がると日本でも使われることが多くなってきました。
ThensorFlowやPyTorchなどの有名な機械学習フレームワークがPython向けに作成されました。
スッキリした言語
Pythonの言語仕様の大きな特徴が、インデント(字下げ)によるブロック表現と言えます。多くの言語では「{・・・}」のような波括弧などで表現しますが、Pythonはインデントを用います。
他にも、あることを達成したい時に方法を可能な限り1つに限定することで可読性を高めるといったPythonをスッキリした言語にするための哲学があります。
AnacondaとPython
AnacondaとはPythoおよび有名なPythonライブラリをまとめたPythonのディストリビューション(配布・実行環境)です。Anacondaは機械学習を含む有名なPythonライブラリで最初から同梱しており人気です。
コラム
Pythonは世界中で利用されていますが、万能ではありません。
Pythonは動的型付け言語であり、インタプリタ上で実行されるため、動作速度はCやC++などの静的型付けのコンパイル言語には負けてしまいます。
また、型をエラーチェックしたいケースでは動的型付け言語では困ることもあります。近年ではType Hints(型ヒント)という、Pythonに型注釈を後付けできるような機能が追加されました。
Pythonの利用シーン
Pythonは手軽に始められる上に、多くのライブラリが用意されています。そのため機械学習(AI)、スクリプト、Webアプリ、教育分野、データサイエンス、スクレイピング、バッチ処理、デスクトップアプリ、システム管理など広く使われています。
機械学習
- 機械学習とはAIの一分野の技術
- ライブラリ「Scikit-learn」は、分類、回帰、クラスタリングなどサポート
- Pythonは機械学習ライブラリが最も充実している
- 行列計算ライブラリのNumPyや科学技術計算のSciPyがある
- 機械学習の実行や可視化ができるノートツール「JupyterNotebook」が有名
深層学習(ディープラーニング)
- 機械学習の中でも最も注目を集めているのが深層学習
- 多層のニューラルネットワークを用いた機械学習の手法の一つ
- ライブラリで最も人気があるのがGoogleのTensorFlow
- 人気のある深層学習フレームワークのほぼ全てがPythonを主な対象としている
Weアプリケーション開発
- 代表的なフレームワークにDjangoやFlaskなどがある
- Djangoはフルスタックと呼ばれる機能が充実。大規模なWeb開発に向いている
- Flaskは機能を絞った軽量フレームワーク。小中規模のWeb開発向き
- YouTubeやInstagramはPythonを一部用いて開発している
Python2とPyhton3
- Pythonのメジャバージョン2と3は長らく共存していた。(2から3へ変更が大きかった)
- 既に大量のコードが2で書かれていたため移行が難航。ライブラリやフレームワークも3には直ぐに移行できないものがあった。
- 近年ではこれらの課題はほとんど解消。多くのライブラリやフレームワークは3を採用し、、移行もかなり進んでいる
Pythonの実行速度とC拡張
- Pythonはインタプリタ言語であるため実行速度に難あり。(Cなどの方が早い)
- 実行に時間がかかりそうな処理はCに任せてしまう方法がある。(C拡張)
- 数値計算のNumPyなどはC拡張ライブラリを採用。その為、利用者はCのことを知らなくてもその恩恵を受けることができる
PyPIとpip
- Pythonのライブラリは「PyPI (Python Package Index)」に登録
- PyPIはPythonライブラリのカタログ的存在
- Pythonに同梱されているpip(パッケージマネージャ)を使うことで、ライブラリを簡単にインストールできる
- AnacondaもPythonパッケージを配布している
まとめ:これから言語を覚えるならPythonを覚えよう
今回はPythonについて解説しました。
機械学習や深層学習するには、Pythonとそのライブラリやフレームワークを覚えることは必須です。
なぜなら、言語を覚えたとしてもそれを使うシーンが少なければ、意味がありません。
やりたいことを実現するために、Pythonの使い方をマスタしましょう。
以上、KiYOでした!
今回参考にさせていただいた本はこちらです。今回紹介した言語やその他言語も紹介されているので大変勉強になりました。
Udemy(ユーデミー)というオンライン講座がおすすめです。非常にわかりやすい説明と実際のPC画面の映像で説明してくれるので理解が早いし、わからなかったところを何度も見返すことができます。
非常におすすめです。
まとめページで、他のプログラミングも紹介していますので、ご覧ください。
コメント