PythonでWebアプリをつくろうと思い立ち、KindleUnlimitedで物色しシリーズで3冊学びました。
「Twitter連携の匿名質問サービス」を制作し公開することを目標に手を動かしながら学ぶことで、PythonでWebアプリを作成するのに必要な技術を理解することができましたので、全体像を紹介します。
Python+Flaskで作るWebアプリ全体像

アプリ開発者は「HTMLファイル」「Pythonファイル」「Heroku用ファイル」を作成します。作成が完了したら、ファイルをクラウドサービス(Heroku)にデプロイします。クラウドサービス内でWebサーバーやDBサーバーとやりとりが行われ、クライアントに表示されます。クライアントはPC、タブレット、スマホでブラウザを通して、サービスを利用します。
アプリ開発者が作成するファイルと、アプリに必要な技術について以下説明します。
HTMLファイル
HTMLファイルはWebページを表示するためのファイルです。
Webページの最低限の見た目を整えることができるUIフレームワークのBootstrapを使う記述をします。
BootstrapはTwitter社が開発するUI制作キットです。PC、タブレット、スマートフォンの画面幅に合わせて文字幅やレイアウトを柔軟に変更することができるレスポンシブデザインであることが利点です。
Pythonファイル
Pythonファイルはユーザーがブラウザで操作した際に、処理を実行するためのファイルです。
PythonでWebアプリケーション開発を楽にしてくれる機能群のWebフレームワークとして軽量のFlaskを用います。PythonファイルからHTMLファイルを出力するのがテンプレートエンジンjinja2です。
SNSを使ったログインを実現するため、ソーシャル認証の基盤となるOAuthと呼ばれる認証の仕組みを用います。
本書ではデータベースを扱うSQLとしてPostgreSQLを用いています。互いに独立した構造であるSQLとPythonを結びつけるのが、QRマッパー(Object-relational mapper)のSQLAlchemyです。
Heroku用ファイル
Herokuとはアメリカに本部を置くPaaS(Platform as a Service)と呼ばれるサービスの1つです。Webアプリケーションを運用するためのクラウドサービスの1つです。
Heroku用ファイルに、「Procfile」と「requirements.txt」があります。
ProcfileはHerokuでアプリケーションをデプロイした際に最初に実行されるコマンドを記述するためのファイルです。PythonでWebアプリケーションをサーバー上で公開する上で共通となるインターフェイスWSGI(Web Server Gateway Interface)のGunicornを記述します。
requirements.txtにはPythonの必要なライブラリなどの一覧を記述します。
さいごに
Pythonを主にデータ分析目的で使っていたので、同じ言語でWebアプリもつくれて応用範囲が広いと感じました。全体像を理解できたので、詳細をもっと学び、自作アプリを作成していきたいです。
以上、お読みいただきありがとうございました。