こんにちは、Pythonエンジニア育成推進協会 顧問理事の寺田学です。私は試験の問題策定とコミュニティ連携を行う立場です。
2024年5月、PyCon USがペンシルベニア州ピッツバーグで開催され、私も参加してきました。
いろいろな話がされましたが、その中でも、Pythonのこれからという部分を取り上げて今回はお話したいと思います。
■Python3.13の開発は順調、サードパーティ製ライブラリは確認が必要
主にPythonというと、Python Software Foundation(PSF)が開発しているCPythonが指されます。これはC言語で開発されています。
現在のPythonの最新バージョンは、Python3.12です。これまでにも伝えてきました通り、Pythonは毎年10月に最新版がリリースされるようになっており、今年の10月には3.13がリリースされる予定です。
Python3.13に関してはすでに機能のリクエストは締め切られ、どの機能が入れられるかもFIXし、スケジュール通りに順調に開発が進んでいます。現在はより良いものにするための修正や、細かな部分に対応するなどの最後の調整段階に入っており、すでにベータ版がリリースされ、7月末にRC版になる予定です。
ところで、3.13が出たら、すぐに3.13でサービスをリリースしたいと思っていたとしても、ベータ版やRC版を先取りして使う必要はありません。
というのも基本的にPythonは後方互換性が保たれた形で開発がされていますので、3.12で作られたものであっても3.13で問題なく動きます。そのため、通常の利用であればバージョンについて特に問題にする必要はありません。
ただ、今回、注意しなくてはならない点があるとすれば、サードパーティ製ライブラリです。
3.13では内部の構造が大幅に変更されていますので、サードパーティ製ライブラリについては様々な対応が必要となると思います。そのため、サードパーティ製ライブラリを作っている人たちは、すでにベータ版などを使って検証していると思います。
なので、通常の利用で注意する点があるとすれば、サードパーティ製ライブラリなどの外部のものを使っている場合です。ライブラリの対応状況を随時確認する必要が出てくると思います。
■Pythonの今後の方針予測
Pythonは今後、何をしようとしているのかという点については、最近の動きを見ていると大きく2つの方針を主軸に動いています。それぞれ一つずつ着実に進めており、徐々に進化していることは確かです。
1.Pythonの動作速度の改善 ~Faster CPython~
Pythonの動作速度が遅いという話は以前からあり、3.11以降からはスピードを速くしていこうという動きが始まっています。
3.13は速度改善を始めてから3回目のリリースとなりますが、実際に進めてみると、パフォーマンスの性能が一つ上がったからといって、動作が数倍速くなるというものでもない部分があったようで、思っていたより苦戦していると聞いています。
とはいえ、着実に一歩ずつ進んでいるそうではあります。
2.書きやすくしよう
Pythonをより安全に、より書きやすく、よりわかりやすくするという動きは続いています。
3.13ではそう大きな機能変化というものはありませんが、過去にはエラーメッセージの変更や、型ヒントという機能の追加や改善と言ったことが行われています。
現在、Pythonは内部のAPIを変えたり、古いものを消したりといった、大幅なリファクタリングを行っています。表側への影響はあまりありませんので、Pythonを普通に使っている分には特に影響を受けることはありませんが、今後対応していく予定のものを問題なく進められるように一つずつ丁寧に準備を進めています。
そんな中で、「Pythonの後方互換性を保つ」という事を一生懸命やっているという印象を強く感じています。これまでも、いろいろな変更点によってPythonの内部が変えられてきました。それは今後も続いていくことになりますが、内部の変更を一気にしてしまうと、サードパーティ製ライブラリが内部で使っているものも一気に変わってしまうことになって、みんなの対応が大変になってしまうため、PSFは、ひとつずつ、確実に進めているという状況のようです。
とても大変なことではありますが、結構な時間をかけて慎重に進められていくことになると思います。
■Python3.13での機能面での変更
実は私も驚いたのですが、Pythonが大きな進化を遂げる中で、より使いやすくする目的で、3.13から、インタラクティブモード(対話モード)の見た目が変わります。カラーリングができるようになるなど、より見やすいものになっていきます。さらに、実行するときに面倒に感じる部分がありましたが、そうした部分も改善されていくようです。
そして、もうひとつ。
プラットフォームとして、iOSやAndroidにも対応させ、Pythonを動くようにすると発表されています。
具体的にどんな事ができるようになるかについて、現段階ではあまり追いかけ切れておらず、あまりピンときていませんが、内部的にPythonを呼び出せるようにしたり、インストールして呼び出せるようにしたり、といったことをしていくのではないかなと考えています。
■長い時間をかけて、丁寧にPython3を育てる
ところで、最近、JITコンパイラ(実行時コンパイラ)が動作速度アップに対してのメリットが大きいということから、JITコンパイラ対応のPythonを作ろうという事が盛んに言われており、進められています。
3.13ではまだすぐに使える段階にはないという事で、インストールしたままのデフォルトでは使えるようにはしないようですが、お試しはできるようにしているそうです。
検証がまだ完全に終わっていないこと、また、サードパーティ製ライブラリとの相性など様々な問題が想定されるためこういった対応になっています。
さらに、話題としてもう一つ。
グローバルインタープリターロック(GIL)問題というのが、Pythonにはかねてから存在しています。
Pythonにはメモリーアクセスをロックするという仕組みがありますが、スレッティングを使ったときにパフォーマンスが上がらないシチュエーションが起きることがあります。そうした問題のことをGIL問題と言います。
PSFはこの問題の解決にも取り掛かっているようです。とはいえ、この問題の影響は相当大きく、すぐにGIL問題を解消することはできないため、5年以上の長い時間をかけて、後方互換性を維持しつつ、丁寧に標準に取り組んで行く感じになるようです。
すすめ方としては、フェーズ1ではオプションという形で用意して動くようにして、サードパーティ製ライブラリなどの開発者が試していく段階になります。フェーズ2ではデフォルトで使えるようにはしないものの、APIなどもきちんと整備して本格的に使えるものをリリースするようです。フェーズ3でデフォルトでも使えるような形にして本格的にリリースされるという形になります。
GIL問題をなくそうとすると、後方互換性の維持や、サードパーティ製ライブラリとの相性など、様々な問題が出てしまうだろうということが想定されていたため、Pythonをずっと使っている人たちからすると、「うん、これはしょうがないよね」と言われてきたものでした。
今回の問題への対処は、下支えするものとして簡単に壊れてしまうようなものは作らないという思いの下、長い時間をかけて丁寧に対応していくという姿勢がよく表れています。この姿勢を見ていると、今のPythonを安心して今後もしばらく使っていけるだろうと思えます。
ところで、Pythonは今、マイナーバージョンが二桁になっていますが、しばらくはこのままバージョンを重ねる予定で、4.0の計画は今のところないと公言されています。
Python2からPython3への移行は10年かけて行われ、相応の苦しみがありました。4.0に上げることによる苦しみを起こすのではなく、Python3の後方互換性を大事にしながら、速度アップなど様々なことを取り入れ、丁寧に育てていくとのことでした。