FlaskでJSONレスポンスを返す方法!初心者でもわかるAPIの基本出力
生徒
「PythonでWebサイトを作れるって聞いたんですけど、Flaskって何ですか?」
先生
「Flask(フラスク)は、Pythonで簡単にWebアプリケーションを作るためのツール(フレームワーク)です。ホームページを作ったり、データを返したりするのに使われます。」
生徒
「データを返すって、どういうことですか?」
先生
「例えば、アプリやWebサービスが欲しい情報を要求してきた時に、Flaskが“JSON”という形でデータを送り返すんです。これが“JSONレスポンス”です。」
生徒
「なるほど!JSONって何ですか?」
先生
「JSON(ジェイソン)は、コンピューター同士が情報をやりとりするための共通の言葉のようなものです。では実際にFlaskでJSONを返す方法を一緒に学んでみましょう!」
1. Flaskとは?超基本から解説!
Flask(フラスク)は、PythonでWebアプリケーションやAPIを簡単に作れる軽量なフレームワークです。フレームワークとは、「何かを作るときに使う道具のセット」とイメージすると分かりやすいでしょう。
Flaskはシンプルで直感的なので、プログラミング初心者でも扱いやすいのが特徴です。
2. APIとJSONとは?初心者向けの超やさしい説明
API(エーピーアイ)は「Application Programming Interface(アプリケーション・プログラミング・インターフェース)」の略で、コンピューター同士が情報をやりとりする“窓口”のようなものです。
例えば、スマホアプリが天気予報の情報を欲しい時に、APIを通じて「今日の天気を教えて」と聞くと、返事として「晴れです」とデータが送られてきます。
JSON(ジェイソン)とは、その返事の形式です。人間にとって読みやすく、コンピューターにとっても扱いやすい形でデータを表現できます。
JSONの例:
{
"name": "Taro",
"age": 25
}
3. Flaskを使ってJSONを返す基本コード
では、実際にFlaskでJSONレスポンスを返すプログラムを見てみましょう。下記のサンプルは、Flaskを使って「こんにちは」というメッセージをJSONで返す非常にシンプルな例です。
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/hello")
def hello():
return jsonify({"message": "こんにちは!ようこそFlaskへ!"})
if __name__ == "__main__":
app.run(debug=True)
@app.route("/hello")は、「/hello」という場所にアクセスがあったときの動きを定義しています。
jsonify()は、辞書(Pythonのデータ形式)をJSON形式に変換して返すための関数です。
4. 実行してブラウザで確認してみよう!
このコードを「app.py」という名前で保存し、ターミナル(黒い画面の操作画面)で下記のように実行します。
python app.py
実行後、下記のような表示が出てきます:
* Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
ブラウザを開いて、URL欄に「http://127.0.0.1:5000/hello」と入力すると、次のような結果が表示されるはずです。
{
"message": "こんにちは!ようこそFlaskへ!"
}
5. なぜJSONで返すの?HTMLと何が違うの?
HTMLは人間が見るためのデータ形式です。一方、JSONはアプリや他のシステムが処理しやすいデータ形式です。
たとえば、天気アプリや地図アプリなどは、裏でAPIを使ってJSON形式のデータを受け取り、それを画面に表示しています。
つまりJSONレスポンスは、アプリ同士の会話に使われる言語のようなものです。
6. よくある質問(初心者向けFAQ)
Q1. Flaskは無料ですか?
はい、完全に無料で使えます。オープンソースという仕組みで、多くの人が開発に参加しています。
Q2. Flaskはどこでインストールできますか?
Pythonをインストールしたら、コマンドプロンプトやターミナルで以下のように入力するだけでOKです。
pip install Flask
Q3. jsonifyって何ですか?
Flaskが持っている関数で、Pythonの辞書(キーと値のセット)をJSONという形に変換してくれます。
Q4. なぜ「@app.route」って書くの?
これは「この関数はどこのURLで動くのか」をFlaskに教えるための目印です。「/hello」と書くと、「http://~/hello」にアクセスしたときにこの関数が動きます。
7. もっと簡単なJSONレスポンスの例
「こんにちは」だけじゃなく、例えば数字やリスト(複数のデータ)も返すことができます。次の例を見てみましょう。
from flask import Flask, jsonify
app = Flask(__name__)
@app.route("/info")
def info():
return jsonify({
"name": "Hanako",
"age": 30,
"hobbies": ["映画", "読書", "料理"]
})
if __name__ == "__main__":
app.run(debug=True)
ブラウザで http://127.0.0.1:5000/info にアクセスすると、次のようなJSONが返ってきます。
{
"name": "Hanako",
"age": 30,
"hobbies": ["映画", "読書", "料理"]
}
このようにFlaskを使えば、初心者でも簡単にAPIの基本出力としてJSONを返す仕組みを作ることができます。
まとめ
Flaskを使ってJSONレスポンスを返す仕組みは、WebアプリケーションやAPIを作るうえで欠かせない基礎となります。今回の記事では、Flaskとは何かという基本からはじまり、APIとJSONの役割、そして実際にFlaskでJSONを返すためのコードの書き方まで、順を追って深く学ぶことができました。特に、JSONという形式がアプリ同士のやり取りでどれほど重要なのかを理解することで、普段使っているサービスがどのように情報交換しているのかという裏側の仕組みが見えるようになり、プログラミングの理解がさらに広がります。 FlaskでJSONを返すコードはとてもシンプルで、初心者でも扱いやすく、短い記述の中にWebアプリの本質的な動きが凝縮されています。たとえば、@app.route でURLの入口を作り、jsonify() を使ってPythonの辞書をJSON形式に変換して返すという流れは、数行のコードで実現できるにも関わらず、他のアプリや外部システムから利用できる強力なAPIの基礎となります。この基本を理解しておくことで、外部データを取得するアプリ、チャットボット、スマートフォンアプリのバックエンドなど、応用範囲の広い開発に進むことができます。 また、FlaskでJSONを返すという操作は、情報の「見せ方」がHTMLとは違うことも理解できる良い機会です。HTMLは人が見るための形式ですが、JSONはアプリやサービスがそのまま扱える形式であるため、機械的なやり取りに向いています。その違いを踏まえることで、アプリがどのように情報を受け取り、どのように外へデータを返すのか、全体像を自然にイメージすることができます。 ここでは今回の学びを広く応用できるように、少し機能を発展させたサンプルコードを用意しました。複数のJSONレスポンスを返すルートを追加し、基本的なデータ構造がどのように返されるのかを確認できる内容です。実際にコードを動かしながら、Flaskがどのようにデータを組み立てて返しているかを確かめてみてください。
JSONレスポンスをまとめたサンプルプログラム
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/hello")
def hello():
return jsonify({"message": "こんにちは!FlaskからのJSONレスポンスです!"})
@app.route("/userinfo", methods=["GET"])
def userinfo():
name = request.args.get("name", "ゲスト")
age = request.args.get("age", "不明")
return jsonify({
"name": name,
"age": age,
"status": "情報を受け取りました"
})
@app.route("/items")
def items():
return jsonify({
"items": [
{"id": 1, "name": "りんご", "price": 120},
{"id": 2, "name": "ばなな", "price": 80},
{"id": 3, "name": "みかん", "price": 100}
]
})
if __name__ == "__main__":
app.run(debug=True)
このサンプルでは、「/hello」でシンプルなメッセージを返し、「/userinfo」ではURLのパラメータから受け取ったデータを使って応答を返します。また、「/items」ではリスト形式のデータをJSONとして返す例となっており、複数のデータを扱うAPIを作るときの基本的な考え方が自然に身につきます。こうしたサンプルを動かしながら、辞書やリストをJSONに変換して返す動きを体感すると、Flaskがどのようにデータを構造化してWeb側に返しているかがよく分かるでしょう。 JSONレスポンスを使えるようになると、外部アプリとの連携や、JavaScriptと組み合わせた非同期処理、スマートフォンアプリのデータ取得など、さまざまな応用に発展できます。特にAPIは実際の画面を持たないぶん、コードとデータの構造をしっかり理解することが重要です。今回の内容はその基礎を丁寧に網羅しているので、今後の学習に大きく役立つはずです。 少し慣れてきたら、POSTメソッドでデータを送るAPIや、複雑なJSON構造を返すAPIにも挑戦してみるとよいでしょう。「データをどう受け取ってどう返すか」という考え方がしっかり身につけば、APIを使った開発の幅はぐっと広がり、より自由なアプリケーションづくりができるようになります。
生徒
「FlaskでJSONを返す仕組みって、思っていたより分かりやすいんですね。実際にブラウザで見たらきれいに整ったデータが返ってきて驚きました!」
先生
「そうでしょう。jsonifyを使うだけで、辞書データをそのままJSONにして返せるので、とても扱いやすいですよ。APIの入口として最適です。」
生徒
「パラメータをURLにつけるだけでデータを受け取れる仕組みも便利ですね。スマホアプリやWebアプリがどうやって情報を取っているのかイメージできました!」
先生
「JSONレスポンスは多くのサービスで使われているので、ここを理解しておくと応用がとても効きますよ。次はPOSTを使ってデータを送る方法もやってみましょう。」
生徒
「はい!もっと複雑なデータも返せるようになりたいです!」
先生
「その気持ちが大事です。今回の基礎がしっかり理解できていれば、応用も十分にこなせるようになりますよ。」