Python入門

PythonアプリをFlaskでゼロから作る!Web API入門チュートリアル

「Pythonでアプリ開発ってなんだか難しそう…どこから手をつければいいの?」

そう感じている方、多いんじゃないでしょうか。でも実は、Flaskを使えばたった数十行のコードでWeb APIが動かせます。今回はゼロから一緒に作りながら、Pythonアプリ開発の第一歩を踏み出してみましょう! 🐍

この記事の対象読者・難易度

Python Flask web development
Python Flask web development / Photo by Mathews Jumba via Pexels
  • ✅ Pythonの基本文法(変数・関数・if文)はなんとなくわかる
  • ✅ アプリやAPIを作ってみたいけど何から始めるか迷っている
  • ✅ Flaskという名前は聞いたことあるけど触ったことはない

難易度:★★☆☆☆(初〜中級者向け)

プログラミング経験ゼロの方には少し難しいかもしれませんが、Pythonを少しでも触ったことがあればきっと大丈夫です。

そもそもWeb APIって何?

「API」という言葉、よく聞きますよね。むずかしそうに聞こえますが、イメージとしては「データのやり取りをするための窓口」です。

たとえば、スマホアプリが天気情報を表示するとき、裏側では天気サービスのAPIに「今日の東京の天気を教えて!」とリクエストを送って、データを受け取っています。それだけのことなんですよね。

つまりWeb APIとは:

  • URLにアクセスするとデータ(JSONなど)が返ってくる仕組み
  • フロントエンドやスマホアプリと連携するバックエンドの役割を担う
  • Flaskを使うとPythonだけで簡単に作れる

Flaskとは?なぜFlaskを選ぶの?

FlaskはPython製の軽量Webフレームワークです。「フレームワーク」というのは、アプリ開発に必要な便利な道具がまとめてパッケージになったもの、くらいに思ってください。

PythonのWebフレームワークにはDjangoという大きな選択肢もありますが、初心者にはFlaskのほうが断然おすすめです。理由はシンプルで:

  • 🔰 必要最低限の機能だけ持っていてシンプル
  • 📄 コード量が少なく、全体像が把握しやすい
  • ⚡ 数分でサーバーを起動できる

「むずかしそう」を「できそう」に変えてくれるのがFlaskです。さっそく使っていきましょう!

環境準備:Flaskをインストールしよう

まずはFlaskをインストールします。ターミナル(コマンドプロンプト)で以下のコマンドを実行してください。

pip install flask

インストールが完了したら、確認しておきましょう。

pip show flask

バージョン情報が表示されればOKです 👌

STEP 1:最小構成のFlaskアプリを動かす

まずは「Hello, World!」を返すだけの最もシンプルなAPIを作ってみます。app.pyというファイルを作成して、以下のコードを書いてみてください。

# app.py
from flask import Flask

# Flaskアプリのインスタンスを作成
app = Flask(__name__)

# 「/」というURLにアクセスされたときの処理
@app.route('/')
def index():
    return 'Hello, Flask! 🎉'

# このファイルを直接実行したときだけサーバーを起動
if __name__ == '__main__':
    app.run(debug=True)

ポイントをまとめるとこんな感じです👇

  • @app.route(‘/’):URLのパスと関数を結びつける「デコレータ」です
  • debug=True:コードを変更したとき自動でサーバーが再起動します(開発時に便利!)
  • 関数が返した文字列がそのままレスポンスになります

ターミナルで python app.py を実行し、ブラウザで http://127.0.0.1:5000/ にアクセスしてみてください。「Hello, Flask! 🎉」と表示されれば成功です!

STEP 2:JSONを返すWeb APIを作る


実際のAPIはHTMLではなくJSON形式でデータを返します。FlaskにはJSONを簡単に返せる jsonify という機能があります。

# app.py(JSONを返すAPIに拡張)
from flask import Flask, jsonify

app = Flask(__name__)

# ダミーのユーザーデータ
users = [
    {'id': 1, 'name': '田中 太郎', 'email': 'taro@example.com'},
    {'id': 2, 'name': '佐藤 花子', 'email': 'hanako@example.com'},
]

# 全ユーザーを返すエンドポイント
@app.route('/api/users', methods=['GET'])
def get_users():
    # リストをJSONとして返す
    return jsonify(users)

# 特定のユーザーをIDで取得するエンドポイント
@app.route('/api/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    # IDが一致するユーザーを探す
    user = next((u for u in users if u['id'] == user_id), None)
    if user is None:
        # 見つからなければ404エラーを返す
        return jsonify({'error': 'User not found'}), 404
    return jsonify(user)

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

ここが重要です✍️

  • /api/users:全ユーザーをJSON配列で返します
  • /api/users/<int:user_id>:URLの一部を変数として受け取れます(例:/api/users/1
  • 見つからないときは404ステータスコードを返すのがAPIの基本マナーです

ブラウザで http://127.0.0.1:5000/api/users にアクセスするとJSONが表示されるはずです。試してみてください!

STEP 3:POSTリクエストでデータを受け取る

「データを送信して登録する」という処理も作ってみましょう。これでAPIらしくなってきます 🚀

# app.py(POSTリクエストを受け取る機能を追加)
from flask import Flask, jsonify, request

app = Flask(__name__)

users = [
    {'id': 1, 'name': '田中 太郎', 'email': 'taro@example.com'},
]

@app.route('/api/users', methods=['GET'])
def get_users():
    return jsonify(users)

# POSTリクエストで新しいユーザーを追加
@app.route('/api/users', methods=['POST'])
def create_user():
    # リクエストのJSONボディを取得
    data = request.get_json()

    # 簡単なバリデーション(nameとemailが必要)
    if not data or 'name' not in data or 'email' not in data:
        return jsonify({'error': 'name と email は必須です'}), 400

    # 新しいユーザーを作成してリストに追加
    new_user = {
        'id': len(users) + 1,
        'name': data['name'],
        'email': data['email'],
    }
    users.append(new_user)

    # 201 Created を返すのがRESTfulなAPIの慣習
    return jsonify(new_user), 201

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

動作確認はcurlコマンドで試せます。

curl -X POST http://127.0.0.1:5000/api/users \
  -H "Content-Type: application/json" \
  -d '{"name": "山田 次郎", "email": "jiro@example.com"}'

ポイントをまとめるとこんな感じです👇

  • request.get_json():POSTで送られてきたJSONデータを受け取れます
  • バリデーション(入力チェック)を必ず入れるのが大切です
  • 新規作成成功時は201ステータスを返すのがRESTful APIの慣習です

まとめ

今回はFlaskを使ってWeb APIをゼロから作る方法を解説しました。改めて流れを振り返ると:

  1. Flaskをインストールして最小構成のアプリを起動
  2. jsonify を使ってJSONを返すGET APIを作成
  3. request.get_json() でPOSTデータを受け取り、データ追加APIを実装

Flaskは「シンプルに始められて、必要に応じて拡張できる」のが最大の魅力です。今回のコードを土台にして、データベース連携やユーザー認証など、次のステップへ進んでみてください 💪

ぜひ手を動かして試してみてください。「むずかしそう」が「意外とできる!」に変わる瞬間、きっと楽しいですよ 😊

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

もしも

徹底攻略! 電子工作&プログラミング Arduinoで学ぶ電子工作完全ガイド

電子工作とプログラミングを同時に学べる

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です