とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど

開催予定の勉強会

読者登録と各種SNSのフォローもよろしくお願いいたします。

「動かして学ぶ!Python FastAPI開発入門」を読んだので読書レポート

とある日に書店をブラブラしていたら、技術書コーナーでこんな本を見つけました。
ある程度形にはできたものの、ところどころ使い方これでいいのかな?と迷うところがあったので、答え合わせもかねて体系的に解説されている入門書を探していたので偶然の出会いのような感じになりました。

目次

  • Part1 開発環境とFastAPIの準備
    • Chapter1 FastAPIの概要
    • Chapter2 FastAPIで重要なPython文法の復習
    • Chapter3 Docker環境のインストール
    • Chapter4 Dockerイメージの作成
    • Chapter5 FastAPIのインストール
    • Chapter6 Hello World!
  • Part2 FastAPIアプリケーションの実装
    • Chapter7 アプリケーションの概要とディレクトリ
    • Chapter8 ルーター(Routers)
    • Chapter9 スキーマ(Schemas)- レスポンス
    • Chapter10 スキーマ(Schemas)- リクエスト
    • Chapter11 データベースの接続とDBモデル(Models)
    • Chapter12 DB操作(CRUDs)
    • Chapter13 非同期化
    • Chapter 14 ユニットテスト
  • Part3 クラウドプラットフォームへのデプロイ
    • Chapter15 クラウドプラットフォームへのデプロイの概要と準備
    • Chapter16 クラウドプラットフォームへのデプロイ:AWS編
    • Chapter17 クラウドプラットフォームへのデプロイ:GCP編

Part1 開発環境とFastAPIの準備

この本を読み進めていくために必要な知識はこの章で一通り解説されているようなので、PythonやDockerの知識がなくても先に学んだ上でメインコンテンツに入っていけそうです。

Part2 FastAPIアプリケーションの実装

ライブラリやフレームワークによっては厳しいルールによって縛られていることもありますが、割と自由度が高いものはディレクトリ構成を最初に決める必要があります。
FastAPIの公式ドキュメントでも Bigger Applications - Multiple Files - FastAPI というタイトルで紹介されていたりもしますが、DB接続までを踏まえたルーター(Routers)、スキーマ(Schemas)、モデル(Models)の基本的でディレクトリが紹介されているので、こちらの方が参考にしやすかったです。

この章を読み進めると基本的なCRUDなAPIは作成できてDB接続までサポートされているので、教科書的に読み進めながら手を動かしていくと自然とそれっぽいAPIサーバーが完成します。
最後のチャプターではテストコードについても書かれていたので、テスト駆動開発まで一気に学び進められます。

ただ全体的にはDockerコンテナありきになっていたので、違う使い方でとりあえずやってみたい人にとっては少しハードルに感じる方もいるかもしれませんね。

Part3 クラウドプラットフォームへのデプロイ

個人的に入門書では珍しい方だと思うのですがAWSとGCPへのデプロイまで解説されているので、ちょっとしたポートフォリを作成して公開したい人には嬉しい内容ですね。
クラウドサービスで実際に使用しているサービスは、AWSはApp Runner、GCPはCloud Runでした。
個人的にはECSは触ったことがあったもののApp Runnnerは触ったことがなかったので、この本を参考にやってみようと思います。

おわりに

FastAPIを初めて触り始めた自分におすすめしたい1冊でした。内容的にも実践的な形で使い方がまとめられており、復習的に読んでいた自分でもあちこちで学び直しができました。
欲を言えばマイグレーションツール(Alembicなど)のところまで触れて欲しかったと思うのですが、入門書むけかと言うと悩ましいところでしょうか。
すごく細かい話ですが書籍的にはORMツールのSqlAlchemyがバージョン2系の方で書かれていて、割と書き方が変わるのでだいぶ腰が重くなっていたのですが、これをきっかけに理解が深まったのでバージョンアップもやっていこうと思います。