Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FastAPIでAOP的ロギングはありなのか?
Search
村上優稀
May 21, 2025
Programming
1
64
FastAPIでAOP的ロギングはありなのか?
村上優稀
May 21, 2025
Tweet
Share
More Decks by 村上優稀
See All by 村上優稀
DI(依存性注入)
musan
0
17
Other Decks in Programming
See All in Programming
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
130
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
220
dchart: charts from deck markup
ajstarks
3
950
Go コードベースの構成と AI コンテキスト定義
andpad
0
160
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
180
これならできる!個人開発のすゝめ
tinykitten
PRO
0
150
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
6
830
GoLab2025 Recap
kuro_kurorrr
0
3.6k
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
160
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
340
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
180
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
720
Featured
See All Featured
A Tale of Four Properties
chriscoyier
162
24k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
110
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
110
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
300
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
97
RailsConf 2023
tenderlove
30
1.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
730
Documentation Writing (for coders)
carmenintech
77
5.2k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
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的にはなしなのかなと思いました。
ありがとうございました!