Udemy講座「Python初学者のネクストステップ!FastAPIによるWeb API開発講座」
久々にUdemy講座を完走したので、自身の備忘をこめて感想をまとめていきます。
また、この講座を行うにあたって自身で構築した学習用の開発環境も紹介いたします。
どんな講座?
WebAPIって何?から、PythonのWebAPIフレームワークFastAPI、Pythonだけで簡単なフロントエンドが作成できるStreamlitの解説が1つにまとまった講座です。
講師をしてくださっている今村先生(通称いまにゅ)の説明も語り口調となっていて動画ながらちゃんと講義を受けているような感覚がありました。
セクションごとの感想
セクション1 はじめに
ここでは講義の概要や対象者、内容のステップを説明してもらえます。
購入前でも視聴可能ですので自身が学びたい内容と合致しているか、講師の印象はどうか(ここ結構大事)確認しましょう。
講師の印象はとても大事で、購入したら数時間講師の言葉を浴びることになります。
声や話し方、言葉使いなど、自分との相性をしっかり確認しましょう。
セクション2 WebAPIとは
このセクションではまずWebAPIとは何かを説明してもらえます。
結構しっかり説明してもらえるので、なんとなくわかっているけど説明できない。と思っている方はしっかり聞きましょう。
セクション3 PythonでWebAPIを使ってみる
このセクションでは実際にWebAPIを利用することを経験していきます。
自分で作るまえに使い方を学ぶ。大事ステップをしっかり解説してもらえます。
自分はJSON、CRUDなどは理解していたので実際にAPIを利用する実践の部分のみ視聴しました。
セクション4 FastAPI超入門
このセクションはメインディッシュですね。
FastAPIの概要説明からFastAPIが持っている開発時に便利な機能を説明してもらえます。
FastAPIで利用する知っておくべきPythonの知識まで網羅的な内容となっていて個人的にもすごく勉強になりました。
コーディングに必要なVSCodeのインストールの説明もありますのでコーディング自体が初めての方でも安心です(Python知ってないと難しい講座なので入ってないことないと思いますが。。)
セクション5 Web APIをクラウド上にデプロイ
ここ、個人的に鬼門でした。
Web上に自作のWebAPIをデプロイ(公開・展開)してみよう。という内容なのですが
デプロイ先として利用する「Deta」というサービスが、説明時点から大きくリニューアルされており解説通りにはできませんでした。
Udemy内のQ&Aにも質問されている方がおり、それを参考になんとかできましたがこの部分に関しては講義内容のアップデート希望ですね。
FastAPIの公式サイトに沿った内容なので公式サイトが更新されていないので変えない。というのも正しいとは思いますが、ちょっと難易度が高い変更に感じました。
受講する方はこれもトラブルシューティングの一環。と思って頑張りましょう。
セクション6 Streamlit超入門
このセクションではPythonだけでフロントエンドが記述できてしまう「Streamlit」を説明してもらえます。
Streamlit、めっちゃ便利でした。データ分析などの描画を簡略化するのがメインのようでUIの複雑な指定や調整はできないみたいですがPythonだけでここまでできるなら十分!と思えるものでした。
公式サイトのドキュメントもわかりやすくHTMLも不要なのでさらっとかけます。
いまにゅ先生が推すのもわかります。
セクション7 会議室予約API開発
ここまでで学んだ、WebAPI、FastAPI、Streamlitを駆使して実際にWebアプリを作成していきます。
結構なボリュームがあるのでコツコツやって理解を深めながら進めました。
DB(SQLite3)が出てきたり、ファイルも増えたりで混乱していくので混乱しそうになった箇所をまとめておきます。
登場するファイルまとめ
このセクションではファイルがたくさん出てくるのでまとめておきます。
app.py | Streamlitを使ってフロントエンド部分となるファイル |
database.py | FastAPIでSQLalchemyライブラリを使ってDB(講座ではSQLite3)を使用するための設定ファイル 「SQLALCHEMY_DATABASE_URL」でDBファイル名の指定をする 「engine」はDBエンジンの定義オブジェクト 「SessionLocal」はDBと接続するためのセッションを定義するオブジェクト |
sql_app.db | main.pyを実行すると生成されるSQLite3のDBファイル ここにテーブルやレコードが保存される |
main.py | FastAPIの中核となるファイル WebAPIのURLにアクセスされた時の挙動を記述していく database.pyで定義したDBの設定を用いてDBとのセッションを開始するとこでDBとのアクセスが可能になる |
crud.py | FastAPIとSQLite3のデータの橋渡し役となる処理を記述するファイル DBへの書き込み処理はこのファイルで定義していく |
models.py | DBのテーブルおよびカラムの定義をするファイル DB目線のデータ構造を記述する!(ここ大事) |
schema.py | Python(FastAPI)で利用するデータ構造を定義するファイル ユーザー(UI)目線のデータ構造を記述する!(ここ大事) |
models.pyとschema.py
この二つのファイルは混乱しそうだったので、図を作成しました。
図にすることで、視覚的にDB目線なのか、Python目線なのかがわかりやすくなり印象としてもおぼえやすくなるかと思います。
models.py
schema.py
セクション8 終わりに
総まとめです。達成感に満ち溢れながら、振り返りましょう。
VSCodeの環境構築
Dev Containersを使う
Udemyに限らず、開発系の学習をするときは仮想環境を利用することをおすすめします。
仮想環境を利用することでご自身のPC(ローカル環境)を汚さずにさまざまな環境を使い分けることができるようになります。
私の場合は別のPC上に仮想マシンを構築してその仮想マシン上でVScodeのDevContainerを実行していますが、そこまでしなくてもローカル環境にDockerさえいれてしまえばVSCodeのDev Containers機能を使って簡単に仮想環境を構築できます。
VSCodeの拡張機能「dev containers」をインストール
- VSCodeのExtensionsから「dev containers」と検索し、インストールしましょう。(提供者がMicrosoftであることを確認!)
- 拡張機能のインストールが完了したら、開発フォルダを開きます。(Udemyの講義で利用するフォルダ)
- 左側にある「Remote Explorer」をクリックし、開発コンテナーの右にある[+]をクリックします。
- 「コンテナーで現在のフォルダを開く」をクリックします。
- Dev Container構成の選択画面が表示されるので、「Python」と入力し先頭に表示されたものをクリックする。
- Pythonのバージョンは学習内容や講座内容に合わせてください。
- [機能の選択]は必要に応じて選択してOK。
- しばらくするとコンテナが作成され、もともと開いていた自動的にファイルコンテナ内でコーディングが可能となります。
DevContainerの設定
devcontainer.json
Dev Containerでコンテナを作成すると自動的に生成されます。
このファイルにコンテナの設定を記述します。
今回設定したのは以下の内容。
SQLite3を利用するのでコンテナにSQLite3を導入
# 変更前 // "features": {}, ↓ # 変更後 "features": { // SQLite3のインストール "ghcr.io/warrenbuckley/codespace-features/sqlite:latest": {} },
参考:https://containers.dev/features
Pythonのライブラリインストール設定
pipのアップグレードと必要なライブラリのインストールを記述します。
# 変更前 // "postCreateCommand": "pip3 install --user -r requirements.txt", ↓ # 変更後 "postCreateCommand": "pip install --upgrade pip && pip3 install --user -r requirements.txt"
launch.js
FastAPIをデバッグ実行するために必要なファイル。
左側の[Run and debug]で「create a launch.js file.」をクリックして作成します。
“args”の”main:app”のmainはmain.pyを指しているので、main.pyへのパスを指定する必要があります。
# 変更前 "args": [ "main:app", "--reload" ], ↓ # 変更後 "args": [ "sql_app.main:app", //講義の途中でmain.pyを移動するので移動後はこうなる。 "--reload" ],
requirements.txt
今回の講義で利用する、Pythonで必要なライブラリをまとめて記述することでまとめてインストールすることができます。
ファイルを新規作成して、ファイル名を「requirements.txt」にして保存します。
ファイル内の記述内容は下記のみ。
fastapi[all]
streamlit
sqlalchemy
ここまで設定すると、F5キーを押すことでデバッグ実行が可能となり、FastAPI(uvicorn)を実行することができます。
コメント