t>

Python 3.15 β1が登場、lazy importやUTF-8標準化など注目の新機能を一挙解説

1 minutes reading View : 25
アバター画像
Haruki Sato
IT - 15 5月 2026

2026年10月の正式リリースを控え、Python 3.15の最初のベータ版(β1)が公開された。今回のβリリースで新機能の追加は完了し、以降は安定化フェーズに入る。今後は数回のβ版を経て、2026年8月~9月にリリース候補(RC)、同年10月に正式版がリリースされる見通しだ。本稿では、Python 3.15で導入される主要な変更点を、実行環境の改善、新しい記法、データ型の追加、型システムの強化といった観点から整理する。

実行環境・パフォーマンス面では、進化したプロファイラー(PEP 799)や、デフォルトで有効化されるフレームポインタ(PEP 831)、`.pth`ファイルに代わる新たなパッケージスタートアップ構成ファイル`.site.toml`(PEP 829)が注目される。また、PEPには含まれていないものの、JIT(Just-in-Time)コンパイラの高性能化や、Windows環境(64ビット)における末尾呼び出しインタプリタの採用も大きな変更点だ。これにより、特にWindows上のPythonアプリケーションの実行速度が向上することが期待されている。

デフォルトのエンコーディングがついにUTF-8に統一される(PEP 686)。これまでPythonは内部処理ではUnicode文字列を使う一方、`open()`などのテキストIOではOSのロケール設定に従ったエンコーディングが使われてきた。例えば日本語版Windowsでは、バージョン3.14まではShift_JIS(CP932)がデフォルトだった。そのため、UTF-8で書かれたテキストファイルを開く際には明示的に`encoding=’utf8’`を指定する必要があった。Python 3.15以降ではこの指定が不要となり、逆にShift_JISのファイルを扱う際にエンコーディング指定が必要になる。過去のコードでエンコーディングを明示せずにテキストファイルを読み書きしている場合、動作しなくなる可能性があるため、事前の確認が推奨される。

新しい書き方として、lazy import(PEP 810)とunpacking comprehension(PEP 798)が加わる。lazy importは、import文またはfrom … import文の先頭に`lazy`と付けるだけで、そのモジュールが実際に使われるまで読み込みを遅延させる。大規模なPythonアプリの起動時間を短縮する効果が期待できる。一方、unpacking comprehensionは、内包表記の中でアンパック演算子`*`を使えるようにするもので、例えばリストのリストを平坦化する際に`[*items for items in mylist]`のように簡潔に書けるようになる。

データ型関連では、frozendict(PEP 814)とsentinelクラス、さらに`math.integer`サブモジュール(PEP 791)が追加される。frozendictは内容を変更できない辞書で、集合の要素として使えるなど、ハッシュ可能な辞書が求められる場面で有用だ。sentinelクラスは、存在しない要素を明示的に表現するためのシングルトンオブジェクトを簡単に定義でき、関数の返り値やルックアップの失敗を型安全に扱える。`math.integer`サブモジュールには`comb`や`perm`など整数関連の関数が移され、従来の`math.comb`などはエイリアスとして引き続き利用可能だが、新規コードでは`math.integer`を使用することが推奨される(ソフト非推奨)。

型システムの強化では、PEP 800(非交和基底)、PEP 728(閉じたTypedDict)、PEP 747(type formオブジェクトの型注釈)が採用された。特にPEP 728では、`TypedDict`に`closed=True`を指定することで、定義されたキー以外を一切持たない「閉じた」型を宣言できるようになる。これにより、型チェッカーがより厳密なチェックを行える。なお、以前注目されたPEP 832(仮想環境パスの`.venv`統一)は、今回のバージョンでは採用が見送られた。正式リリース前に新機能をまとめるのは時期尚早かもしれないが、開発者にとっては早めに動向を把握する良い機会となるだろう。

編集部注:この記事はAIを使用して作成されており、ITmedia NEWSの記事を元に、内容を変更せずにリライトしたものです。
Share Copied