PythonのWebフレームワークFlaskを徹底解説! 軽量・柔軟な開発の始め方
Pythonを使ってWebアプリケーションを作ってみたいけど、何から手をつけていいか分からない…。そんな方におすすめなのが、Pythonの**軽量Webフレームワーク「Flask」**です。Flaskは、シンプルな構造と高い柔軟性で、小規模なアプリケーションからAPI開発まで幅広く利用されています。
この記事では、Flaskの基本的な概念から、インストール方法、そして実際に簡単なWebアプリケーションを作成する手順まで、初心者の方にも分かりやすく徹底的に解説します。Flaskをマスターして、あなただけのWebサービス開発の第一歩を踏み出しましょう!
Flaskとは? なぜWeb開発に使うのか?
Flaskは、PythonでWebアプリケーションを開発するためのマイクロフレームワークです。「マイクロ」と呼ばれる理由は、コア機能に絞られており、データベース操作やフォーム処理などの高度な機能は含まれていないためです。これらの機能は、必要に応じて拡張機能(Extension)を追加することで利用します。
なぜFlaskがWeb開発によく使われるのでしょうか?
-
軽量でシンプル: コード量が少なく、学習曲線が緩やかです。Webフレームワークの基本的な概念を理解するのに最適です。
-
高い柔軟性: 必要な機能を自由に選択して組み合わせることができます。特定のデータベースやテンプレートエンジンに縛られません。
-
開発の迅速性: 小規模なAPIサーバーやプロトタイプを素早く構築するのに向いています。
-
Pythonic: Pythonの哲学に沿った設計で、コードが読みやすく、直感的に記述できます。
-
豊富な拡張機能: データベースORM (SQLAlchemy)、認証 (Flask-Login)、RESTful API (Flask-RESTful) など、多様な拡張機能が提供されており、機能を追加しやすいです。
-
コミュニティの活発さ: 多くの開発者に利用されており、情報やサポートが豊富です。
Flaskのインストール方法
Flaskを使うには、まずPCにインストールする必要があります。Pythonのパッケージ管理ツールpipを使って簡単にインストールできます。
-
コマンドプロンプト(Windows) または ターミナル(macOS/Linux) を開きます。
-
以下のコマンドを実行します。
Bashpip install Flask
インストールが成功したか確認するには、Pythonのインタラクティブシェルでimport Flaskと入力し、エラーが出なければOKです。
FlaskでWebアプリケーション開発の基本ステップ
FlaskでWebアプリケーションを作成する際の基本的な流れは以下のようになります。
-
Flaskアプリケーションの初期化: Flaskアプリのインスタンスを作成します。
-
ルーティングの定義: URLとPythonの関数を結びつけます(どのURLにアクセスがあったらどの関数を実行するか)。
-
ビュー関数の作成: URLにアクセスされたときに実行される処理と、ユーザーに返すレスポンス(HTMLなど)を定義します。
-
アプリケーションの実行: 開発サーバーを起動し、Webブラウザからアクセスできるようにします。
Flaskで「Hello, World!」アプリケーションを作ってみよう!
ここでは、Webブラウザで「Hello, World!」と表示する最もシンプルなFlaskアプリケーションを作成します。
# app.py として保存
from flask import Flask
# 1. Flaskアプリケーションの初期化
app = Flask(__name__)
# 2. ルーティングの定義
# '/' (ルートURL) にアクセスがあったら hello_world 関数を実行する
@app.route('/')
def hello_world():
# 3. ビュー関数の作成とレスポンスの定義
return "Hello, World!"
# 4. アプリケーションの実行
if __name__ == '__main__':
app.run(debug=True) # debug=True で開発中に便利なデバッグモードを有効に
アプリケーションの実行方法
-
上記のコードを
app.pyという名前で保存します。 -
コマンドプロンプトまたはターミナルで、
app.pyを保存したディレクトリに移動します。 -
以下のコマンドを実行します。
Bashpython app.py
サーバーが起動すると、以下のようなメッセージが表示されます。
* Serving Flask app 'app'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
Webブラウザを開き、http://127.0.0.1:5000にアクセスしてみてください。「Hello, World!」と表示されるはずです。
コードの解説
-
from flask import Flask: FlaskモジュールからFlaskクラスをインポートしています。 -
app = Flask(__name__): Flaskアプリケーションのインスタンスを作成しています。__name__はPythonの特殊変数で、現在のモジュール名を指します。これにより、Flaskがどこからテンプレートや静的ファイルを探すべきかを認識します。 -
@app.route('/'): これはデコレータと呼ばれるPythonの構文です。このデコレータが、その直下のhello_world()関数を、URLパス/にマッピングしています。つまり、ユーザーがhttp://127.0.0.1:5000/にアクセスすると、hello_world()関数が実行されます。 -
def hello_world():: これはビュー関数と呼ばれます。ユーザーがURLにアクセスしたときに実行される実際のロジックがここに書かれます。 -
return "Hello, World!": ビュー関数は、Webブラウザに表示したい内容(この場合は文字列)を返します。FlaskはこれをHTTPレスポンスとしてユーザーに送信します。 -
if __name__ == '__main__':: この部分は、スクリプトが直接実行された場合にのみapp.run()が呼び出されるようにするためのPythonの慣習です。 -
app.run(debug=True): Flask開発サーバーを起動します。debug=Trueは開発中に非常に便利で、コードの変更を自動的に検知してサーバーを再起動したり、詳細なエラーメッセージを表示したりする機能が有効になります。本番環境ではdebug=Falseに設定するか、適切なWSGIサーバー(Gunicorn, uWSGIなど)を使用すべきです。
さらに一歩進んだFlask開発
上記の基本を押さえたら、次は以下の要素に挑戦してみましょう。
-
HTMLテンプレートの使用:
render_template関数を使って、HTMLファイルを生成し、動的なコンテンツを埋め込む方法を学びます。 -
変数のルーティング: URLパスの一部を変数として受け取り、ビュー関数で利用する方法です(例:
/users/<username>)。 -
HTTPメソッドの指定:
GETだけでなく、POSTリクエストなどを処理する方法を学び、フォーム送信などに対応します。 -
静的ファイル (CSS/JS/画像): CSSファイルでスタイルを適用したり、JavaScriptで動的な処理を追加したりする方法です。
-
拡張機能の利用: データベース連携 (
Flask-SQLAlchemy)、ユーザー認証 (Flask-Login) など、より複雑な機能を追加してみましょう。
まとめ
Flaskは、PythonでWebアプリケーション開発を始めるための優れた選択肢です。その軽量さ、シンプルさ、そして柔軟性により、初心者でも比較的簡単にWebサービスの基本を習得できます。
-
FlaskはPythonのマイクロWebフレームワーク。
-
pip install Flaskで簡単にインストール可能。 -
@app.route()デコレータでURLと関数をマッピング(ルーティング)。 -
ビュー関数がリクエストを処理し、レスポンスを返す。
-
app.run()で開発サーバーを起動し、Webブラウザからアクセス。
ぜひこの機会にFlaskの世界に飛び込んで、あなた自身のWebアプリケーションやAPIを構築する楽しさを体験してみてください!
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座
