機械学習やWeb開発に使われるPythonとは?

最近少しPythonを勉強し始めたので、色々と調べてみることにしました。

 

Pythonとは?

Pythonとは、機械学習やWeb開発など幅広い用途で利用されている汎用プログラミング言語です。

可読性の高いコードで理解しやすく、少ないコードでプログラムを実装できるという特徴があります。

他の多くの言語に比べて文法が単純化されており、読みやすさと書きやすさを兼ね備えているため、初心者でもとっつきやすい言語だと思います。

ただ、その反面実行速度などはC言語などに比べると遅くなってしまうようです。

個人的な感想としてはインデントが構文規則になっているのが面白いなと思います。うちの大学の先生は生徒の書くコードがインデントがなくて読みづらいと言ってPythonを書かせていました笑

Pythonはインタプリタで実行することが前提で、以下のような特徴を持っているようです。

インタプリタとはソースコードを解釈して実行するプログラムのことです。

動的型付け

プログラム中の変数などがプログラム実行時に決定されることです。RubyやJavaScriptなども動的型付けにあたります。

これに対して静的型付けというのはプログラムのコンパイル時に変数などを決定する言語で、JavaやCなどが静的型付けにあたります。

コンパイル時に検査しないことで、シンプルかつ自由度の高いコードを記述することが可能です。

可読性の高く少ないコード数のプログラムはこれによって実現されています。

ガベージコレクション

そのまま訳せば「ゴミ拾い」ですが、プログラムを動かすにはメモリを確保する必要があるのですが、ガベージコレクションはプログラムが動的に確保したメモリ領域をいらなくなったら解放してくれる機能です。

マルチパラダイム

マルチパラダイムとは、複数のパラダイム(枠組み)に対応したプログラミング言語のことで、Pythonはオブジェクト指向、命令型、手続き型、関数型などの様々な形式でプログラムを書くことができ、柔軟な開発を行うことができます。

 

また、多くのサードパーティライブラリが用意されていて、使用目的に応じて機能拡張が容易に行えるのもメリットです。

 

機械学習としてのPython

ml_graph

(Percantage of Maching Job Postings|IBM DeveloperWorksのブログより抜粋)

現在機械学習やデータサイエンスで用いられている言語にはPythonの他にもRやJava,C++などがありますが、特に伸びているのがPythonです。

理由としては先ほども述べたように扱いやすい言語で普及率も大きいことと、ライブラリが豊富なのがあげられると思います。

機械学習やデータサイエンスで利用される主なライブラリには以下のようなものがあります。

  • NumPy:数値計算ライブラリ、配列や行列といったデータを高速に処理できる
  • Pandas:数値計算ライブラリ、時系列データなどの扱いが楽になる
  • matplotlib:グラフ描画ライブラリ
  • scikit-learn:機械学習ライブラリ、分類回帰クラスタ分析などを容易に実装できる
  • TensorFlow:深層学習ライブラリ、CNNやMNISTなどを容易に実装できる

扱いやすい言語仕様と、用途に沿った豊富なライブラリのおかげで人気が出ているようです。

Web開発としてのPython

Pythonはその扱いやすさと、便利なフレームワークでWebアプリケーションの開発にも用いられます。

有名なフレームワークをいくつか紹介します。

python-fw-trend

(侍エンジニア塾より抜粋)

Django

Django(ジャンゴ)は圧倒的なシェアをもつ高機能なフルスタックフレームワークです。MVCモデルを利用したおり、高機能なフレームワークですので迷ったらDjangoを選ぶのがいいかなと思います。

データベースを用いたWebアプリケーションを簡単に構築することができます。

ファイル構成も役割ごとに決まっており、メンテナンスが楽です。

今後も廃れることはそうそうないので、長く使える知識となります。

Flask

Flask(フラスク)はDjangoに近いですが、軽量化されて扱いやすくなったフレームワークです。

マイクロフレームワークと呼ばれ、最小限の機能だけなので扱いやすく、機能拡張などで容易に改修できます。しかし、自由度が高いためチームで開発する際などは仕様やドキュメントを固めておかないとメンテナンスが難しくなる恐れがあります。

私もPythonでAPIを作成した時にFlaskを利用したのですが、必要最低限のファイルだけで記述もとても簡潔にできたので小規模なアプリケーションにはおすすめです。

シェアも伸びてきているので今後にも期待です。

【Flask】5分で作るめちゃくちゃ簡単なAPI【Python初心者】

Bottle

Bottle(ボトル)は1つのファイルのみで構成されるシンプルで軽量なフレームワークです。

構成が簡単なため、手軽に導入でき初心者にはおすすめのフレームワークとなります。

 

おわりに

py>java

(PYPLより抜粋)

最近はついにPythonがJavaを抜き1番人気のプログラミング言語となり、需要もますます増加してくると思うので、ぜひPythonも勉強してみてはいかがでしょうか。

もちろん「Progate」にもコースがあります!

プログラミング初心者がProgateで勉強するべき理由

 

Pythonを利用して作ったアプリはこちらです↓

React+Webスクレイピング+Azureでアプリを作ってみた話