Misato Maeda
本トークでは、現在最も注目される3つの型チェッカーを比較し、それぞれの特性と適用場面を明らかにします。
対象となるツールは:
これら3つのツールは、それぞれ異なる設計思想と強みを持っています
本トークでは、実際のPythonプロジェクトを用いて以下の観点から比較検証を行います
さらに、各ツールが得意とするユースケースを紹介します。 型安全なPython開発は、もはや選択肢ではなく必須要件となりつつあります。 本トークを通じて 、プロジェクトに最適な型チェッカーを選択し、チーム全体の生産性を向上させる知見を得ていただければ幸いです。
Python開発における型チェッカーは、もはや「あれば便利」なツールではなく、プロダクション開発に不可欠な存在となりました。しかし、その選択肢は多様化し、それぞれが異なる思想と技術的アプローチを持っています。 本トークでは、現在最も注目される3つの型チェッカーを取り上げ、それぞれの特性を多角的に分析します。 歴史と実績のmypy、モダンで高速なpyright、そして革新的なアーキテクチャで注目を集めるty。これらのツールが生まれた背景と、それぞれが目指す方向性を理解することから始めます。
mypy(2012年〜) mypyは歴史の長い型チェッカーです。DropboxのエンジニアJukka Lehtosalo氏が博士研究の一環として開発を開始しました。 当時のPythonには型注釈の仕組みすら存在していなかった中で、mypyが挙げた功績についてまとめます。
pyright(2019年〜) MicrosoftがTypeScriptの成功体験を基に開発した型チェッカーです。 「開発者体験の向上」を最優先に掲げ、短期間で成熟度を高めたこのチェッカーの思想についてお話ししま す。
ty(2024年発表、2025年プレビュー版) Astral社が「Python開発ツールの再発明」というビジョンの下で開発中の次世代型チェッカーです。 このチェッカーの登場から、今注目されている理由についてご紹介します。
パフォーマンス比較 異なるサイズのプロジェクトでの性能測定結果を提示します。初回実行時間、インクリメンタルチェックの速度、メモリ使用量など、開発効率に直結する指標を比較することで、 各ツールの実装言語(Python/TypeScript/Rust)の違いが、どのようにパフォーマンスに影響するかを解説します。
型推論能力比較 Pythonの様々な型機能に対して、各ツールがどこまで推論できるかを検証します。基本的な型注釈から、ジェネリクス、Protocol、型ガード、デコレータなど、段階的に複雑度を上げながら、それぞれの推論能力の限界を探ります。同じコードに対する3つのツールの解釈の違いを並べて比較してみましょう。
エラーメッセージの比較 開発者の生産性に直結するエラーメッセージの質を比較します。よくある型エラーのパターンを用意し、各ツールがどのようなメッセージを出力するかを実演します。エラーの特定しやすさ、修正提案の有用性、メッセージの分かりやすさを、実際にお見せして評価を行います。
実験結果を総合し、各ツールがどのような開発シーンで最も力を発揮するかを整理します。単純な優劣ではなく、それぞれが提供する価値の違いに焦点を当ててお話しします。 また、プロジェクトの規模、チームの状況、使用するフレームワークやエディタなどに応じた型チェッカー選択の決定木を提示します。大規模プロジェクトでの選択、中小規模での最適解、新規プロジェクトでの実験的アプローチなど、具体的なシナリオ別の推奨事項についてご紹介します。
本トークを通じて、参加者の皆様が自信を持って型チェッカーを選択し、より安全で生産的なPython開発を実現できることを願っています。
Profile
Recustomer株式会社で主にバックエンド開発をしています。最近は型安全性や関数型プログラミングの考え方を取り入れた設計に関心があり、ドメイン駆動設計や Result 型によるエラー処理の改善に取り組んでいます。