Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Pythonに漸進的に型をつける
Search
Nealle
October 21, 2025
Programming
260
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pythonに漸進的に型をつける
2025/10/22
https://findy.connpass.com/event/371749/
『Pythonの多様性 深掘りLT Night 』〜バックエンドから機械学習まで〜
Nealle
October 21, 2025
More Decks by Nealle
See All by Nealle
定期処理の実行時間を監視してますか?
nealle
0
59
Running Kotlin + Quarkus with Lambda
nealle
1
4.2k
ASTを使って影響範囲を特定する
nealle
0
230
AWSとGitHub Actionsの責任境界と 組織で安全に使用する取り組み
nealle
2
440
Claude Codeによるデータ分析の民主化とそれを支えるデータ基盤
nealle
1
200
Product Engineering Conference 2026の ご案内
nealle
0
430
【旧版】Nealle Company Deck
nealle
0
170
職種の境界を染み出しあう品質保証 - PdEがテストへ、QAが上流へ、AIとともに
nealle
0
290
どうして今サーバーサイドKotlinを選択したのか
nealle
0
720
Other Decks in Programming
See All in Programming
Simple Storage Service(S3) is not simple
iwatsukayura
0
310
GraphQL の onError と Nullability のこれから
quramy
0
160
JIS keyboard support in Omarchy
lef237
0
150
気持ちぃ〜角丸 Squircle
ryu1013
0
320
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
510
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
740
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
270
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
840
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
310
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
350
Featured
See All Featured
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
A Modern Web Designer's Workflow
chriscoyier
699
190k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Ethics towards AI in product and experience design
skipperchong
2
440
Amusing Abliteration
ianozsvald
1
350
Scaling GitHub
holman
464
140k
Designing for humans not robots
tammielis
254
26k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
580
Transcript
2025.10.22 NEALLE Pythonに漸進的に型をつける 1 株式会社ニーリー 野呂 有我 『Pythonの多様性
深りLT Night 』 〜バックエンドから機械学習まで〜
1|自己紹介 2 氏名 所属 経歴 野呂 有我 / Yuga NORO
株式会社ニーリー プラットフォーム本部 アーキテクチャチーム ・大学院時代に友人と楽譜販売サービスを立ち上げ ・その後、SIer企業に参画 ・副業としてニーリーでいくつかの開発に携わる ・フリーランスを経て、ニーリーへ
3 2|プロダクト紹介
Park Direct for Business 法⼈向け⽉極駐⾞場の探し‧契約‧⽀払い‧管理サービス 3|プロダクト紹介
4|プロダクト紹介 5 • 全てのサービスで、バックエンドにPython/Djangoを採用 • DRFを使ってAPIを高速開発! • 少しずつオニオンアーキテクチャに寄せていっている
登壇資料リンクはこちら→
弊社がPythonを使っている理由 5|弊社が Pythonを使っている理由 6 • ところで、今日は 多様性がテーマです • Pythonを使っている会社には、
そういうパターンもあるんだな〜と暖かい目で見ていただけると幸いです • そう、その理由は…
6|弊社が Pythonを使っている理由 7 ベトナムの某社が、安く早く作ってくれたから
7|弊社が Pythonを使っている理由 8 • 市場を把握しきれていないスタートアップにとって、 早く安く作ってくれる 、 というのは非常に大事 •
CTO三宅も、この選択は正しかった と振り返る • とはいえ、ローンチ後の拡張時に設計、実装上の問題が露呈しがち • 特に弊社が苦しんだのは、型ヒントが全くついていなかったこと • というわけで…
8|Pythonに型をつけていく 9 • ひとまず関数から型ヒントを付けていく • Pylanceで静的型チェックを実施 • ただ、型を意識せずに書かれているため、
普通に型ヒントを書いていくだけではケアしきれないケースも出てくる • 例えばこういうやつ↓ Pythonに型を付けていく
9|Pythonに型をつけていく 10 • objは… ◦ dateというプロパティを持っているらしい ◦ dateというプロパティはyearやmonth, dayというプロパティと replaceというメソッドを持っているっぽい
• この関数を使っているところを全部調べて、渡されているインスタンスに ABCを継承させて 回ることもできないでもないが、手間にリターンが見合わない …
10|Pythonに型をつけていく 11 • そこで、Protocol で部分的に構造的部分型を導入する! • 最初から公称型を使ってドメインを表現するようなポリシーの場合には使い所はあまりないが、 漸進的にやる場合にはこの柔軟性が結構ありがたい
11|Pythonに型をつけていく 12 • しかもこのProtocol, デコレータを付与すること で、実行時に型match 可能になる • 構造的部分型を採用していて、
実行時に型matchできる言語、レア! • 実はPythonは強い型を持つ言語…! • プロパティの増減があったり、 プロパティの有無を判定するif文がいっぱいあ るところをこれで置き換えていける ※上のコードはイメージですが、 実際にプロダクトコードで構造的部分型を matchさせているところはあります
12|Pythonの多様性 13 • 動的型付け でスピーディに初期プロダクトを開発 • 構造的部分型 で徐々に舗装 •
その上で抽象を見つけて公称型に切り替える事でドメインロジックを確定させていく • 柔らかく作って堅くしていける! • フェーズに合わせてポリシーを切り替えられる 懐の広い言語、Python
None
15