Pythonで学ぶ 家計簿アプリ開発(第1回)~ Flask環境構築とHello Flask ~

GitHubでつくって学ぶ
A modern workspace showing collaborative coding with professionals engaged in a data structure project, focusing on coding processes and efficiency improvement. Amity

はじめに

今回から新しい連載として、Pythonの軽量WebフレームワークFlaskを使った「家計簿アプリ」の開発を通して、Pythonでのバックエンド開発の基礎を学んでいく企画をスタートする。

これまで本ブログの「GitHubでつくって学ぶ」シリーズでは、Reactを使ってブラウザの中だけで完結するアプリ(予定管理アプリ)を作ってきた。今回はその一歩先として、データベースにデータを保存する仕組みや、サーバー側でデータを処理する仕組みを持つアプリに挑戦する。

完成形としては、支出を記録し、月別・カテゴリ別に集計できる家計簿アプリを目指す。最終回では、実際にインターネット上へ公開するところまで行う予定である。

初回となる今回は、Codespaces上でFlaskの開発環境を整え、ブラウザに「Hello, PC-LABO!」と表示するだけの、最小限のアプリを動かすところまでを扱う。

今回やること

  • Flaskとは何かを知る
  • Codespaces上に、Flask用の開発環境(仮想環境)を作る
  • 最小構成のFlaskアプリを書き、ブラウザで表示を確認する

Flaskとは

Flaskは、Pythonで書かれた軽量なWebフレームワークである。同じPythonのWebフレームワークにDjangoがあるが、Djangoが「最初から機能てんこ盛り」なのに対し、Flaskは「必要な機能を自分で足していく」というスタイルを取っている。

そのため、最小構成であれば数行のコードでWebアプリが動き始める。今回のように「Webフレームワークの基礎から学びたい」という場合に向いている。

Codespacesでの環境構築

リポジトリを作成し、Codespacesを起動したら、まずPython専用の仮想環境(venv)を作る。仮想環境を使うと、プロジェクトごとに必要なパッケージを分けて管理でき、他のプロジェクトに影響を与えずに済む。

python -m venv venv
source venv/bin/activate

仮想環境が有効になると、ターミナルの先頭に(venv)という表示が出る。この状態で、Flaskをインストールする。

pip install flask

インストールしたパッケージは、あとで誰でも同じ環境を再現できるように、requirements.txtという形で書き出しておく。

pip freeze > requirements.txt

Hello Flaskを表示する

01_hello-flaskフォルダを作り、その中にapp.pyという名前でファイルを作成する。

app.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello, PC-LABO!"

コードの内容はシンプルである。

  • Flask(__name__):Flaskアプリケーション本体を作成する
  • @app.route("/"):「/(トップページ)にアクセスがあったら、直下の関数を実行する」という対応づけ
  • index():実際にブラウザへ返す内容(今回は文字列だけ)

準備できたら、以下のコマンドで起動する。

flask --app app run --debug

ポート転送の確認

Codespaces上でサーバーを起動すると、画面右下に「ポートが転送されました」という通知が出る。この通知の「ブラウザで開く」を選ぶか、「PORTS」タブから該当ポート(通常は5000番)を開くと、ブラウザで実際の画面を確認できる。

「Hello, PC-LABO!」と表示されていれば成功である。

今回のまとめ

  • Flaskは、必要な機能を自分で足していく、軽量なPython製Webフレームワークである
  • Codespaces上では、venvで仮想環境を作ってからFlaskをインストールする
  • 数行のコードだけで、Webサーバーを起動して画面を表示できる

次回予告

次回は、今回作った最小構成のアプリに、テンプレート(Jinja2)を使った画面表示を追加する。固定の支出データを、一覧としてブラウザに表示できるようにする予定である。

ソースコード

GitHub:pc-labo-python-learning/01_hello-flask

コメント

タイトルとURLをコピーしました