【Python】Flaskを始めよう

Flaskとは

Flaskは、Pythonで開発された軽量なWebアプリケーションフレームワークです。Webアプリケーションの構築を容易にするために設計されており、シンプルさと柔軟性が特徴です。

Flaskは、HTTPリクエストを受け取り、レスポンスを返すためのルーティングやビューを定義することができます。また、テンプレートエンジンを使用して動的なコンテンツの生成や、データベースとの連携、セッション管理など、一般的なWebアプリケーション開発に必要な機能を提供します。

Flaskの特徴の一つは、軽量かつシンプルな設計です。これにより、開発者は必要な機能を選択し、カスタマイズすることが容易になります。また、Flaskは拡張性が高く、多くのサードパーティ製拡張モジュールが利用可能です。これにより、データベース処理、認証、API開発など、さまざまな機能を追加することができます。

Flaskは人気のあるWebフレームワークであり、小規模なプロトタイプや中規模なアプリケーションの開発に適しています。また、FlaskはPythonのエコシステムともシームレスに連携することができるため、Pythonの豊富なライブラリやツールを活用することができます。

総じて言えば、Flaskはシンプルさと柔軟性を重視したPythonのWebフレームワークであり、Webアプリケーションの開発を迅速かつ効率的に行うためのツールです。

Flaskのインストール

Flaskを始めるためには、以下の手順に従ってインストールを行う必要があります。

  • Pythonのインストール: FlaskはPythonで動作するため、まずPythonをインストールする必要があります。公式のPythonウェブサイト (https://www.python.org) から最新バージョンのPythonをダウンロードし、インストールします。インストール中に「Add Python to PATH(環境変数にPythonを追加する)」オプションを選択してください。
  • 仮想環境の作成 (オプション): Pythonの仮想環境を作成することをお勧めします。仮想環境を使用すると、プロジェクトごとに独立したPython環境を構築できます。仮想環境を作成するには、コマンドライン(ターミナル)で以下のコマンドを実行します:
python -m venv myenv
  • これにより、名前が「myenv」という仮想環境が作成されます。仮想環境の名前は任意のものに変更することができます。
  • 仮想環境のアクティベーション: 仮想環境を作成した場合は、次に仮想環境をアクティベート(有効化)する必要があります。以下のコマンドを実行します:
    • Windows(コマンドプロンプトを使用する場合):
myenv\Scripts\activate

macOS/Linux(Bashシェルを使用する場合):

source myenv/bin/activate

Flaskのインストール: 仮想環境をアクティベートした場合は、コマンドラインで以下のコマンドを実行してFlaskをインストールします:

pip install flask
  • これにより、Flaskとそれに必要な依存関係がインストールされます。
  • Flaskアプリケーションの作成: Flaskのインストールが完了したら、テキストエディタを使用して新しいファイル(例: app.py)を作成します。このファイルにFlaskアプリケーションのコードを記述します。以下は、簡単なHello Worldアプリケーションの例です:
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()
  • この例では、ルートURL (“/”) へのリクエストが受信されたときに、”Hello, World!” という応答を返すFlaskアプリケーションが作成されます。
  • アプリケーションの実行: Flaskアプリケーションを実行するには、コマンドラインで以下のコマンドを実行します:
python app.py

Flaskはデフォルトでローカルホスト(http://127.0.0.1:5000/)でアプリケーションを実行します。Webブラウザを開き、このURLにアクセスすると、”Hello, World!” と表示されるはずです。

これで、Flaskのインストールと初めてのアプリケーションの作成・実行が完了しました。

FlaskにHTMLを使ったテンプレートを作成する方法

Flaskでは、HTMLを使ったテンプレートを作成することができます。以下の手順に従って、FlaskでHTMLテンプレートを作成する方法を説明します。

  • Flaskプロジェクトのディレクトリ内に、templatesという名前のディレクトリを作成します。Flaskはデフォルトでこのディレクトリ内のテンプレートを探します。
  • templatesディレクトリ内に、HTMLテンプレートを作成する新しいファイル(例: index.html)を作成します。テキストエディタを使用して、HTMLコードを記述します。例えば、以下のようなシンプルなindex.htmlファイルを作成します:
<!DOCTYPE html>
<html>
<head>
    <title>Flask Template</title>
</head>
<body>
    <h1>Welcome to Flask Template!</h1>
    <p>This is a sample HTML template.</p>
</body>
</html>
  • この例では、<h1>タグと<p>タグを使用してタイトルと本文を表示しています。
  • FlaskアプリケーションのPythonファイル(例: app.py)を開き、以下のようにコードを追加します:
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()
  • render_template関数を使用して、index.htmlテンプレートを表示するように指定しています。
  • Flaskアプリケーションを実行します(コマンドラインで python app.py を実行)。Webブラウザを開き、http://127.0.0.1:5000/にアクセスすると、index.htmlテンプレートの内容が表示されます。Flaskは自動的にtemplatesディレクトリ内を探索し、指定されたテンプレートファイルを読み込みます。

これで、FlaskでHTMLテンプレートを作成し、動的なコンテンツを表示することができます。テンプレート内では、フローティング変数、条件分岐、ループなどの制御構造を使用して、より複雑なテンプレートを作成することも可能です。FlaskのテンプレートエンジンにはJinja2が使用されているため、Jinja2の文法と機能を学ぶことも有用です。

if __name__ == ‘__main__’:

if __name__ == '__main__':app.run() の組み合わせは、Pythonスクリプトが直接実行される場合にのみ、Flaskアプリケーションを実行するための一般的なパターンです。以下に詳細を説明します。

Pythonのスクリプトファイル(.pyファイル)は、他のスクリプトやモジュールからインポートされることもありますが、また、直接実行されることもあります。

if __name__ == '__main__': は、Pythonインタプリタが現在実行しているスクリプトがエントリーポイント(直接実行されるファイル)である場合に条件が真となります。一方、他のスクリプトからインポートされた場合は条件が偽となります。

app.run() は、Flaskアプリケーションを起動するためのメソッドです。FlaskがローカルのWebサーバーを立ち上げ、アプリケーションを実行します。通常、app.run() はFlaskアプリケーションを実行するために必要な一行のコードです。

組み合わせると、if __name__ == '__main__': ブロック内に app.run() を配置することで、Pythonスクリプトが直接実行された場合にのみ、Flaskアプリケーションが実行されるようになります。他のスクリプトからインポートされた場合には、app.run() は実行されず、アプリケーション自体は起動されません。

このパターンは、Flaskアプリケーションを開発しているときに便利です。開発中に、他のスクリプトからアプリケーションをインポートしてテストしたり、モジュールとして再利用することができますが、同時にスクリプト単体として実行して動作を確認することもできます。

templatesに作成したindex.htmlにCSSとJavaScriptのファイルを追加する

Flaskのテンプレート内にCSSファイルやJavaScriptファイルを追加するには、以下の手順に従ってください。

  1. Flaskプロジェクトのディレクトリ内に、staticという名前のディレクトリを作成します。Flaskはデフォルトでこのディレクトリ内の静的ファイル(CSS、JavaScript、画像など)を探します。
  2. staticディレクトリ内に、cssという名前のディレクトリを作成します。CSSファイルをこのディレクトリに保存します。
  3. static/cssディレクトリ内に、CSSファイルを作成します(例: styles.css)。テキストエディタを使用して、CSSコードを記述します。
/* styles.css */
body {
    background-color: #f1f1f1;
}

h1 {
    color: blue;
}
  • この例では、背景色と見出しの色を指定しています。
  • 同様に、staticディレクトリ内に、jsという名前のディレクトリを作成します。JavaScriptファイルをこのディレクトリに保存します。
  • static/jsディレクトリ内に、JavaScriptファイルを作成します(例: script.js)。テキストエディタを使用して、JavaScriptコードを記述します。

// script.js
document.addEventListener('DOMContentLoaded', function() {
    alert('JavaScript loaded!');
});
  • この例では、ページの読み込みが完了したときにアラートメッセージを表示するコードを書いています。
  • index.htmlテンプレートを編集して、CSSファイルとJavaScriptファイルを追加します。<head>セクション内でCSSファイルをリンクし、<body>セクションの最後でJavaScriptファイルを読み込みます。
<!DOCTYPE html>
<html>
<head>
    <title>Flask Template</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='css/styles.css') }}">
</head>
<body>
    <h1>Welcome to Flask Template!</h1>
    <p>This is a sample HTML template.</p>

    <script src="{{ url_for('static', filename='js/script.js') }}"></script>
</body>
</html>

{{ url_for(...) }} は、Flaskのテンプレート内で静的ファイルのパスを生成するための特殊な構文です。これにより、正しいファイルパスが生成されます。

これで、index.htmlテンプレートにCSSファイルとJavaScriptファイルが追加されました。Flaskはこれらの静的ファイルを自動的に探し、リンクやスクリプトとして適切に読み込みます。Webブラウザでアプリケーションを実行すると、CSSが適用され、JavaScriptが実行されるはずです。