【ITニュース解説】Easy Python Flask Tutorial for Newcomers
2025年09月28日に「Dev.to」が公開したITニュース「Easy Python Flask Tutorial for Newcomers」について初心者にもわかりやすく解説しています。
ITニュース概要
FlaskはPython製の軽量ウェブフレームワークで、ウェブアプリ開発初心者におすすめだ。必要最低限の機能から始め、自由に拡張できる。インストールから「Hello, Flask!」アプリ作成、ルートやHTMLテンプレートの追加、フォーム処理まで、具体的な手順でウェブ開発の基礎が学べる。
ITニュース解説
Flaskは、Python言語を用いてWebアプリケーションを開発するための軽量かつ柔軟なフレームワークである。大規模なWebフレームワークと比較して、Flaskは「マイクロフレームワーク」として位置づけられる。これは、Webアプリケーション構築に必要不可欠な基本的な機能、具体的には、特定のURLへのアクセスに応じて実行するプログラムを決定するルーティング、Webページの見た目を生成するテンプレーティング、そしてWebブラウザからの要求を受け取り応答を返すサーバー処理といった中核機能のみを提供することを意味する。そのため、開発者はプロジェクトの要件に応じて、必要な機能(例えばデータベース連携やユーザー認証など)を後から拡張機能として追加できる自由度の高さが特徴だ。これにより、シンプルさを保ちつつ、開発者の意図する通りのアプリケーションを構築できる。
Flaskを始めるためには、まずコンピューターにPython 3.xがインストールされていることが前提となる。Pythonの準備が整ったら、Webアプリケーションを作成するための新しいプロジェクトフォルダを用意する。そのフォルダ内でコマンドプロンプトやターミナルを開き、pip install flaskというコマンドを実行することで、Flask本体を簡単にインストールできる。pipはPythonのパッケージ管理ツールであり、このコマンド一つでFlaskとそれに必要な依存関係が自動的にセットアップされる。
次に、実際に最初のFlaskアプリケーションを作成する手順を解説する。プロジェクトフォルダ内にapp.pyという名前のPythonファイルを作成し、以下の基本的なコードを記述する。まず、from flask import Flaskと記述してFlaskライブラリからFlaskクラスをインポートし、app = Flask(__name__)でFlaskアプリケーションのインスタンスを生成する。このappオブジェクトが、アプリケーション全体の中心的な役割を果たす。続く@app.route("/")という行は、Pythonの「デコレータ」と呼ばれる機能で、アプリケーションのルートURL、例えばhttp://127.0.0.1:5000/にWebブラウザからアクセスがあった際に、その直下に定義されたhome()関数を実行するようにFlaskに指示する。home()関数はreturn "Hello, Flask!"という文字列を返し、この文字列がWebブラウザに表示されるコンテンツとなる。そして、if __name__ == "__main__": app.run(debug=True)という記述は、このapp.pyファイルを直接実行した場合に、開発用のWebサーバーを起動させるための標準的なコードブロックだ。debug=Trueを設定すると、開発中に発生したエラーの詳細が表示されたり、コードの変更が自動的にサーバーに反映されたりするため、開発効率が向上する。このapp.pyファイルを保存し、ターミナルでpython app.pyと実行すると、開発サーバーが起動し、http://127.0.0.1:5000/といったURLが表示される。このURLをWebブラウザで開くと、「Hello, Flask!」というメッセージが画面に表示されるはずだ。
アプリケーションに複数のWebページを追加するには、「ルーティング」を活用する。先ほどのapp.pyファイルに、例えば@app.route("/about")という新しいデコレータと、その直下にdef about(): return "This is the About Page"という関数を追加することで、簡単に「About」ページを作成できる。これにより、http://127.0.0.1:5000/aboutというURLにアクセスすると、「This is the About Page」というコンテンツが表示されるようになる。このように、@app.route()デコレータを使って異なるURLパスに異なるPython関数を関連付けることで、アプリケーション内に複数の独立したWebページを構築できる。
しかし、Pythonのコード中に直接HTMLの文字列を埋め込む方法は、Webページの構造が複雑になるにつれて管理が難しくなり、コードの可読性も低下する傾向がある。そこでFlaskでは、Webページの見た目や構造をHTMLファイルとして独立させる「テンプレート」という仕組みが提供されている。Flaskでは、Jinja2という強力なテンプレートエンジンが標準で利用される。テンプレートを使用するには、プロジェクトフォルダの直下にtemplatesという名前のフォルダを作成し、その中にhome.htmlのようなHTMLファイルを作成する。そして、app.pyのhome()関数を更新し、from flask import render_templateを追加した上で、return render_template("home.html")と記述する。これにより、Flaskはtemplatesフォルダ内にある指定されたHTMLファイルを読み込み、その内容をWebブラウザに表示するようになる。このようにHTMLとPythonコードを分離することで、Webアプリケーションの保守性が向上し、デザインとロジックを独立して開発できるため、開発効率も高まる。
さらに、Webアプリケーションではユーザーからの入力を受け付けて処理する機能が不可欠だ。例えば、ユーザーが名前を入力し、それを送信するシンプルなフォームを考えてみる。まず、templatesフォルダ内にform.htmlというファイルを作成し、名前入力用のテキストフィールドと送信ボタンを含むHTMLフォームを記述する。app.pyでは、from flask import requestを追加する。これは、ユーザーからのHTTPリクエストに関する情報(例えばフォームから送信されたデータ)を扱うためのオブジェクトだ。フォームを表示するためのルーティングとして、@app.route("/form")とdef form(): return render_template("form.html")を定義する。ユーザーがフォームに名前を入力して送信ボタンをクリックすると、フォームデータは通常、HTTPのPOSTメソッドを使ってサーバーに送信される。この送信データを受け取って処理するためのルーティングとして、@app.route("/submit", methods=["POST"])を定義し、def submit():関数内でname = request.form["name"]という記述を使って、フォームから送信された「name」という名前の入力フィールドの値を取得する。取得したnameの値を用いて、return f"Hello, {name}!"のようにユーザーへの応答を生成し、Webブラウザに返す。これにより、ユーザーが入力した名前を元にしたパーソナライズされたメッセージを表示するアプリケーションが完成する。
ここまでで、Flaskの基本的な概念を理解し、実際にシンプルなWebアプリケーションを構築できるようになった。さらにアプリケーションの機能を拡張するためには、次のようなステップが考えられる。例えば、SQLite、MySQL、PostgreSQLといったデータベースを接続してデータを永続的に保存したり、Flask-Loginのような拡張機能を利用してユーザー認証システムを構築したり、Flask-WTFを使ってフォームの入力値検証を強化したりと、様々な発展的な機能を追加できる。また、開発したWebアプリケーションをインターネット上で一般に公開するためには、Heroku、PythonAnywhere、Google Cloudといったクラウドプラットフォームへの「デプロイ」についても学習する必要がある。
Flaskは、そのシンプルさからWeb開発初心者にとって非常に学習しやすいフレームワークであると同時に、拡張性の高さから、小規模な個人ポートフォリオサイトから、APIバックエンド、さらには本格的なWebアプリケーションまで、多岐にわたるプロジェクトに対応できる汎用性の高いツールだ。この基礎をしっかりと理解し、様々な機能を試しながら、自分だけのWebアプリケーション開発に挑戦してみてほしい。