Slide 1

Slide 1 text

© 2025 Wantedly, Inc. Python型チェッカー ty を 使ってみた話 みんなのPython勉強会#114 May.30 2025 - @nogawanogawa

Slide 2

Slide 2 text

© 2025 Wantedly, Inc. 自己紹介 - 角川拓也 - X: @nogawanogawa - 所属 - ウォンテッドリー株式会社 データサイエンティスト - ex. - ITコンサル @コンサル会社 - システムエンジニア @金融系SIer

Slide 3

Slide 3 text

© 2025 Wantedly, Inc. Pythonとデータ型

Slide 4

Slide 4 text

© 2025 Wantedly, Inc. Pythonとデータ型 - Pythonは動的型付け言語 - 変数の中に型情報が埋め込まれており、データ型を指定しなくても動作可能 - 「小さなプログラムでは動的型付けはすばらしい。しかし、大規模なプログラムではもっと 規律の取れたアプローチが必要である」 - データ型は保守性の高いコードの大黒柱 - Pythonでは型アノテーションによって型ヒントを付与することが可能 - 実行時には型ヒントは全く利用されないものの、ロバストなコードベースを構築するには型 ヒントは非常に有効 参考:『ロバストPython ―クリーンで保守しやすいコードを書く』オライリー・ジャパン( 2023)

Slide 5

Slide 5 text

© 2025 Wantedly, Inc. Python型チェッカー - Python型チェッカーが広く使われている - mypy - Pyre - Pyright - PyType - … - コードベースが巨大になると型チェックの時間が無視できなくなるとの指摘 がある - コードの差分のみをチェックするなど、通常高速化の工夫が取られている - Python型チェッカーでは 高速化が大きなポイントになっている

Slide 6

Slide 6 text

© 2025 Wantedly, Inc. tyについて

Slide 7

Slide 7 text

© 2025 Wantedly, Inc. ty - Astral製のPython型チェッカー - ruff や uvを開発している会社が開発 - 開発コードネームはRed-Knotらしいです - 特徴 - まだプレビュー版なのでプロダクションで使用する準備は整っていないと記載あり - 処理速度が速い - salsaというrust-analyzerでも使われているオンデマンド計算のためのフレームワーク を採用 参考: https://github.com/astral-sh/ty

Slide 8

Slide 8 text

© 2025 Wantedly, Inc. ty - ty check [チェック対象] で実行 - 型アノテーションが間違っている場合などには、違反箇所を教えてくれる 参考: https://github.com/astral-sh/ty

Slide 9

Slide 9 text

© 2025 Wantedly, Inc. 速度比較 - 簡単な速度比較をしてみる - mypyの10倍近く高速化 - mypyはキャッシュが効いているはずだがそれでも tyのほうが圧倒的に速い この事例では 10倍ほど高速化 参考: https://www.nogawanogawa.work/entry/ty

Slide 10

Slide 10 text

© 2025 Wantedly, Inc. ● 保守性の高いPythonコードベースには型アノテーションが重要と言われる ○ そのためにPython型チェッカーが広く使われている ○ 型チェッカーのポイントの一つとして速度が注目されてきた ● Python型チェッカー ty ○ rustのsalsaフレームワークをベースにしており非常に高速 ● 速度比較 ○ 簡易実験してみたところ、mypyより高速だった まとめ