Python FastAPI本格入門

書籍の概要

この本の概要

昨今,多くの企業が自社のWebサービスにGoogleやFacebookなどのソーシャルログインを採用するなど,他社のサービスを取り込むことの需要が増えています。しかし,他社のサービスを取り込む課題として,異なるサービス間でのデータの整合性を保ちつつ,柔軟かつ迅速に機能を提供することが必要となり,この課題解決の観点でFastAPIが注目されています。FastAPIはスキーマ駆動開発を通じてAPIの作成と管理が容易に行えるPythonのフレームワークです。本書は,FastAPIではじめてAPI開発を行う方を対象とした入門書です。1章~9章までで「API開発に必要な知識」「スキーマの定義方法」などFastAPIの基本的な内容を学べます。また,10章~11章,Appendixで実際にスキーマ駆動開発によりAPIを利用したサービスを作成するため,API開発の一連の流れを学べます。

こんな方におすすめ

  • FastAPIを用いて開発を行ってみたい人
  • API開発に興味がある人

本書のサンプル

本書の一部ページを,PDFで確認することができます。

目次

第1章 FastAPIの概要

1-1 FastAPIとは? 

  • 1-1-1 フレームワークとは? 
  • 1-1-2 FastAPIの特徴 

1-2 開発環境の構築(Miniconda)

  • 1-2-1 AnacondaとMiniconda 
  • 1-2-2 Minicondaのインストール 
  • Column Minicondaってなんだ? 

1-3 開発環境の構築(仮想環境) 

  • 1-3-1 仮想環境とは?
  • 1-3-2 仮想環境の構築
  • 1-3-3 pipとcondaとは?

1-4 開発環境の構築(VSCode) 

  • 1-4-1 VSCodeのインストール 
  • 1-4-2 拡張機能の追加(Python他) 
  • 1-4-3 ハンズオン環境の作成 
  • Column いつ仮想環境を有効化・無効化するのか? 

第2章 FastAPIの基礎

2-1 WebAPIの基礎知識 

  • 2-1-1 APIとは? 
  • 2-1-2 WebAPIとは? 
  • 2-1-3 WebAPIプログラムの作成 
  • Column VSCodeで「Pythonインタープリタ」の変更 

2-2 FastAPIで「ハローワールド」の作成 

  • 2-2-1 必要なライブラリのインストール 
  • 2-2-2 はじめてのFastAPIプログラムの作成 

2-3 Swagger UIによるドキュメント生成 

  • 2-3-1 Swagger UIとは? 
  • 2-3-2 Swagger UIの役割

第3章 型ヒント(タイプヒント)

3-1 型ヒントとは? 

  • 3-1-1 型ヒントの基本 
  • 3-1-2 型ヒントの記述方法 
  • 3-1-3 型ヒントプログラムの作成 

3-2 型ヒントの使用方法(Optional型) 

  • 3-2-1 Optional型とは? 
  • 3-2-2 Optional型を使用するプログラムの作成 

3-3 型ヒントの使用方法(Annotated) 

  • 3-3-1 Annotatedとは? 
  • 3-3-2 Annotated型を使用するプログラムの作成 

3-4 「|(パイプ)演算子」とは? 

  • 3-4-1 「|(パイプ)演算子」とは? 
  • 3-4-2 「|(パイプ)演算子」を使用するプログラムの作成 
  • Column Optional型とパイプ演算子 

第4章 パラメータとレスポンスデータ

4-1 リクエスト処理(パスパラメータ) 

  • 4-1-1 パスパラメータの基本 
  • 4-1-2 FastAPIプログラム(パスパラメータ)の作成 
  • Column HTTPException 
  • 4-1-3 Swagger UIでの操作 

4-2 リクエスト処理(クエリパラメータ) 

  • 4-2-1 クエリパラメータの基本 
  • 4-2-2 FastAPIプログラム(クエリパラメータ)の作成 
  • 4-2-3 Swagger UIでの操作 

4-3 レスポンス処理(レスポンスデータ) 

  • 4-3-1 レスポンスデータの構造 
  • 4-3-2 イメージで振り返る 
  • 4-3-3 Pydanticとは? 

第5章 FastAPIでCRUD処理

5-1 RESTful APIとは? 

  • 5-1-1 RESTの4原則 

5-2 HTTPメソッドの特性 

  • 5-2-1 RESTとは? 
  • 5-2-2 安全性と冪等性(べきとうせい)とは? 
  • 5-2-3 GET,POST,PUT,DELETEとは? 
  • Column 本書の構成について 

5-3 CRUDアプリケーションの作成

  • 5-3-1  アプリケーションの作成 
  • Column response_model 
  • Column enumerate 
  • 5-3-2 Swagger UIでの操作 
  • 5-3-3 Pydantic再び 
  • 5-3-4 Swagger UIでの操作 
  • Column Field機能とAnnotated型 

第6章 同期処理と非同期処理

6-1 同期処理と非同期処理とは? 

  • 6-1-1 同期処理と非同期処理 
  • 6-1-2 Pythonでの非同期処理 
  • 6-1-3 「asyncio」を使用するプログラムの作成 
  • Column コルーチン 

6-2 FastAPIでの非同期処理 

  • 6-2-1 httpxのインストール 
  • 6-2-2 「httpx」を使用するプログラムの作成 

第7章 ルーティングの分割

7-1 APIRouterとは?

  • 7-1-1 APIRouterの概要
  • 7-1-2 プログラムの作成 

7-2 リファクタリング 

  • 7-2-1 リファクタリングの主な目的 
  • 7-2-2 プログラムの作成(リファクタリング) 
  • 7-2-3 FastAPIクラスとAPIRouterクラスの比較 

第8章 ORMの利用

8-1 ORMとは? 

  • 8-1-1 ORMの概要 
  • 8-1-2 SQLAlchemyとは? 
  • 8-1-3 SQLiteの使用方法 

8-2 SQLAlchemyを使用したアプリケーションの作成 

  • 8-2-1 プロジェクトの作成 
  • Column 「期限切れ」とは? 
  • Column モデルとは? 
  • Column DB接続を「コネクション」と「セッション」に分ける理由 
  • 8-2-2 動作確認の実施 
  • Column 生成AIを使用した学習方法のおすすめ

第9章 DIの利用

9-1 DIとは? 

  • 9-1-1 DIのイメージ 
  • 9-1-2 FastAPIでのDI 

9-2 DIを使用したアプリケーションの作成 

  • 9-2-1 プロジェクトの作成 
  • 9-2-2 動作確認の実施 

9-3 DI(依存性の注入)の深堀

  • 9-3-1 DIを取り巻く用語の整理 
  • 9-3-2 DIの使い所と気をつけること 

第10章 スキーマ駆動開発(フロントエンド)

10-1 スキーマ駆動開発 

  • 10-1-1 スキーマ 
  • 10-1-2 スキーマ駆動開発
  • Column スキーマ駆動開発の利点 

10-2 作成アプリケーションの概要 

  • 10-2-1 スキーマ駆動開発でのステップ 
  • 10-2-2 自動ドキュメント作成の実施 
  • Column 分類の重要性 

10-3 フロントエンドの作成 

  • 10-3-1 フロントエンド 
  • 10-3-2 Webページプレビュー拡張機能を追加 

第11章 スキーマ駆動開発(バックエンド)

11-1 モデルとDBアクセスの作成 

  • 11-1-1 モデルの決定 
  • 11-1-2 コードの記述 
  • Column 「yield」について 
  • 11-1-3 動作確認の実施 

11-2 CRUD処理の作成 

  • 11-2-1 非同期CRUD処理 
  • Column 朝活のすすめ 

11-3 リファクタリング 

  • 11-3-1 ルーティングの分割 
  • 11-3-2 リファクタリングの実施 

11-4 動作確認

  • 11-4-1 サーバー起動 
  • 11-4-2 動作確認の実施 
  • Column CORS(Cross-Origin Resource Sharing)とは? 

Appendix 今後の発展のために

A-1 複雑なスキーマの検討 

  • A-1-1 スキーマとクラス 
  • A-1-2 サンプルプログラムの作成

A-2 動作確認の実地 

  • A-2-1 サーバー起動

A-3 メモアプリのカスタマイズ

  • A-3-1 JSONデータの構造把握 
  • A-3-2 カスタマイズの手順 

A-4 サンプルファイルの使用方法 

  • A-4-1 サンプルファイルの使用

著者プロフィール

樹下雅章(きのしたまさあき)

大学卒業後,ITベンチャー企業に入社し,様々な現場にて要件定義,設計,実装,テスト,納品,保守,全ての工程を経験。SES,自社パッケージソフトの開発経験。その後大手食品会社の通販事業部にてシステム担当者としてベンダーコントロールを担当。事業部撤退を機会に株式会社フルネスに入社し現在はIT教育に従事。