こんにちは、Pythonエンジニア育成推進協会 顧問理事の寺田です。私は試験の問題策定とコミュニティ連携を行う立場です。
恒例となりましたPythonのおすすめ環境について、今年も2025年バージョンについてお話したいと思います。
今年の大きな変化としては、昨年も触れたuvを中心に環境を整えるようになったという点です。周囲でもuvを使って環境構築する方が増えているようで、いろいろなところへ影響が出ているように感じています。
今回のお話は6項目の変遷に加え、uv周りを中心にお話したいと思います。
■開発環境変遷
まず、実装、Pythonのバージョン、インストーラ、仮想環境、パッケージインストール、エディタの6項目の変遷です。右端に今年分を追記しましたのでご確認ください。
※昨年の内容が気になる方は以下の記事をご参照ください。
2017年時点 | 2022年 | 2023年 | 2024年 | 2025年 | |
1.実装 | CPython | CPython | CPython | CPython | CPython |
2.Pythonバージョン | 3.6 | 3.9 | 3.9か3.10 | 3.11か3.12 | 3.12か3.13 |
3.インストール方法 | 公式インストーラ | 公式インストーラ | 公式インストーラ | 公式インストーラ | 公式インストーラ、uv |
4.仮想環境 | venv | venv | venv | venv | uv 時々venv |
5.パッケージインストール | pip | pip | pip | pip or uv | uv |
6.エディタ | PyCharm | VS Code | VS Code | VS Code | VS Code |
■使用しているPythonのバージョンについて
Pythonの新しいバージョンは毎年10月にリリースされ、5年間サポートが実施されます。昨年10月にリリースされたのは3.13で、2025年10月には3.14がリリースされる予定です。
新しいバージョンへの移行は5年間のサポートがあるため、急いでバージョンを上げる必要はありませんし、サポートが切れない限り、使い続けても問題はありません。
3.13では、主に今後のPython開発として予定されているフリースレッティングと言われるGILの解消などに取り組むための下準備が主に行われているのと共に、近年の取り組み課題として挙げられている、Pythonの高速化や使いやすさを高めるという方針への対応も進んでいます。
高速化に関して言えば、3.13でとても高速化が進んだという印象はありませんでしたが、3.10あたりと比較すればそれなりに高速化されているという感触がありました。また、3.13では対話モードが大きく改善されており、複数行編集やカラーリングが取り入れられ、とても使いやすくなっています。
Pythonの古いバージョンが必要な理由がない限り、十分安定してきていると言える3.13の採用には支障はありませんし、プロダクションとして使うだけの価値は存在していると考えています。
では、私自身がどのバージョンを利用しているかと言えば、3.12か3.13をメインとしていたのを、最近は3.13の方にどんどん移行しています。
また、私はコードの動作を確認するときには対話モードをよく利用しますが、3.13では対話モードが使いやすくなったため、挙動を確認する時には3.13の対話モードを立ち上げて確認をしています。
もちろん、プロダクションで以前のバージョンでメンテナンスを続けているものはありますので、そうしたものはそのまま使い続けています。
ところで、昨年ビルド済みのパッケージ(Wheel)の配布に対して、新しいPythonがどこまで対応しきれるかというお話をしていますが、昨年のPyCon USでステアリングカウンシルが公式に発表した通り、JITコンパイラの導入やGIL解消などを目指してはいるものの、急いで対応することで使いにくくなってしまうことは明らかなため、急激に大きな変革はしないとされています。
3.13への対応も問題なく進みましたので、3.14でも3.13同様に対応が進んでいくと期待されています。
参考:Pythonの未来、長年の課題も含めて丁寧に時間をかけて育てていく
■インストールは公式からuvへ
私は近年、仮想環境やパッケージのインソールについては、公式のものをおすすめしますよ、ということをずっと強く言っており、実際、公式のものでやってきました。ですが、最近はPythonのインストール自体をせず、uv経由でPythonの環境を整えるということが増えています。
この方法を厳密に言うと、別でコンパイルされたものを、uv経由でダウンロードして使っているということになります。この点が昨年から大きく変わったと言える点です。
uvはAstral社が作っているもので、Rustという言語で書かれているツールで、Pythonの環境をセットアップにRustが使われています。
▽uvとは何か
uvはWindowsならPowerShell、macOSやLinuxならターミナルを使って、ワンコマンドでインストールすることができます。
インストール後は、uvコマンドというものを使い、Python環境のセットアップやパッケージのインストール、環境周りの設定、Pythonスクリプトの実行など様々なものをuv経由で行えるようになります。
uvの特徴はなんと言っても早いことです。パッケージのインストールが早いだけでなく、例えばJupyterLabをインストールするなどの場合でも、uv経由でインストールすると非常に早く進めることができます。
また、uv自身が色々な機能を備えているので、uvだけで環境のセットアップや、様々なプログラムを実行することができます。これらの多くのものは、標準にかなり近い仕様を取り入れて開発されています。
例えば、pyproject.tomlという、パッケージを設定するための仕様が書かれたファイルがありますが、そのpyproject.tomlを読み込んだり、pyproject.tomlに書き出したりということができ、かなり標準の仕様を意識して作られてるんだろうなと思っています。
▽uvは便利だが活用には注意が必要
便利なuvですが、特殊なところもたくさんあります。
例えば、ロックファイルをuv.lock というファイルを作るところや、uv自身がRustでできているということが影響して、中身がなかなか理解しにくいという点です。
そのため、メンテナンスや、問題が起きたときに問題の箇所を発見できるのかを考えると、少々わかりにくく、それまでの経験が使えない部分が出てきてトラブルに陥るのではないかという懸念があります。
また、uvからインストールできないパッケージや、開発環境が上手く作れないパッケージなど、uvでは対応ができないものは実際に存在しています。それはパッケージやツール自身のお行儀の悪さみたいなところが起因しています。具体的に言うと、内部でpipを呼んだり、暗黙的にvenvによる環境をパッケージ自身が作って使っていたりというものがそれにあたります。そういったものの場合には、uvは使えないということを実際に私自身が経験しています。そういった場合には、メインではuvを使いつつ、他のインストーラを併用しています。
そうした注意しなくてはならない点があることから、これが公式に入ってくることはなかなか考えにくいのが現状です。
そのため、uvを使った方法しかわからないという状況は危険だというのは確かなのですが、スピードが早く、環境を整えやすいという便利さがあるのには変わりはありません。私自身もuvに完全に移行してからというもの、いろいろなものをやるには手軽で簡単なので、そちら寄りになっています。
ちなみに、こうした状況でもuvを使い続けているのは、私自身がこれまでの経験からPythonで環境を構築することに慣れており、トラブルに十分対処できるという自負があるからこそです。
▽初心者にuvはおすすめなのか
環境を整える際、構築中のトラブルや、セットアップ、pipでのインストール、仮想環境の活用というのは、かなりの手間を要するため難しく、初心者にとっては理解するまでにハードルが高いのは確かです。
uvはそうした面倒な部分を一足飛びにフォルダに必要なものをダウンロードをして、Gitからクローンして、uvコマンドを打つだけで環境が整います。また、起動も[uv run]というuvコマンドを打つだけで直接起動することもできます。
つまり、uvさえ入っていれば、Pythonが入っていなくても使うことができるため、非常に楽に進められることから、まずちょっとだけ試してみたいという人にとっての環境としてはものすごい簡単に環境ができるということです。それも開発面においても使える環境になるというのは大きな利点です。
これだけを聞いていると、良いところしかないんじゃないかと思えるほど便利なツールであることは確かな一方で、先ほど挙げた問題点があるのも事実です。
そのため、初心者に向けてuvを教えるかと言えば、実を言えば悩みます。
どうしてもトラブルが起きたときに複雑になり、ひも解いて解決する必要があるからです。
そのため、1つの有力な選択肢として考えて頂き、もし使うなら、「公式のものではない」ということを意識して使い続けてもらえればと思います。
ちなみにuvはまだアルファバージョンであるため、今後仕様が変わる可能性は大いにあります。また開発スピードもとても速いので、1年たったころには新しい機能が搭載されていたり、別のものに変わっていたりという可能性もあり得ます。
今回はそれも踏まえて、現時点でのおすすめとしてご紹介しています。
■仮想環境について
仮想環境も全部uv側にしています。もちろんvenvを使うこともありますが、uvにしていることことの方が多くなっています。そのため、パッケージインストールも直接pip(ピップ)を使うのではなく、uv経由でパッケージの管理やインストールもしています。
■BlackからRuffへ
uvを開発したAstral社にはもう一つ有名なツールにRuffという静的コード解析ツールがあります。こちらもRustで作られています。
Blackは非常に便利なツールではありましたが、私は最近ではほとんどBlackを使うことがなくなり、Ruffに全て移管しています。Ruffには、Flake8やisortなどの静的コードリンターなどの機能も中に入っているため、もうRuff1本で、それらのものを解決するのに十分という方向になってきたかなと考えています。
Ruffもサードパーティ製パッケージであるため、使い方にはもちろん色々思う点はあるとは思いますが、かなり公式に近い存在かなと見ています。
ちなみにこれらのツールを開発したAstral社はPythonのツールを置き換えられるようなものを作っている会社で、昨今、非常に注目されている会社の一つであることは確かです。
■エディタ
エディタは必ずIDE(統合開発環境)を使うことをおすすめします。
特にこだわりがないのなら、VS Codeで良いかと思います。VS Codeの拡張機能には、GitHub CopilotやAIエージェント的なものがありますので、それらを十分に活用するならVS Codeはおすすめです。
私自身はどうしているかというと、PyCharmを使うこともありますが、比較的少なくなっており、VS Codeを中心に使っています。VS Code及びVS Code周辺のAIエージェントやAIツール周りなどは、新しい拡張機能への親和性が非常に高いと思っています。
ところで、AIツールであるCopilotは最近では利用するのが当たり前になってきたなと感じています。もはや、これなしでコードを書くのは面倒だというのが正直な気持ちです。Copilotはおすすめのコードを出すだけでなく、リファクタリングもしてくれるのでとても楽です。ある一定レベルでのサジェスチョンも出てきますので、作業効率が上がって手放せないツールになっています。
ちなみに、これはPyCharmを否定しているということではなく、PyCharm自体も相当進化しており、PyCharmでもAIエージェントなどのいろいろなAI系のツールは使えると聞いています。
PyCharmはJetBrainsが作っている統合開発環境で、Python以外の言語のものも出していますので、JetBrainsのツールに慣れている方や、PyCharmの方が慣れている方にとっては、PyCharmの方が親和性は高いのではないかと思います。
■Dockerの活用は限定的に
Dockerをどこまで使って環境を整えるか、特に開発環境という意味では、どこまでDockerで整えるかという点ですが、私自身は徐々に開発環境でDockerを使うことが少なくなってきています。使うとすれば、データベースインスタンスが必要な場合やテストに使いたい場合です。
開発環境だけのことを言うなら、私はDockerではなく、uvで直接自分の環境にPythonをインストールするか、Nodeなどをインストールして開発をするというのが最近のスタイルです。
Docker自体はとても便利でいいものではありますが、Dockerでなくてはならない可搬性みたいなところが、私の中でそこまで利便性が上がっていないと考えています。反対に、テスト環境やプロダクション環境などにDockerを使うことについては、進んできてるかなという風に思っているところです。
なお、Docker技術が要らなくなったということではなく、私の今の開発スタイルからすると、環境が手元あって触りながら進めていった方が作りやすいというだけで、Dockerの活用範囲としては部分的なものになっているというだけの話です。
■さいごに
先日のコラムでもお話したとおり、AIツールは今年、とてつもない勢いでより進化すると思います。
今の段階での進化といえば、主にプログラミング業界に強い影響を与えるものばかりだと思いますが、今後はプログラミング業界以外の分野でもどんどん波及していくと思います。
そうした進化やそれによる影響を支えるのはエンジニアの存在です。そこに対して、Pythonは優位性のあるプログラミング言語と言えるものだと思います。
それに備え、AIを使いながらプログラミングを学習し、AIをさらに活用できるサイクルに入っていけるようしっかりと身に着けていって頂ければと思います。