ChatGPT先生と挑むFastAPI|10ステップでWeb APIの自力実装を目指す

記事内に広告が含まれています。
タイトル

今回は、ChatGPTを使いながらFastAPIを学習していきます。

これまで技術を学習するときは、参考書や動画の内容をそのまま実装し、その場では「分かったつもり」になっていても、いざ自分で使おうとすると手が止まってしまうことがよくありました。

今回はその反省も踏まえて、ChatGPTに先生役になってもらいます。

学習内容を10のステップに分けてもらい、各ステップで仕組みを理解しながら実際に実装します。さらに、学んだ内容を使った自力課題や復習も行い、「分かったつもり」ではなく「自分で使える」状態を目指します。

各ステップで学んだことや仕組みは、このブログで振り返りとしてまとめていきます。自分の言葉で整理することで理解を深めるとともに、あとから見返せる学習記録として残していく予定です。

今回の学習のゴールとして、「タスク管理APIを自力で設計・実装できること」を目指します。

それでは、ChatGPT先生と一緒にFastAPIに挑んでいきます。

ChatGPT先生
ChatGPT先生

こんにちは、ChatGPT先生です。
このシリーズでは、FastAPIの仕組みをできるだけわかりやすく説明しながら、実装・課題・振り返りまで一緒に進めます。

答えをそのまま渡すだけではなく、最終的に自力で使えるようになることを目標にサポートしていきます。

※アイコン画像はChatGPT先生に「あなたが見られたい姿をアイコンにしてください」と言って作成してもらいました。メガネがあると知的で先生感が出ていい、とのことです。

■■■スポンサーリンク■■■

学習の進め方

今回の学習では、ChatGPT先生に学習内容をSTEPごとに分けてもらい、「仕組みを理解する → 実際に実装する → 自力で課題に挑戦する → 振り返る」という流れで進めていきます。

まずはChatGPT先生から、そのSTEPで学ぶ内容や仕組みについて説明してもらい、内容を理解しながら実際にコードを書いて動作を確認します。

一通り実装できた後は、学んだ内容を使った自力課題にも挑戦します。課題では、できるだけ完成コードを見ずに自分で考えて実装し、分からない場合もすぐに答えを見るのではなく、まずはヒントをもらいながら解決することを目指します。

また、ChatGPT先生の回答をそのまま写して終わりにするのではなく、実際にコードを動かして確認し、自力課題や振り返りも行いながら理解を深めていきます。必要に応じて公式ドキュメントも確認します。

各STEPの最後には、そのSTEPで学んだことや仕組みを自分の言葉で整理し、このブログの記事としてまとめます。実装するところまでではなく、説明できるところまでを1つの学習単位として進めていく予定です。

なぜFastAPIなのか

これまでDjango REST Frameworkを使ったWeb API開発の実務経験はありますが、FastAPIは触ったことがありませんでした。

AI開発について調べていく中で、生成AIを組み込んだシステムではPythonとFastAPIを組み合わせた構成を目にすることが多く、今後AI開発を学んでいくうえでも身につけておきたい技術だと感じました。

また、FastAPIは生成AIに限らず、PythonでWeb APIを開発するためのフレームワークとして広く使われているため、これまでのDjango REST Frameworkの経験に加えて、新しいバックエンド開発の選択肢を増やすという意味でも学ぶ価値があると考えています。

そのため、今後AI開発について学んでいくための土台作りと、PythonによるWeb API開発スキルの幅を広げることを目的として、FastAPIを基礎から学んでいきます。

学習のステップ

次のような10ステップで学習を進めていきます。

  1. FastAPI入門と最初のAPI
  2. GET APIとパラメータ
  3. POST APIとPydantic
  4. CRUDとエラー処理
  5. Router・Dependsと構成整理
  6. PostgreSQLとSQLAlchemy
  7. 実務向け設定と周辺知識
  8. pytestでAPIテスト
  9. FastAPIアプリをDocker化する
  10. 総合課題:タスク管理APIを自力実装

開発環境

以下のような環境・バージョン情報は以下です。

項目バージョン・環境
OSWindows11
開発エディタVisual Studio Code
開発環境Docker / Dev Containers
Python3.12系
FastAPI0.141.1
ChatGPT使用モデルGPT-5.6 Sol

STEP1 FastAPI入門と最初のAPI

FastAPIの特徴やDRFとの違いを確認し、Docker / Dev Containersを使った開発環境を構築します。
その後、最初のGET APIを実装して動作確認を行います。さらにSwagger UIで自動生成されたAPIドキュメントも確認します。

STEP1 FastAPI入門と最初のAPI

ChatGPT先生と挑むFastAPI #1|FastAPI入門と最初のAPI
ChatGPTを先生役に、FastAPIを10ステップで実践学習。STEP1ではFastAPIの概要を学び、Dockerで開発環境を構築して基本的な最初のAPIを実装します。

STEP2 GET APIとパラメータ

GET APIで値を受け取るためのパスパラメータとクエリパラメータを学びます。
URLと関数の引数がどのように結び付くのかを確認し、実際にAPIを作成します。
また、型指定によるデータ変換やバリデーション、必須・任意パラメータの違いも確認します。
最後は学んだ内容を使って、自力でGET APIを実装します。

STEP2 GET APIとパラメータ

ChatGPT先生と挑むFastAPI #2|GET APIとパラメータ
ChatGPTを先生役に、FastAPIを10ステップで実践学習。GET APIで値を受け取るためのパスパラメータとクエリパラメータを学びます。URLと関数の引数がどのように結び付くのかを確認し、実際にAPIを作成します。

STEP3 POST APIとPydantic

POST APIを作成し、JSON形式のリクエストボディを受け取る方法を学びます。
Pydanticを使ってリクエストデータの型や必須項目を定義し、FastAPIがどのように入力値を検証するのか確認します。
さらに、Fieldを使った値の制約も追加し、APIに不正なデータが送られた場合の動作について理解します。

STEP3 POST APIとPydantic

ChatGPT先生と挑むFastAPI #3|POST APIとPydantic
ChatGPTを先生役に、FastAPIを10ステップで実践学習。POST APIを作成し、JSON形式のリクエストボディを受取る方法を学びます。Pydanticでリクエストデータの型や必須項目を定義し、FastAPIがどのように入力値を検証するのか確認します。

STEP4 CRUDとエラー処理

これまで学んだGET・POSTに加えて、PUT・DELETEを使ったCRUD操作を学びます。

データの取得・登録・更新・削除というWeb APIの基本的な処理を一通り実装します。

また、HTTPExceptionを使ったエラー処理や、HTTPステータスコードの指定方法についても確認します。

STEP4 CRUDとエラー処理

ChatGPT先生と挑むFastAPI #4|CRUDとエラー処理
ChatGPTを先生役に、FastAPIを10ステップで実践学習。CRUD操作を学びデータの取得・登録・更新・削除というWeb APIの基本的な処理を一通り実装します。また、HTTPExceptionでのエラー処理や、HTTPステータスコードの指定方法も確認します。

STEP5 Router・Dependsと構成整理

これまでmain.pyにまとめて実装していたAPIを、APIRouterを使って機能ごとに分割します。

また、Dependsによる依存性注入の仕組みを学び、複数のAPIで利用する共通処理を整理します。

最後にPydanticモデルなども含めてファイル構成を見直し、実務を意識したFastAPIアプリの構成へ整理していきます。

STEP5 Router・Dependsと構成整理

ChatGPT先生と挑むFastAPI #5|Router・Dependsと構成整理
ChatGPTを先生役に、FastAPIを10ステップで実践学習。これまで実装していたAPIを、APIRouterを使って機能ごとに分割します。また、Dependsによる依存性注入の仕組みを学び、複数のAPIで利用する共通処理を整理します。

STEP6 PostgreSQLとSQLAlchemy

PostgreSQLとSQLAlchemyを導入し、FastAPIからデータベースへデータを保存・取得する仕組みを学びます。

ORMによるテーブル操作やSession、マイグレーションについて理解し、これまで作ってきたCRUD APIをデータベースを利用した実装へ発展させます。

STEP6 PostgreSQLとSQLAlchemy

ChatGPT先生と挑むFastAPI #6|PostgreSQLとSQLAlchemy
ChatGPTを先生役に、FastAPIを10ステップで実践学習。PostgreSQLとSQLAlchemyを導入し、FastAPIからデータベースへデータを保存・取得する仕組みを学びます。これまで作ってきたCRUD APIをデータベースを利用した実装へ発展させます。

STEP7 実務向け設定と周辺知識

FastAPIを実務で使用する際に必要となる周辺知識について学びます。

環境ごとの設定値を管理するための環境変数、FastAPIの特徴でもあるasync / awaitによる非同期処理、フロントエンドなど別オリジンからAPIへアクセスする際に必要となるCORSについて確認します。

それぞれの仕組みを理解したうえで、実際のFastAPIアプリケーションへ設定して動作を確認します。

STEP7 実務向け設定と周辺知識

ChatGPT先生と挑むFastAPI #7|実務向け設定と周辺知識
ChatGPTを先生役に、FastAPIを10ステップで実践学習。環境変数、async / awaitによる非同期処理、CORSについて確認します。それぞれの仕組みを理解したうえでFastAPIアプリケーションへ設定して動作を確認します。

STEP8 pytestでAPIテスト

pytestを使ったFastAPIのAPIテストについて学びます。

これまで作成した商品管理APIを対象に、正常系・異常系のテストを実装します。

また、テスト用データベースを利用して、開発用データに影響を与えずにテストする方法も学びます。

最終的には、複数のテストをまとめて実行し、APIの動作を自動的に検証できる状態を目指します。

STEP8 pytestでAPIテスト

ChatGPT先生と挑むFastAPI #8|pytestでAPIテスト
ChatGPTを先生役に、FastAPIを10ステップで実践学習。これまで作成した商品管理APIを対象に、正常系・異常系のテストをpytestを使って実装します。テスト用データベースやAPIを自動的に検証する方法も学びます。

STEP9 FastAPIアプリをDocker化する

これまで開発してきたFastAPIアプリケーションをDocker化します。

Dockerfileを使用してアプリケーションの実行環境を定義し、Docker ComposeでFastAPIとPostgreSQLを組み合わせて起動できる構成を作成します。

コンテナ間の接続や環境変数の設定についても学び、Docker環境でAPIやデータベースが正常に動作することを確認します。

STEP9 FastAPIアプリをDocker化する

ChatGPT先生と挑むFastAPI #9|FastAPIアプリをDocker化する
ChatGPTを先生役に、FastAPIを10ステップで実践学習。これまで開発してきたFastAPIアプリケーションをDocker化して実行環境を用意します。Docker ComposeでFastAPIとDBを組み合わせて起動できる構成を作成します。

STEP10 総合課題:タスク管理APIを自力実装

これまで学んできたFastAPIの知識を使い、総合課題としてタスク管理APIを実装します。

APIやデータベースの設計からCRUD処理、テストまで、できるだけ自分で考えながら実装していきます。

さらにDocker Composeを使ってFastAPIとPostgreSQLを起動し、これまでの学習内容を一通り組み合わせて確認します。

STEP10 総合課題:タスク管理APIを自力実装

ChatGPT先生と挑むFastAPI #10|総合課題:タスク管理APIを自力実装
ChatGPTを先生役に、FastAPIを10ステップで実践学習。これまで学んできたFastAPIの知識を使い、総合課題としてタスク管理APIを実装します。APIやデータベースの設計からCRUD処理、テストまで、自力で実装していきます。

成果物

このシリーズで実装したFastAPIのソースコードはGitHubで公開しています。

GitHubでソースコードを見る

GitHub – ta-ma-123/fastapi-learning: FastAPI学習用リポジトリ
FastAPI学習用リポジトリ. Contribute to ta-ma-123/fastapi-learning development by creating an account on GitHub.

コメント

タイトルとURLをコピーしました