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
1
200
Pythonに漸進的に型をつける
2025/10/22
https://findy.connpass.com/event/371749/
『Pythonの多様性 深掘りLT Night 』〜バックエンドから機械学習まで〜
Nealle
October 21, 2025
Tweet
Share
More Decks by Nealle
See All by Nealle
Startup Tech Night ニーリーのAI活用
nealle
0
63
モビリティSaaSにおけるデータ利活用の発展
nealle
1
860
品質ワークショップをやってみた
nealle
0
1.4k
DevHRに全部賭けろ
nealle
0
230
TROCCO×dbtで実現する人にもAIにもやさしいデータ基盤
nealle
1
2.5k
AI OCR API on Lambdaを Datadogで可視化してみた
nealle
0
390
生成AI、実際どう? - ニーリーの場合
nealle
0
1k
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
4
18k
ニーリーにおけるプロダクトエンジニア
nealle
0
1.4k
Other Decks in Programming
See All in Programming
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.3k
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
140
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
160
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
4.5k
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
1.1k
ゆくKotlin くるRust
exoego
1
190
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
4.6k
Vibe codingでおすすめの言語と開発手法
uyuki234
0
160
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
160
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
2.3k
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
470
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
210
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.5k
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
91
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Designing for Timeless Needs
cassininazir
0
110
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
590
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Being A Developer After 40
akosma
91
590k
SEO for Brand Visibility & Recognition
aleyda
0
4.1k
Scaling GitHub
holman
464
140k
The Curse of the Amulet
leimatthew05
0
6.9k
Six Lessons from altMBA
skipperchong
29
4.1k
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