【Flaskで作る!】軽量WebアプリとRESTful APIの基本を学ぶサンプルコード付き!

※関数の書き方・実行結果に誤りがあるケースがあります。随時修正中です。また誤りに気づかれた方はこちらからご連絡頂きますとめちゃ嬉しいです。

目次

今回の講座の導入文

みんな、こんにちは!今日はPythonの中でも人気のあるライブラリ「Flask」について学んでいくで!Flaskは軽量なWebアプリを作るためのもんやから、初心者でも手軽に使えるんが魅力やな。例えば、小さなカフェがメニューをWebで見せたいとき、Flaskを使えばあっという間に素敵なサイトが作れるんやで。

Flaskのええところは、必要な機能をちょっとずつ追加できるとこや。最初は簡単なアプリから始めて、徐々に機能を増やしていくこともできるから、まるで自分だけのオリジナル料理を作っていくみたいなもんやな。

さあ、今回はFlaskの基本から応用まで、楽しく学んでいこう!準備はええか?

① Flaskの概要とセットアップ

まずは、Flaskがどんなもんかをざっくり説明するで。FlaskはPythonで作られたマイクロフレームワークや。これがどういうことか言うたら、必要最低限の機能を持っとるから、使い始めるのがめっちゃ簡単なんや。さらに、自分の好きな機能を追加してカスタマイズすることもできるんやで!

Flaskの特徴

  • 軽量でシンプルやから、すぐに始められる
  • 自由度が高いので、アプリに応じたカスタマイズができる
  • 大きなコミュニティがあって、情報が豊富や

セットアップ方法

それじゃあ、Flaskを使うための準備をしていこう!Google Colabを使ってる場合、以下のコマンドを実行してFlaskをインストールしてな。

!pip install Flask

これでFlaskがインストールできたら、簡単なアプリを作ってみるで!次は実際にFlaskを使ってみる準備が整ったら、ルーティングやビューの作成に進むで!楽しみやな!

② ルーティングとビューの作成

さて、Flaskのセットアップができたら、次はルーティングとビューの作成について学んでいくで!ルーティングっていうのは、URLとそのURLに対応する処理を結びつけることや。これを使うことで、ユーザーがどのページにアクセスしたかによって、表示する内容を変えることができるんや。

ルーティングの基本

Flaskでは、@app.routeデコレーターを使ってルートを定義するんや。これを使うと、特定のURLに対してどんな処理をするかを指定できるで。

簡単なアプリの作成

ここで、実際に簡単なFlaskアプリを作ってみよう!以下のコードを実行してみてな。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return 'Welcome to my Flask app!'

@app.route('/about')
def about():
    return 'This is a simple Flask app.'

if __name__ == '__main__':
    app.run(port=3000)

コードの説明

  • Flaskオブジェクトを作成して、アプリケーションのインスタンスを生成するんや。
  • @app.route('/')は、ホームページのURL(/)にアクセスしたときに表示される内容を指定してるで。
  • @app.route('/about')は、/aboutにアクセスしたときに表示される内容を指定してる。

これで、2つのページがある簡単なFlaskアプリが完成したで!次は、もっと楽しいことをしていくために、テンプレートの使用について学んでいこう!準備はええか?

③ テンプレートの使用(Jinja2)

さて、次はテンプレートを使ってみるで!FlaskではJinja2という強力なテンプレートエンジンを使って、HTMLを動的に生成することができるんや。これを使うことで、アプリの見た目を簡単にカスタマイズできるし、データを表示するのも楽になるで!

Jinja2の基本

Jinja2では、変数や制御構文を使ってHTMLを生成することができるんや。例えば、Pythonの変数をHTMLに埋め込んだり、条件分岐やループを使ってリストを表示したりできるで。

テンプレートの作成

まずは、テンプレートを使った簡単なアプリを作ってみよう!以下のコードを実行する前に、templatesというフォルダを作って、その中にhome.htmlというファイルを作ってな。

home.htmlの内容はこんな感じや:

<!doctype html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>Flask App</title>
</head>
<body>
    <h1>{{ title }}</h1>
    <p>Welcome to my Flask app!</p>
</body>
</html>

次に、以下のPythonコードを実行してな。

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('home.html', title='Home Page')

if __name__ == '__main__':
    app.run(port=3000)

コードの説明

  • render_template関数を使って、指定したHTMLテンプレートをレンダリングして返すんや。
  • home.html内の{{ title }}の部分に、title='Home Page'で指定した文字列が入るで。

これで、テンプレートを使ったFlaskアプリが完成したで!次は、さらに進んでフォーム処理の基本について学んでいこう!準備はできてるか?

④ フォーム処理の基本

さあ、次はフォーム処理の基本について学んでいくで!ウェブアプリケーションでは、ユーザーからの入力を受け取るためにフォームが必要や。Flaskでは簡単にフォームを作って、送信されたデータを処理することができるんや。

フォームの作成

まずは、HTMLでフォームを作成してみよう。templatesフォルダ内にform.htmlというファイルを作ってな。内容は以下の通りや:

<!doctype html>
<html lang="ja">
<head>
    <meta charset="utf-8">
    <title>フォーム</title>
</head>
<body>
    <h1>情報を入力してください</h1>
    <form action="/submit" method="POST">
        <label for="name">名前:</label>
        <input type="text" id="name" name="name" required>
        <button type="submit">送信</button>
    </form>
</body>
</html>

次に、以下のPythonコードを実行してな。

from flask import Flask, render_template, request

app = Flask(__name__)

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

@app.route('/submit', methods=['POST'])
def submit():
    name = request.form['name']
    return f'こんにちは、{name}さん!'

if __name__ == '__main__':
    app.run(port=3000)

コードの説明

  • form.htmlでは、ユーザーが名前を入力できるフォームを作成してるで。
  • action="/submit"は、フォームが送信されたときにどのURLにデータを送るかを指定してる。
  • request.formを使って、送信されたデータを取得できるんや。

これで、ユーザーが名前を入力して送信すると、その名前を使って挨拶を返す簡単なアプリが完成したで!次は、RESTful APIの作成について学んでいこう!楽しみやな!

⑤ 簡単なRESTful APIの作成

さあ、最後はRESTful APIの作成について学んでいくで!RESTful APIを使うと、他のアプリやサービスとデータをやり取りできるから、めっちゃ便利や。Flaskを使えば、簡単にAPIを構築することができるんや。

RESTful APIの基本

REST(Representational State Transfer)に基づいたAPIは、HTTPメソッド(GET、POST、PUT、DELETEなど)を使ってリソースを操作する形で設計されるんや。Flaskでは、それぞれのメソッドに対してエンドポイントを設定することで、APIを作成できるで。

簡単なAPIの作成

ここで、簡単なRESTful APIを作ってみよう!以下のPythonコードを実行してな。

from flask import Flask, jsonify, request

app = Flask(__name__)

# データの初期化
tasks = []

@app.route('/tasks', methods=['GET'])
def get_tasks():
    return jsonify(tasks)

@app.route('/tasks', methods=['POST'])
def add_task():
    task = request.json
    tasks.append(task)
    return jsonify(task), 201

if __name__ == '__main__':
    app.run(port=3000)

コードの説明

  • tasksというリストを作って、そこにタスクを保存するで。
  • @app.route('/tasks', methods=['GET'])では、GETリクエストを受け取ったときに、現在のタスクを返すようにしてる。
  • @app.route('/tasks', methods=['POST'])では、POSTリクエストを受け取ったときに、リクエストボディに含まれるJSONデータをタスクとして追加してる。

動作確認

このAPIを動かしたら、例えば以下のようにHTTPリクエストを送信してみてな。

  1. GETリクエスト: http://localhost:3000/tasks にアクセスすると、現在のタスクのリストがJSON形式で返ってくるで。
  2. POSTリクエスト: http://localhost:3000/tasksに、例えば以下のようなJSONデータを送信すると、タスクが追加される。
{
    "task": "新しいタスク"
}

これで、簡単なRESTful APIが完成したで!これからは、他のアプリケーションとデータをやり取りすることができるようになるんや。Flaskを使って、いろいろな機能を追加してみてな!

これで、Flaskの基本的な使い方について学ぶことができたで!次は、もっと深いところに進んで、自分だけのアプリケーションを作ってみよう!お疲れさん!

【Flaskで作る!】軽量WebアプリとRESTful APIの基本を学ぶサンプルコード付き!

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

この記事を書いた人

目次