Pythonの最新メジャーリリース「Python 3.15」が、2026年10月9日(現地時間)に正式公開されました。
ファイルを開く際の既定エンコーディングがUTF-8になるほか、モジュールの読み込みを遅らせる機能や、新しい組み込み型などが加わっています。
実験的なJITコンパイラーも強化され、Windows版ではインタープリターの高速化も報告されています。
Python 3.15の主な新機能
今回のリリースでは、プログラムの起動やデータの扱いを改善する言語機能に加え、型ヒント、開発者向けツール、C APIなどにも変更が加えられました。
Python 3.14に続く年次リリースで、開発には1,012人のコントリビューターが参加し、5,643件のコミットが寄せられたとされています。
| 機能 | 概要 | 期待できること |
|---|---|---|
| 遅延インポート | 必要になるまでモジュールの読み込みを保留 | 起動時間の短縮 |
| UTF-8の既定化 | エンコーディングを指定しないファイル操作にUTF-8を使用 | 環境による文字化けの抑制 |
frozendict | 作成後に変更できない辞書型 | 不変データの表現 |
sentinel | 一意の番兵値を作成する組み込み型 | 特殊な状態の明確な表現 |
| 実験的JIT | 実行時コンパイラーを強化 | 一部環境での実行速度向上 |
起動を速くする遅延インポート
必要になった時点でモジュールを読み込む
PEP 810では、lazyキーワードを使った明示的な遅延インポートが導入されました。
通常のインポートはプログラムの起動時にモジュールを読み込みますが、遅延インポートでは、そのモジュール内の名前が初めて使われるまで読み込みを保留します。
多数のモジュールを利用するアプリケーションでは、起動直後に使わない機能の読み込みを後回しにできるため、起動時間を短縮できる可能性があります。
起動オプションの-X lazy_imports=all、または環境変数PYTHON_LAZY_IMPORTS=allを使えば、すべてのインポートを遅延させる設定も可能です。
ただし、モジュールの初期化が実行されるタイミングはプログラムの動作に影響することがあるため、既存コードで一括して有効にする場合は、テストで挙動を確認することが重要です。
UTF-8が既定のエンコーディングに
環境によるファイル処理の違いを軽減
PEP 686により、open()などで文字エンコーディングを指定しない場合、システムの設定にかかわらずUTF-8が使われます。
これまでは実行環境のロケール設定によって既定のエンコーディングが異なることがあり、別の環境へプログラムを移した際に文字化けが起きる原因となっていました。
UTF-8が標準になることで、異なるOSや環境の間でテキストファイルを扱う際の一貫性が高まります。
既定動作の変更は既存プログラムにも影響するため、従来のエンコーディングを前提とした処理は動作確認が必要です。
従来の動作に戻す場合は、起動オプション-X utf8=0または環境変数PYTHONUTF8=0を指定できます。
新しい組み込み型と記述方法
PEP 814のfrozendictは、作成後に内容を変更できない辞書型です。
キーと値がハッシュ可能な場合は、frozendict自体もハッシュ可能になり、変更させたくない設定値などを扱いやすくなります。
PEP 661のsentinelは、一意の番兵値を簡潔に作成するための組み込み型です。
番兵値は、値が指定されていない状態と、Noneなどの実際の値を区別したい場合に役立ちます。
また、PEP 798ではリスト、セット、辞書の内包表記とジェネレーター式で、*や**によるアンパックが可能になりました。
複数のコレクションを展開して組み合わせる処理を、より簡潔に記述できます。
型ヒントや開発者向け機能も拡充
型ヒントでは、TypedDictで追加のキーを型指定できる拡張や、型式そのものを注釈するTypeFormなどが加わりました。
さらに、型システムに「disjoint bases」が導入され、型の関係をより細かく表現できるようになります。
プロファイリング関連では、PEP 799によりパッケージprofilingとサンプリング型プロファイラー「Tachyon」が追加されました。
実行中のプロセスにコード変更や再起動を行わずに接続し、比較的低いオーバーヘッドで解析できることが特徴です。
起動時に呼び出すエントリーポイントを指定する.startファイルも導入され、監査しやすい起動設定を目指しています。
これに伴い、.pthファイルに記述するインポート行は非推奨となります。
また、フレームポインターが既定で有効になり、プロファイラーやデバッガー、eBPFベースの監視ツールでネイティブスタックを巻き戻しやすくなります。
存在しない属性を参照した際のエラーメッセージも改善され、属性をたどった候補が示される場合があります。
実験的JITとWindows版の高速化
環境ごとに異なる性能向上
Python 3.15では、実験的なJITコンパイラーが大きく強化されました。
公表されたベンチマークでは、標準インタープリターと比べて、x86-64版Linuxで幾何平均7~8%の高速化が見込まれています。
AArch64版macOSでは、「tail-calling interpreter」と比べて11~12%の高速化が示されています。
Windowsの公式64bit版では、MSVC 18の機能を活用した「tail-calling interpreter」が採用されました。
Windows x86-64環境の「pyperformance」では、従来の「switch-case」方式に対して幾何平均15~20%の高速化が報告されています。
これらは特定のベンチマークや環境での結果であり、実際のアプリケーションで同じ割合の性能向上が得られるとは限りません。
JITは実験的な機能として提供されるため、利用を検討する際は対象プログラムで性能と互換性を評価する必要があります。
サポート期間とWindowsの導入方法
Python 3.15のサポート期間はリリースから5年間で、2031年10月まで続く予定です。
Windowsでは、バージョンごとに提供されてきた従来型のフルインストーラーがPython 3.15で最後となり、Python 3.16以降は「Python Install Manager」への一本化が予定されています。
Python Install Managerは、インストールやバージョン管理を行う公式ツールで、スクリプトに応じてPythonのバージョンを切り替える作業を簡素化します。
新規に導入する場合は、使用するプロジェクトや開発環境が対応しているかを確認し、公式の配布ページから適切な方法を選ぶとよいでしょう。
まとめ
Python 3.15は、UTF-8の既定化や遅延インポート、新しい組み込み型などを通じて、日常的なプログラミングの利便性を高めるリリースです。
JITやWindows版インタープリターの強化も注目点ですが、性能差は環境や処理内容によって異なります。
既存のプロジェクトではエンコーディングやインポートの変更が影響する可能性があるため、移行前にテストを行い、新機能を段階的に取り入れることが大切です。
