Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Fast API を用いた Web API の開発
Search
ryounasso
January 19, 2024
Programming
1
570
Fast API を用いた Web API の開発
初心者にも向ける勉強会 20 WEB バックエンドのお話し Python, PostgreSQL等 でお話しした内容です。
ryounasso
January 19, 2024
Tweet
Share
More Decks by ryounasso
See All by ryounasso
明日から始めるリファクタリング
ryounasso
0
160
駆け足で Google から学ぶテスト設計の指針
ryounasso
0
140
React inside basics: learn from “build own react"
ryounasso
0
160
抽象データ型について学んだ
ryounasso
0
320
開発効率向上のためのリファクタリングの一歩目の選択肢 ~コード分割~ / JJUG CCC 2024 Fall
ryounasso
0
3.4k
Clean Architecture by TypeScript & NestJS
ryounasso
0
1k
テストゼロの個人開発プロジェクトにテストを導入した話
ryounasso
0
430
簡易 DI コンテナを作って DI コンテナを知る
ryounasso
1
1.3k
TypeScript_コンパイラの内側に片足を入れる
ryounasso
3
830
Other Decks in Programming
See All in Programming
WebRTC と Rust と8K 60fps
tnoho
2
2k
非同期処理の迷宮を抜ける: 初学者がつまづく構造的な原因
pd1xx
1
720
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
110
【Streamlit x Snowflake】データ基盤からアプリ開発・AI活用まで、すべてをSnowflake内で実現
ayumu_yamaguchi
1
120
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
3
740
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
710
これだけで丸わかり!LangChain v1.0 アップデートまとめ
os1ma
6
1.9k
ハイパーメディア駆動アプリケーションとIslandアーキテクチャ: htmxによるWebアプリケーション開発と動的UIの局所的適用
nowaki28
0
420
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
340
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
170
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
130
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
110
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
527
40k
Practical Orchestrator
shlominoach
190
11k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Building Applications with DynamoDB
mza
96
6.8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.1k
For a Future-Friendly Web
brad_frost
180
10k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Designing for Performance
lara
610
69k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
100
Navigating Team Friction
lara
191
16k
Transcript
Fast API を用いた Web API の開発 ryounasso
API とは Application Programming Interface の略 開発者が複雑な機能をより簡単に作成できるように、プログラミング言語から提供 される構造。 複雑なコードを抽象化し、それに変わる簡潔な構文を提供する。 Web
API の紹介 | mdn web docs https://developer.mozilla.org/ja/docs/Learn/JavaScript/Cl ient-side_web_APIs/Introduction クライアント サーバ Request page Request data Response
Fast API とは (公式ドキュメントより) FastAPI : https://fastapi.tiangolo.com/ Python の型ヒントに基づいて、API を構築するための、モダンで、高速な、
Web フレームワーク 主な特徴 - 高速 - 少ないバグ - 直感的 - 簡単 - 短い - 堅牢性 - Standards-based 個人的に - 簡単 - API ドキュメントの自動生成 - 型定義 (Pydantic)
環境構築はドキュメントがおすすめ fastapi pydantic uvicorn requests sqlalchemy aiomysql 公式ドキュメント https://fastapi.tiangolo.com/ja/tutorial/ Docker
を使う場合 https://fastapi.tiangolo.com/ja/deployment/docker/ 使用するライブラリ
Hello World!! main.py
例) ToDo アプリ 今回は例として、タスクの追加、登録の流れを実装 データ構造は id, タスク名, DONE を持つ +-------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra | +-------+---------------+------+-----+---------+----------------+ | id | int | NO | PRI | NULL | auto_increment | | name | varchar(1024) | YES | | NULL | | | done | tinyint(1) | YES | | NULL | | +-------+---------------+------+-----+---------+----------------+ app | – cruds/ | – models/ | – routers/ | – schemas/ | – main.py | – migrate_db.py
リクエストパスとパラメータを考える - タスクの追加 /tasks POST - タスクの取得 /tasks GET - URL はケバブケース - パラメータはキャメルケース
- リソースの操作は HTTP メソッドで表現 - リソースに動詞を用いない - 非リソースには動詞を用いる リソース: データの一部 コレクション: リソースのグループ URL: リソースやコレクションの場所
レスポンスを考える - 理解しやすい命名にする - 深さ・プロパティ数に注意する
API 設計ツールを使用する “Open API Initiative” という団体が “OAS” という REST API
記述フォーマット を推進している メリット - API の開発効率の向上 - 広く受け入れられているため、様々なツールを使用できる - チーム内などで、共有しやすい Swagger : https://swagger.io/ api blueprint : https://apiblueprint.org/
FastAPI だと Swagger UI や ReDoc を用いてドキュメントを自動生成してくれる
FastAPI だと Swagger UI や ReDoc を用いてドキュメントを自動生成してくれる
タスクの追加を実装 - スキーマの作成 - DB の model を作成 - エンドポイントの作成
- DB への値の追加処理を作成
スキーマの作成
DB の model を作成 マイグレートも必要
エンドポイントの作成
DB への値の追加処理を作成 - DB モデルの TaskModel に変換 - DB にコミット
- DB 上のデータをもとに task を更新
router で呼び出す
実装を確認 Swagger UI で簡単に確認が可能!
タスクの取得を実装 - スキーマの作成 - エンドポイントの作成 - DB への値の取得処理を作成
スキーマ / エンドポイントの作成
DB への値の取得処理を実装
実装を確認 Swagger UI で確認!
まとめ FastAPI を用いて Web API 開発の全体像をみた 簡単に早く Web API を実装することが可能
More - タスクを完了にするエンドポイントを作成 - エラーハンドリングを実装 - テストを実装
参考資料 - FastAPI https://fastapi.tiangolo.com/ - FastAPI 入門 | Zenn https://zenn.dev/sh0nk/books/537bb028709ab9
None