カテゴリ: Flask 更新日: 2025/12/25

FlaskでJSONデータを返してフロントエンドで動的表示する方法を完全ガイド!初心者でもわかる連携の基本

FlaskでJSONデータを返してフロント側で動的表示する方法
FlaskでJSONデータを返してフロント側で動的表示する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、Flaskで作ったアプリとJavaScriptを連携して、データを動的に表示するにはどうすればいいですか?」

先生

「いい質問ですね。Flaskでは、サーバー側でJSONデータを返して、フロントエンド(ブラウザ側)でJavaScriptを使って表示する方法がよく使われます。」

生徒

「JSONってよく聞きますけど、どんなものなんですか?」

先生

「JSON(ジェイソン)とは、“JavaScript Object Notation”の略で、データをやり取りするための形式です。人間にも読みやすく、パソコンにも扱いやすい構造をしているんですよ。」

生徒

「なるほど!じゃあFlaskでJSONを返して、それをフロント側で表示するにはどうすればいいんですか?」

先生

「それでは、Flaskとフロントエンドの連携を実際の例で見ていきましょう!」

1. FlaskでJSONを返すとは?

1. FlaskでJSONを返すとは?
1. FlaskでJSONを返すとは?

まず、Flask(フラスク)とはPython(パイソン)で作られた軽量なWebフレームワークです。WebアプリケーションやAPI(エーピーアイ:他のプログラムとデータをやり取りする仕組み)を簡単に作ることができます。

Flaskで「JSONを返す」というのは、ブラウザやフロントエンド(HTMLやJavaScriptで作られた画面)に対して、データをJSON形式で送信することを意味します。

たとえば「Pythonで作ったリストや辞書(dictionary)」を、ブラウザが理解できる形式に変換して返すんです。

2. FlaskでJSONデータを返す基本コード

2. FlaskでJSONデータを返す基本コード
2. FlaskでJSONデータを返す基本コード

では、FlaskでJSONデータを返すシンプルなサンプルを見てみましょう。以下のようなコードを書きます。


from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/api/data")
def get_data():
    data = {
        "name": "Taro",
        "age": 25,
        "hobby": "プログラミング"
    }
    return jsonify(data)

if __name__ == "__main__":
    app.run(debug=True)

jsonify()関数は、Pythonの辞書型(キーと値のペア)をJSON形式に変換して返してくれる便利な関数です。これを使うことで、ブラウザやJavaScriptが理解できるデータを簡単に送信できます。

3. フロントエンド(HTML+JavaScript)でJSONを受け取って表示

3. フロントエンド(HTML+JavaScript)でJSONを受け取って表示
3. フロントエンド(HTML+JavaScript)でJSONを受け取って表示

次に、ブラウザ側のHTMLファイルを作って、Flaskから送られてくるJSONデータを画面に表示してみましょう。


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>FlaskとJSONの連携</title>
</head>
<body>
    <h1>FlaskからのJSONデータを表示</h1>
    <div id="result">データを取得中...</div>

    <script>
        // FlaskのAPIにアクセス
        fetch("/api/data")
            .then(response => response.json())
            .then(data => {
                // JSONデータを受け取ったら表示
                document.getElementById("result").innerHTML = `
                    名前: ${data.name}<br>
                    年齢: ${data.age}<br>
                    趣味: ${data.hobby}
                `;
            })
            .catch(error => {
                document.getElementById("result").innerHTML = "データの取得に失敗しました。";
                console.error("エラー:", error);
            });
    </script>
</body>
</html>

fetch()関数は、JavaScriptでサーバーと通信するための関数です。Flaskで作ったAPI(ここでは/api/data)にアクセスして、その結果をJSONとして受け取っています。

そして、受け取ったデータをHTMLの中に埋め込んで、ユーザーの画面に動的(リアルタイムに変わる)に表示しています。

4. Flaskとフロントエンドを連携させる仕組みを図で理解しよう

4. Flaskとフロントエンドを連携させる仕組みを図で理解しよう
4. Flaskとフロントエンドを連携させる仕組みを図で理解しよう

初心者の方には、この「サーバーとフロントの関係」が少し分かりづらいかもしれません。簡単に言うと、Flaskが「データを作る係」、フロントエンド(HTMLとJavaScript)が「データを表示する係」です。

流れはこんな感じです:

  • ① ユーザーがWebページを開く
  • ② JavaScriptがFlaskに「データください」とリクエストを送る
  • ③ FlaskがPythonでデータを作り、JSON形式で返す
  • ④ JavaScriptが受け取ったデータをHTMLに書き出して画面に表示

このように、FlaskとJavaScriptは「JSON」という共通の言葉で会話しているイメージです。

5. 動的表示をもう少し発展させてみよう

5. 動的表示をもう少し発展させてみよう
5. 動的表示をもう少し発展させてみよう

次に、Flask側で複数のデータを返して、フロントでリスト表示する例を紹介します。例えば、商品の一覧やユーザーリストを表示したい場合に使えます。


from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/api/users")
def get_users():
    users = [
        {"id": 1, "name": "Taro"},
        {"id": 2, "name": "Hanako"},
        {"id": 3, "name": "Jiro"}
    ]
    return jsonify(users)

<ul id="user-list"></ul>

<script>
fetch("/api/users")
    .then(res => res.json())
    .then(users => {
        const list = document.getElementById("user-list");
        users.forEach(u => {
            const li = document.createElement("li");
            li.textContent = `${u.id}: ${u.name}`;
            list.appendChild(li);
        });
    });
</script>

このように、Flaskで複数のデータを返すときは、Pythonのリスト(配列のようなもの)をJSONに変換して返すだけでOKです。JavaScript側ではforEach()で1つずつ取り出して表示します。

6. JSON通信を使うとできること

6. JSON通信を使うとできること
6. JSON通信を使うとできること

FlaskでJSONを返す仕組みを理解すれば、次のようなことができるようになります。

  • チャットアプリのメッセージ一覧をリアルタイム表示
  • 天気情報やニュースの自動更新
  • ユーザーがボタンを押したら新しいデータを取得して表示

これらはすべて、FlaskでJSONを返してJavaScriptで動的に表示するという仕組みの応用です。Pythonとフロントエンドの両方を理解することで、よりインタラクティブなWebアプリケーションを作ることができます。

まとめ

まとめ
まとめ

FlaskとJSON連携の基本を振り返ろう

この記事では、FlaskでJSONデータを返し、それをフロントエンドで受け取って 動的に表示するまでの流れを、初心者向けに順を追って解説してきました。 FlaskはPythonで書かれた軽量なWebフレームワークであり、 サーバー側でデータを用意し、JSON形式で返す役割を担っています。 一方、フロントエンドではHTMLとJavaScriptを使って、 そのJSONデータを受け取り、画面の一部を書き換えることで、 ページを再読み込みせずに内容を更新できます。

特に重要なのは、「Flaskがデータを返すだけ」「JavaScriptが表示を担当する」 という役割分担です。 この考え方を理解すると、処理の流れが整理しやすくなり、 どこで何が起きているのかを迷わず把握できるようになります。 Flaskとフロントエンドは、JSONという共通の形式を通じて、 スムーズにデータのやり取りを行っているのです。

JSONデータを返す仕組みのポイント

FlaskでJSONデータを返すときは、 Pythonの辞書やリストをjsonify()関数で変換するだけで済みます。 これにより、ブラウザ側でも扱いやすい形式でデータを送信できます。 APIとしてJSONを返す形にしておくことで、 フロントエンドの表示方法を後から変更したり、 別の画面や別のアプリから同じデータを使ったりすることも可能になります。

また、フロントエンド側ではfetch()を使ってAPIにアクセスし、 返ってきたJSONをJavaScriptのオブジェクトとして受け取ります。 そのデータをHTMLに反映することで、 ユーザーの操作に応じた柔軟な画面表示が実現できます。 この一連の流れが、「動的表示」の基本となります。

基本的なJSON取得と表示のサンプル


// FlaskのAPIからJSONを取得して表示する基本例
fetch("/api/data")
    .then(response => response.json())
    .then(data => {
        document.getElementById("result").textContent =
            data.name + " さんの情報を取得しました";
    });

このように、難しい処理を書かなくても、 数行のコードでサーバーと通信し、結果を画面に反映できます。 最初はコードの意味が分からなくても、 「データを取得して、表示する」という流れを意識するだけで十分です。 何度か試しているうちに、自然と理解が深まっていくでしょう。

FlaskとJSON連携を理解すると広がる世界

FlaskでJSONを返してフロントエンドで動的表示できるようになると、 Webアプリ開発の幅は一気に広がります。 例えば、検索結果のリアルタイム更新や、 ユーザー一覧の表示、データの自動取得など、 実用的な機能の多くはこの仕組みを応用して作られています。

今回学んだ内容は、シンプルなサンプルですが、 実際のWebサービスでも基本構造はほとんど同じです。 FlaskでJSONを返し、JavaScriptで受け取り、画面に反映する。 この流れをしっかり身につけることで、 Pythonとフロントエンドをつなぐ力が着実に身についていきます。

先生と生徒の振り返り会話

生徒

「FlaskでJSONを返して、それをJavaScriptで表示する流れが、 だいぶイメージできるようになりました。 サーバーと画面が役割分担しているのが分かりやすかったです。」

先生

「それは良い理解だね。 Flaskはデータを作ることに集中して、 表示はフロントエンドに任せる。 この考え方ができると、Webアプリはとても作りやすくなるよ。」

生徒

「最初はJSONが難しそうに見えましたが、 ただのデータの形なんだと分かって安心しました。 これなら、少しずつ応用できそうです。」

先生

「その調子だね。 今回の内容を土台にして、 データの種類や表示方法を増やしていけば、 もっと動きのあるWebアプリが作れるようになるよ。」

カテゴリの一覧へ
新着記事
New1
Flask
FlaskでSQLインジェクションを防ぐ方法!初心者でもわかる安全なデータベース操作
New2
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New3
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New4
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本