PythonとFlaskでWebアプリケーションを実装する方法

  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

Raspberry Pi 5を使って、Pythonの基本を学びながら簡単なWebサーバーを構築してみませんか?

今回の記事では、初心者向けにPythonの軽量ウェブフレームワークであるFlaskを使って、Raspberry Pi上で動作するウェブアプリケーションの作成方法を解説します。

Flaskを利用することで、シンプルかつ効率的にウェブアプリケーションを開発できるため、プログラミング初心者にも最適な学習素材となります。

目次

環境

ハードウェア:Raspberry Pi 5

今回はFlaskで構築したアプリケーションを動作させるハードウェアとしてRaspberry Pi 5を使用します。

Raspberry Pi 5は、強力な性能を誇る最新のシングルボードコンピュータです。4コアのCortex-A76プロセッサと最大8GBのRAMを搭載し、前モデルに比べて大幅に性能が向上しています。

これにより、教育用途からIoTプロジェクト、ホームサーバー構築まで、幅広いアプリケーションに対応可能です。低価格でありながら高性能で、プログラミング学習やプロトタイピングに最適です。

Raspberry Pi
¥14,370 (2024/09/19 17:31時点 | Amazon調べ)

ケース:Pironman5

Raspberry Pi 5は高性能な反面、発熱が大きいという問題を抱えています。

Webサーバーを運用する場合は長期間安定動作可能な冷却性能を持ったケースを選定することが重要となりますので、SunFounderから発売されているPironman5を使用します。

Pironman5の仕様や性能は以下の記事で詳細を解説していますので、あわせてご覧ください。

Flaskとは

Flaskは、Pythonでウェブアプリケーションを開発するための軽量なフレームワークです。Flaskはシンプルで使いやすく、初心者からプロフェッショナルまで幅広いユーザーに利用されています。

Flaskの特徴
  1. シンプルで直感的: Flaskは最小限の構成で始めることができ、必要に応じて機能を追加していくことができます。これにより、学習曲線が緩やかで、初心者にも扱いやすいフレームワークとなっています。
  2. モジュール化と拡張性: Flaskは非常に拡張性が高く、必要に応じて様々な拡張機能(エクステンション)を追加できます。例えば、データベースとの連携、フォームのバリデーション、認証機能など、多くの拡張機能が用意されています。
  3. 柔軟なテンプレートエンジン: FlaskはJinja2という強力なテンプレートエンジンを使用しています。Jinja2を使うことで、HTMLの中にPythonのコードを埋め込むことができ、動的なウェブページを簡単に作成できます。
  4. コミュニティとドキュメント: Flaskは大規模なコミュニティによって支えられており、豊富なドキュメントやチュートリアルが提供されています。問題が発生した際には、コミュニティのサポートを受けることができます。

Flask実行環境の作成

仮想環境の構築

まず、Flaskアプリケーションのプロジェクトディレクトリ(flask_app)に移動します。

mkdir flask_app
cd ~/flask_app

仮想環境を作成します。

python3 -m venv venv

ディレクトリの権限を確認します。

ls -la /home/pi/flask_app/venv/lib/python3.11/site-packages/

必要に応じて権限を修正します。

sudo chown -R pi:pi /home/pi/flask_app/venv

仮想環境を有効にします。

source venv/bin/activate

PythonとFlaskのインストール

Flaskをインストールします。

pip install flask psutil

以下のようにメッセージが表示されたらインストール成功です。

Installing collected packages: psutil, MarkupSafe, itsdangerous, click, blinker, Werkzeug, Jinja2, flask
Successfully installed Jinja2-3.1.4 MarkupSafe-2.1.5 Werkzeug-3.0.3 blinker-1.8.2 click-8.1.7 flask-3.0.3 itsdangerous-2.2.0 psutil-6.0.0

発生したエラー

以下のようなエラーが発生する場合は、仮想環境を作成してディレクトリの権限を再確認してください。

pip3 install flask
error: externally-managed-environment

× This environment is externally managed
mq> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    For more information visit http://rptl.io/venv

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

Flaskアプリの作成

アプリケーションファイルの作成

作業ディレクトリに移動します。

cd flask_app

Webアプリケーションとして実行するPythonコードを作成します。ファイル名はapp.pyとします。

from flask import Flask, render_template
import psutil

app = Flask(__name__)

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

@app.route('/system')
def system():
    cpu_usage = psutil.cpu_percent(interval=1)
    memory_info = psutil.virtual_memory()
    memory_usage = memory_info.percent
    return render_template('system.html', cpu=cpu_usage, memory=memory_usage)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

テンプレートディレクトリとHTMLファイルの作成

templatesディレクトリを作成し、その中にindex.htmlファイルを作成します。

sudo mkdir templates
sudo nano templates/index.html

index.htmlには以下の内容を追加します。

<!DOCTYPE html>
<html>
<head>
    <title>My Flask App</title>
</head>
<body>
    <h1>Welcome to My Flask App!</h1>
    <p>This is a simple web server running on Raspberry Pi 5.</p>
</body>
</html>

system.htmlを作成します。

nano templates/system.html

以下の内容をsystem.htmlに追加します。

<!DOCTYPE html>
<html>
<head>
    <title>System Info</title>
</head>
<body>
    <h1>System Information</h1>
    <p>CPU Usage: {{ cpu }} %</p>
    <p>Memory Usage: {{ memory }} %</p>
</body>
</html>

ウェブサーバーの起動

アプリケーションの実行

Flaskアプリケーションを実行します。

python3 app.py

以下のように表示されたら起動成功です。

 * Serving Flask app 'app'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on all addresses (0.0.0.0)
 * Running on http://127.0.0.1:5000
 * Running on http://XXX.XXX.XX.XX:5000
Press CTRL+C to quit
192.168.11.9 - - [22/Jul/2024 21:07:30] "GET / HTTP/1.1" 200 -
192.168.11.9 - - [22/Jul/2024 21:07:30] "GET /favicon.ico HTTP/1.1" 404 -

ブラウザでの確認

同じネットワーク内の別のデバイスからRaspberry PiのIPアドレスを使って、Webブラウザからhttp://[RaspberryPiのIPアドレス]:5000にアクセスします。

アクセスに成功すると、以下のようにブラウザに表示されます。

まとめ

今回の記事では、Raspberry Pi 5を使ってFlaskを利用した簡易ウェブサーバーの構築方法を紹介しました。

Flaskの基本的な使い方から、実際にCPUとメモリの使用率を表示するアプリケーションの作成まで、具体的な手順を踏まえて解説しました。Flaskは非常にシンプルで使いやすいフレームワークであり、初心者でも直感的に学ぶことができます。

この記事を通じて、PythonとFlaskを使ったウェブアプリケーション開発の第一歩を踏み出せたのではないでしょうか。これからも様々なプロジェクトに挑戦し、プログラミングのスキルをさらに磨いていきましょう。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次