
PythonでWebアプリケーションを作成するための備忘録
近年AIやディープラーニングの盛り上がりで注目されているPythonですが、特徴、できること、学習方法、Webアプリケーション構築に適しているのかを調べてみました。
1. Pythonとは

Pythonは1991年に開発され、オープンソースで運営されているプログラミング言語です。
プログラムコードはオフサイドルール初稿という記述方法で、誰でも読みやすく、また書きやすくなっています。
オフサイドルール初稿とは、行頭をインデント(字下げ)することにより文の塊の範囲(ブロック)を示す規則です。
また、ライブラリやフレームワークが充実しており、それらを利用することにより簡単に目的の処理を作成できるので、高い生産性が期待できます。
個人的な意見ですが、C言語やJAVAのプログラムに慣れた技術者にとっては少し違和感があり、慣れるまで少し時間を要するかもしれません。
2. Pythonでできること

・Webアプリケーションの構築
WebアプリケーションはWeb利用者への画面や蓄積したデータベースへのアクセスが欠かせません。
Pythonには、画面を簡単に作成するためのテンプレート機能や、データベースへのアクセスを簡単にするORマッパー機能を搭載したフレームワークがあります。
主なフレームワークには、flask(フラスク)、Django(ジャンゴ)、Bottle(ボトル)などがあります。
・機械学習やデータ分析
PythonはAIや機械学習、データ分析といった分野で注目されています。
機械学習、画像や自然言語や音声などのデータ解析、解析結果からの予測は処理が複雑です。
このような処理にPythonが利用されるのは、プログラムの可読性と高度な計算や分析用のフレームワークやライブラリが充実しているからだと思います。
主なフレームワークにはTensorflow(テンソルフロー、テンサーフロー)、Pytorch(パイトーチ)があります。
・定形業務の自動化
Pythonのライブラリには、Excelファイルの入出力をするもの、ブラウザ操作を自動化するもの、OutlookやThunderbirdのメールを読み込むものなどがあります。
それらのライブラリを組み合わせて、Webサイトを巡回してデータを収集しExcelファイルに転記する作業や、特定の宛先から届いたメールの本文をExcelファイルに転記する作業などを自動化する処理を作成することが可能です。
主なライブラリとして、Excelファイルの入出力にはOpenPyXL(オープンパイエックスエル)やPandas(パンダス)、ブラウザ操作の自動化にはBeautifulSoup(ビューティフルスープ)やSelenium(セレニウム)、メールデータの読み込みにはAspose.Email for Pythonやmailboxなどがあります。
3. Pythonの学習方法
・Google Colaboratoryを利用
Googleが提供するJupyter環境で、Googleアカウントがあれば無料で利用可能です。
Colaboratoryはプログラムの編集や実行環境が提供されております。
また、PC上にソフトのインストールは不要で、Chromeなどのブラウザ上で手軽に学習を始めることができます。
・ディストリビューションを利用
ディストリビューションとはPythonで必要なツールやライブラリがまとめられたソフトウェアです。
ディストリビューションには公式版PythonとAnaconda(アナコンダ)があります。
公式版Pythonはプログラミング入門やWebプログラミングなどの場合に、Anacondaは機械学習などの科学技術計算の場合に勧められています。
また、プログラム編集はサクラエディタなどのテキストエディタでも可能ですが、デバッガーやエラーチェック機能などを拡張機能として提供しているMicrosoft Visual Studio Codeの利用がおすすめです。
4. Webアプリケーション用フレームワークの特徴
Webアプリケーションの開発規模、開発スタイル、運用規模に合ったフレームワークを適切に選定することが望ましいです。
主なWebアプリケーション用フレームワークの特徴をまとめます。
4-1. Flask
・WSGI(PythonのWebアプリケーションとWebサーバ間のインタフェース)とテンプレートエンジンのみ実装されている。
・Djangoと比べて動作が軽い。
・Pythonの知識とフレームワーク固有の機能の学習が必要。フレームワーク固有の機能は少ないので学習コストは低め。
・日本語によるフレームワークの解説が少ない。
・プラグインが豊富で必要な機能(キャッシュ、ユーザー認証、ORマッパーなど)を任意に追加できる。
・プログラミングの自由度が高くカスタマイズしやすい。
・小規模Webアプリケーションやプロトタイプ作成に向いている。
4-2. Django
・開発に必要な機能(ユーザー認証、ORマッパー、URLディスパッチャー、キャッシュ、管理画面、テンプレートエンジン、バリデーション等)が標準で実装されている。
・機能が多い分、Flaskと比べると動作が重い。
・Pythonの知識とフレームワーク固有の機能の学習が必要。フレームワーク固有の機能が多く学習コストは高め。初心者に向かない。
・管理画面を自動生成できる。
・日本語によるフレームワークの解説や情報が多い。
・プラグインが豊富で、機能拡張ができる。
・プログラマによる書き方の差異が少なくなるように設計されている。
・大規模Webアプリケーションに向いている。
・Django REST framework(DRF)を追加するとWeb APIも作成できる。
・YoutubeやInstagramで使用されている。
4-3. Bottle
・Pythonの標準ライブラリのみで作成されている。
・Pythonの知識で十分で、学習コストが低い。
・Flaskよりも構成が少ないので動作が軽い。
・FlaskやDjango習得前の練習に向いている。
・実業務で使用するアプリケーションには向かない。
4-4. FastAPI(ファストエーピーアイ)
・PythonでAPIを構築するためのフレームワーク
・動作が高速。
・構造がシンプルで学習コストが低い。
・公式の日本語ドキュメントが充実している。
・非同期通信を作成できる。
5. まとめ
Pythonは他のプログラミング言語に比べフレームワークやライブラリが充実しており、定形業務を自動化するバッチ処理、Webアプリケーション、複雑なデータ分析や機械学習などの機能が実装可能であることが分かりました。
また、Instagram、Youtube、SpotifyなどのメジャーなWebサービスもPythonで構築されている実績があり、大規模サービスの運用にも耐えらる技術であることが証明されています。
Webアプリケーションを構築する場合、大規模開発の場合はDjango、小規模開発や高速化の場合はFlaskと使い分けされているようでした。