Skip to content

1: セットアップ

このチュートリアルでは、FastAPI を使って Web アプリケーション開発の基本を学んでいきます。

  • Python の基礎
  • ターミナルの基本的な使い方

💡 ターミナル: パソコンに命令を送るための画面です。Windows では「コマンドプロンプト」や「PowerShell」、Mac では「ターミナル」と呼ばれます。

このチュートリアルを進めるにはお使いのパソコンに Python がインストールされている必要があります。 以下のコマンドを実行して Python がインストールされているか確認してください:

💡 コマンド: 「フォルダを作る」「ファイルを開く」など、パソコンに対する命令のことです。

Terminal window
python --version

以下のようにバージョンが表示されれば OK です:

Python 3.11.0

(環境によってバージョン番号が異なる可能性がありますが問題ありません)

Python がインストールされていない場合は、公式サイトからダウンロードしてください。

💡 REPLを起動してしまった場合:
REPLとは「Read-Eval-Print Loop」の略で、Pythonの対話型実行環境のことです。ターミナルでpythonコマンドを実行すると、>>>というプロンプトが表示され、Pythonのコードを一行ずつ実行できるようになります。

REPLが起動した場合の対処法:

  • >>>というプロンプトが表示されている場合はREPLが起動しています
  • REPLを終了するにはCtrl+Cを押すか、exit()と入力してEnterを押してください
  • その後、通常のターミナルに戻ります

💡 プロジェクト
家を建てるときには建築現場に必要な道具や材料、設計図などを整理して置きますよね。
FastAPI のプロジェクトも同じようなものです。
Web アプリの開発に必要なものが整理されて入っている「箱」のようなものです。

ターミナルで以下のコマンドを実行してください:

プロジェクトフォルダを作成します:
(フォルダの場所は create-next-app で作成されたフォルダや他の FastAPI プロジェクトの中以外であればどこでも構いません)

Terminal window
mkdir todo-api

作成したフォルダに移動します:

Terminal window
cd todo-api

仮想環境を作成します:

💡 仮想環境:
仮想環境とは Python に備えられた、プロジェクトごとに独立した「作業スペース」を作る仕組みです。 それぞれの仮想環境には、そのプロジェクト専用のPythonライブラリ(パッケージ)がインストールされます。

作業スペースをプロジェクトごとに分けることで、プロジェクトごとに自由にライブラリを選択したり、 システム(パソコン)全体の Python 環境を汚さずに済ませることができます。

Terminal window
python -m venv venv

仮想環境を有効化します(Windows の場合):

Terminal window
venv\Scripts\activate

仮想環境を有効化します(Mac/Linux の場合):

Terminal window
source venv/bin/activate

必要なパッケージをインストールします:

Terminal window
pip install --upgrade pip
pip install fastapi uvicorn sqlalchemy

💡 パッケージ:
追加の機能を提供するプログラムです。
以下のパッケージをインストールしました:

  • fastapi: Web API を作るためのフレームワーク
  • uvicorn: Web サーバー
  • sqlalchemy: データベースを操作するためのライブラリ

インストールしたパッケージとそれぞれのバージョンの一覧を requirements.txt に保存します:

Terminal window
pip freeze > requirements.txt

プロジェクトの基本構造を作成します:

Terminal window
mkdir app
touch app/__init__.py
touch app/main.py
touch app/database.py
touch app/models.py
touch app/schemas.py

これで以下のような構造が作成されます:

todo-api/
├── venv/ # 仮想環境(編集不要)
├── app/ # アプリケーションのコード
│ ├── __init__.py # Python パッケージとして認識するためのファイル
│ ├── main.py # メインのアプリケーションコード
│ ├── database.py # データベースの設定
│ ├── models.py # データベースのモデル定義
│ └── schemas.py # APIのスキーマ定義
└── requirements.txt # 必要なパッケージの一覧

各ファイルとフォルダの役割を詳しく説明します:

  1. venv フォルダ

    • Python の仮想環境が保存されるフォルダです
    • プロジェクト専用の Python 環境が含まれています
    • このフォルダは編集する必要はありません
  2. app フォルダ

    • アプリケーションのソースコード(プログラム)を格納する場所です
    • コードを整理して管理しやすくするために使います
  3. __init__.py

    • Python パッケージとして認識するためのファイルです
    • 空のファイルで問題ありません
  4. main.py

    • Webブラウザなどのクライアントに公開する WebAPI を定義します

      💡 WebAPI:
      WebAPIとはクライアントがサーバーに処理を依頼するときに使う「問い合わせ窓口」です。
      サーバーはWebAPIに届いたリクエストに応じてデータの取得などの処理を実行します。

      具体例:

      • 天気アプリが「今日の東京の天気を教えて」と問い合わせる → WebAPIが天気データを返す
      • SNSアプリが「この投稿を保存して」と送信する → WebAPIが投稿をデータベースに保存する
      • 決済アプリが「この商品の代金を処理して」と要求する → WebAPIが決済処理を実行する
      • 地図アプリが「この住所の位置情報を教えて」と問い合わせる → WebAPIが座標データを返す

      WebAPIを活用することで自分のアプリに様々な機能を追加できます。

  5. database.py

    • データベースへの接続に必要な設定などを書くファイルです
  6. models.py

    • データベースのモデル(テーブル)を定義するファイルです
    • データの構造を定義します
  7. schemas.py

    • APIのリクエストとレスポンスのデータ形式を定義するファイルです
    • データの検証(バリデーション)と変換に使います
  8. requirements.txt

    • プロジェクトで使用するパッケージの一覧が書かれているファイルです
    • 他の環境でも同じパッケージをインストールするために使います

それでは、最初のWebAPIを作成してみましょう。
todo-api/app/main.py に以下のコードを追加して下さい:

todo-api/app/main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello World"}

APIを起動するには todo-api フォルダの中で以下のコマンドを実行します:

Terminal window
uvicorn app.main:app --reload

以下のような出力が表示されれば成功です:

INFO: Started server process [xxxxx]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

ブラウザで http://127.0.0.1:8000 を開くと以下のようなJSONが表示されます:

{
"message": "Hello World"
}

また、http://127.0.0.1:8000/docs にアクセスすると自動生成されたAPIドキュメントを確認できます。

💡 APIドキュメント:
FastAPIが自動的に生成するAPIの説明書です。以下の機能があります:

  • インタラクティブなテスト: ブラウザ上でAPIを実際にテストできます
  • パラメータの説明: 各APIエンドポイントが受け取るデータの形式を確認できます
  • レスポンスの例: APIが返すデータの例を見ることができます
  • Try it out: 「Try it out」ボタンをクリックすると、実際にAPIを呼び出して結果を確認できます

この機能により、APIの開発者だけでなく、APIを使う側の人も簡単にAPIの使い方を理解できるようになります。

ターミナルに Ctrl + C を入力すると開発サーバーを停止できます。