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
240
1
Share
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
1
75
TypeScriptとAngular Signal で実現する保守性の高いアプリケーション設計 - 3層アーキテクチャによる責務分離の実践(たつかわ) https://2026.tskaigi.org/talks/10
nealle
1
400
クラウドネイティブなエンジニアに向ける Raycastの魅力と実際の活用事例
nealle
2
320
3つのボトルネックを解消し、リリースエンジニアリングを再定義した話
nealle
0
1.1k
JDDUG#15 DataDogで行うバッチ改善
nealle
0
110
「なぜ」を残し、SLOを育てる IaCによるSLI/SLO運用の実践
nealle
0
140
Datadogのログコスト最適化
nealle
0
1.2k
今、アーキテクトとして 品質保証にどう関わるか
nealle
0
280
AI巻き込み型コードレビューのススメ
nealle
2
3k
Other Decks in Programming
See All in Programming
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
440
IBM Bobを活用したレガシーアプリの最新化
oniak3ibm
PRO
1
160
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.5k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.1k
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.6k
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
3
2k
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
420
Oxcを導入して開発体験が向上した話
yug1224
4
280
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
430
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
430
AIエージェントの隔離技術の徹底比較
kawayu
0
460
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.1k
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
300
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
440
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
220
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
570
Raft: Consensus for Rubyists
vanstee
141
7.5k
WENDY [Excerpt]
tessaabrams
11
38k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
280
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
320
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
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