Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pythonに漸進的に型をつける

Avatar for Nealle Nealle
October 21, 2025

 Pythonに漸進的に型をつける

2025/10/22
https://findy.connpass.com/event/371749/
『Pythonの多様性 深掘りLT Night 』〜バックエンドから機械学習まで〜

Avatar for Nealle

Nealle

October 21, 2025
Tweet

More Decks by Nealle

Other Decks in Programming

Transcript

  1. 1|自己紹介 2 氏名 所属 経歴 野呂 有我 / Yuga NORO

    
 株式会社ニーリー
 プラットフォーム本部 アーキテクチャチーム 
 ・大学院時代に友人と楽譜販売サービスを立ち上げ
 ・その後、SIer企業に参画
 ・副業としてニーリーでいくつかの開発に携わる
 ・フリーランスを経て、ニーリーへ

  2. 弊社がPythonを使っている理由 
 5|弊社が Pythonを使っている理由 6 • ところで、今日は 多様性がテーマです
 • Pythonを使っている会社には、

    
 そういうパターンもあるんだな〜と暖かい目で見ていただけると幸いです 
 • そう、その理由は…
 

  3. 7|弊社が Pythonを使っている理由 8 • 市場を把握しきれていないスタートアップにとって、 早く安く作ってくれる 、
 というのは非常に大事 
 •

    CTO三宅も、この選択は正しかった と振り返る
 • とはいえ、ローンチ後の拡張時に設計、実装上の問題が露呈しがち 
 • 特に弊社が苦しんだのは、型ヒントが全くついていなかったこと 
 • というわけで…

  4. 8|Pythonに型をつけていく 9 • ひとまず関数から型ヒントを付けていく 
 • Pylanceで静的型チェックを実施 
 • ただ、型を意識せずに書かれているため、

    
 普通に型ヒントを書いていくだけではケアしきれないケースも出てくる 
 • 例えばこういうやつ↓ 
 Pythonに型を付けていく 

  5. 9|Pythonに型をつけていく 10 • objは… ◦ dateというプロパティを持っているらしい ◦ dateというプロパティはyearやmonth, dayというプロパティと replaceというメソッドを持っているっぽい

    • この関数を使っているところを全部調べて、渡されているインスタンスに ABCを継承させて 回ることもできないでもないが、手間にリターンが見合わない …
  6. 11|Pythonに型をつけていく 12 • しかもこのProtocol, デコレータを付与すること で、実行時に型match 可能になる
 • 構造的部分型を採用していて、 


    実行時に型matchできる言語、レア! 
 • 実はPythonは強い型を持つ言語…!
 • プロパティの増減があったり、 
 プロパティの有無を判定するif文がいっぱいあ るところをこれで置き換えていける 
 ※上のコードはイメージですが、 
 実際にプロダクトコードで構造的部分型を 
 matchさせているところはあります
  7. 12|Pythonの多様性 13 • 動的型付け でスピーディに初期プロダクトを開発 
 • 構造的部分型 で徐々に舗装
 •

    その上で抽象を見つけて公称型に切り替える事でドメインロジックを確定させていく 
 • 柔らかく作って堅くしていける!
 • フェーズに合わせてポリシーを切り替えられる 
       懐の広い言語、Python 

  8. 15