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
Pythonに漸進的に型をつける
Search
Nealle
October 21, 2025
Programming
250
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
AWSとGitHub Actionsの責任境界と 組織で安全に使用する取り組み
nealle
1
220
Claude Codeによるデータ分析の民主化とそれを支えるデータ基盤
nealle
1
130
Product Engineering Conference 2026の ご案内
nealle
0
260
AllCompanyDeck_old.pdf
nealle
0
71
職種の境界を染み出しあう品質保証 - PdEがテストへ、QAが上流へ、AIとともに
nealle
0
230
どうして今サーバーサイドKotlinを選択したのか
nealle
0
280
電話を武器に変える Amazon Connect 活用の全貌
nealle
0
5.7k
Nealle Company Deck
nealle
0
230
業務アプリケーションでリアクティブ化するところ、しないところ
nealle
1
130
Other Decks in Programming
See All in Programming
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
500
Pythonの実行はどこまで賢くなったのか? CPythonとPyPyから見る最適化のしくみ
curekoshimizu
4
2.3k
【QA Test Talk Vol.8】AI-DLC による Whole Team Approach の加速
pkshadeck
PRO
0
250
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
5
550
MySQLとPostgreSQLって何が違うの?
akagami
0
150
FastAPI の並行処理モデルを完全に理解する
hoto17296
8
3.2k
Loosening the Reins: Go Generics Get More Flexible
kuro_kurorrr
0
350
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
130
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
5
1.8k
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.2k
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
260
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
440
Featured
See All Featured
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Navigating Team Friction
lara
192
16k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
240
The SEO identity crisis: Don't let AI make you average
varn
0
540
Embracing the Ebb and Flow
colly
88
5.1k
30 Presentation Tips
portentint
PRO
1
380
GitHub's CSS Performance
jonrohan
1033
470k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
A better future with KSS
kneath
240
18k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
260
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