$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FastAPIでAOP的ロギングはありなのか?
Search
村上優稀
May 21, 2025
Programming
1
62
FastAPIでAOP的ロギングはありなのか?
村上優稀
May 21, 2025
Tweet
Share
More Decks by 村上優稀
See All by 村上優稀
DI(依存性注入)
musan
0
6
Other Decks in Programming
See All in Programming
CSC305 Lecture 15
javiergs
PRO
0
250
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
1
930
AI時代もSEOを頑張っている話
shirahama_x
0
230
全員アーキテクトで挑む、 巨大で高密度なドメインの紐解き方
agatan
8
19k
FluorTracer / RayTracingCamp11
kugimasa
0
200
connect-python: convenient protobuf RPC for Python
anuraaga
0
360
GeistFabrik and AI-augmented software development
adewale
PRO
0
260
Why Kotlin? 電子カルテを Kotlin で開発する理由 / Why Kotlin? at Henry
agatan
2
6.3k
テストやOSS開発に役立つSetup PHP Action
matsuo_atsushi
0
140
『実践MLOps』から学ぶ DevOps for ML
nsakki55
2
560
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
1
210
CSC305 Lecture 17
javiergs
PRO
0
280
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.1k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
380
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
Side Projects
sachag
455
43k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
69k
Music & Morning Musume
bryan
46
7k
GitHub's CSS Performance
jonrohan
1032
470k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Bash Introduction
62gerente
615
210k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Transcript
FastAPIでもAOP的ロギングは アリなのか? NCDC 村上
自己紹介 • 村上優稀 • バックエンドエンジニア • 実務経験3年 • 最初の2年はJava、Springを触っていた •
ここ1年はPython、FastAPIを触っている • 今日の発表はちょっと背伸びしてます (マサカリ怖い。。。)
目次 • AOPって何? – Springフレームワーク – 横断的関心事と本質的関心事 • PythonにはAOP的な考え方ないの? •
FastAPIで横断的にロギング処理入れてみた • Pythonの哲学的にどうなのか?
AOPって何? • アスペクト志向プログラミング • 関心の分離を目的としたプログラミングの考え 方 • 横断的な処理を共通化・自動化するための技術 – ログ出力
– トランザクション管理 – 例外処理の一元化 • Springフレームワークなどで取り入れられている
横断的関心事:ログやトランザクション管理、エラー処理 本質的関心事:会員管理や商品管理、注文管理
・共通処理の一元化でコードがスッキリ ・変更が容易で保守性向上 ・本来のビジネスロジックに集中できる(エンジニア1年目にとってとてもありがたかった)
FastAPIにはAOP的な考え方ないの? • FastAPI AOPで検索しても、日本語の記事は ヒットせず。 韓国語と英語の記事がちらほら。 • AOPはプログラミング言語を問わない便利な 考え方だと思ってたけど、Pythonの哲学と相 性悪かったりするのかなと疑問に思った。
• Python AOPで検索したら「デコレータ」が ヒットした
デコレータとは? 関数やクラスの前後に 特定の処理を追加できるPythonの標準機能
関数の前後でログ出すデコレータ実装
FastAPIで簡単なAPIを作ってみて @loggerを関数につける
SwaggerからAPIを実行
AOP的なロギングはとりあえずできた。 Pythonの哲学的にはどうなの? Pythonの「Zen of Python(PEP 20)」に以下のような記述がある Explicit is better than
implicit (明示的は暗黙的よりも良い) @loggerはログ出すんだなとわかるからOKなんじゃないかなと思 いました。 ただ、引数もログに出す場合などは個人情報をログに出すとまず いので、使い方には注意が必要だなと思いました。 @loggerを特定のパッケージ配下の関数全部に適用するような処 理も書けるようだが、だいぶ暗黙的になってしまうので Python的にはなしなのかなと思いました。
ありがとうございました!