概要
昨今,多くの企業が自社のWebサービスにGoogleやFacebookなどのソーシャルログインを採用するなど,他社のサービスを取り込むことの需要が増えています。しかし,他社のサービスを取り込む課題として,異なるサービス間でのデータの整合性を保ちつつ,柔軟かつ迅速に機能を提供することが必要となり,この課題解決の観点でFastAPIが注目されています。FastAPIはスキーマ駆動開発を通じてAPIの作成と管理が容易に行えるPythonのフレームワークです。本書は,FastAPIではじめてAPI開発を行う方を対象とした入門書です。1章~9章までで「API開発に必要な知識」「スキーマの定義方法」などFastAPIの基本的な内容を学べます。また,10章~11章,Appendixで実際にスキーマ駆動開発によりAPIを利用したサービスを作成するため,API開発の一連の流れを学べます。
こんな方におすすめ
- FastAPIを用いて開発を行ってみたい人
- API開発に興味がある人
目次
第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-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-3 メモアプリのカスタマイズ
- A-3-1 JSONデータの構造把握
- A-3-2 カスタマイズの手順
A-4 サンプルファイルの使用方法
サポート
ダウンロード
本書で使用したサンプルファイルおよびPDFをダウンロードできます。
データは,圧縮ファイル形式でダウンロードできます。圧縮ファイルをダウンロードしていただき,適宜解凍してご利用ください。
(2024年10月28日更新)
- ダウンロード
- Sample.zip
補足情報
VS Codeの設定手順
(2024年10月28日更新)
VS Codeの変更があったため,最新のVS Codeの設定手順をPDFにまとめました。下記を参考にしてください。
- ダウンロード
- VsCodeのインストール202410.pdf