一般社団法人Pythonエンジニア育成推進協会(以下、当協会)の顧問理事の寺田学です。 私は試験の問題策定とコミュニティ連携を行う立場です。これまで、開発環境やPythonの学習方法のお話の中で様々な方法を取り上げてきましたが、結局のところ、自分の使いやすい環境を整えてやってみたり、実際に作ったプログラムをデプロイして動かしてみたりといったことが重要になってきます。プログラミング自体は、テキストエディタに書けば動くものはできますが、Python全体として、どういう環境で開発するかはやはり重要なことです。

そこで今回は、2022年1月22日に開催されたPyCon KYUSHU 2022 KUMAMOTOで、私がお話しした昨今のPythonの開発環境について紹介したいと思います。

  • 一般社団法人Pythonエンジニア育成推進協会 顧問理事 寺田学氏

    著者:寺田学
    一般社団法人Pythonエンジニア育成推進協会 顧問理事

5年間で開発環境に大きな変化はないものの…

実は、2017年頃にも開発環境について話したことがあり、「えっ、そうなの!?」とかなり驚かれた話なので、折を見ていずれまた触れてみようと思っていました。まず、私が2017年と現在でおすすめしている環境を比較してみます。

2017年 2022年
1.実装 CPython CPython
2.Pythonバージョン 3.6 3.9
3.インストール方法 公式インストーラ 公式インストーラ
4.仮想環境 venv venv
5.パッケージインストール pip pip
6.エディタ PyCharm VS Code

これを見てわかっていただけると思いますが、実のところ、当時から大きくは変わった部分はありません。それでも、この5年間で多少は変化したところもあります。ここからは1~6を順番に説明していきたいと思います。

環境の選び方

1.実装

そもそも「実装」という言葉は何を指すものでしょうか? まず思い浮かべるのは「作った機能を使えるようにする」といったものだと思いますが、実のところPythonにおいてはそれ一つではありません。

まず、表にもある「CPython」ですが、これはPSF(Python Software Foundation)が開発した標準的なもので、C言語で書かれています。他方で、開発現場でまれに使用されているPyPyは、PythonでPythonを実装したもので、それ以外にJavaで動くJythonや.NET系で動くIronPython、高速化されたCythonなどもあります。

Pythonの実装で何を使用しているかといえば、ほとんどの場合が「CPython」です。PyPyはものによっては高速に動かせることがあります。用途として便利だなと思うことはありますが、私自身はほとんど使うことはありません。最近注目され始めているのが「MicroPython」です。これは機能が限定されたPythonで、IoTの小さなメモリ上で実行できるように標準ライブラリやドキュメンテーションが省かれています。とにかく小さくすることを目的として作られているため、マイクロコンピューター上でPythonを動かしたいときなどに使われています。これはIoT系で使われることが増えています。

とはいえ、特別な理由がない限り、ほとんどのケースで選ぶのは「CPython」ですし、「Python」として実装されているもののほとんどが「CPython」向けです。

2.バージョンの選択

Pythonは以前、18か月ごとに新しいバージョンがリリースされていましたが、2020年に公開された3.9以降は1年ごとの秋と決められています。そのため、次のバージョンである3.11のリリースは2022年10月の秋ごろということになります。Pythonにどのような機能が搭載されるかは、PSFの公式サイト内にあるPEPで提案された内容から、どのPEPを該当のバージョンで取り込むかが決められていきます(例:3.10のPEP)。3.11のページも用意されていますが、今の時点ではスケジュールは決まっていてもその内容はまだドラフトです。内容が決まるとリリースマネージャーが追記していくという形で運用されています。

Pythonのどのバージョンを使えばいいのかという問題ですが、私は最新バージョンが出て半年ほど経ってから使用しています。ライブラリや環境は最新バージョンが出てすぐに対応するわけではないため、焦ってバージョンを上げる必要はないと考えているからです。

昨今利用が増えているDockerなら問題なく使えると思いますが、EC2やWindows上で動かすといった場合には、焦ってバージョンを上げる必要はないと考えています。Pythonの保守期間は5年間ありますし、基本的に下位互換性を保っているため、Python2とPython3でない限り、動かなくなるということはめったにありません。ただ、3.7で予約語が増えているため、そのせいで動かないというケースはごくまれにあります。とはいえ、ほとんどの場合は、ライブラリの場所が変わったり、改造があったりというレベルなので、ちょっとした修正で動くようになります。新しい機能を使いたい場合や、ライブラリの対応状況が変わるという場合なら早い時期に変えた方がいいですが、そうでない限りは、焦らず5年以内にバージョンアップしましょう。

ところで、複数のバージョンを同一OS上に入れられないと誤解されていることがあります。実際は、マイクロバージョンの混在はできませんが、公式インストーラであればマイナーバージョンの共存はできます。 例)バージョン3.9.8:3=メジャー、9=マイナー、8=マイクロ   →3.9.xと3.8.xは共存できるが、3.9.8と3.9.7は共存できない

3.インストール方法

PSFが提供している公式インストーラが用意されています。それ以外には、公式版をソースコンパイルして使用しているという人や、OSパッケージマネージャ(apt、DNF、brew)を使用する人、Anacondaで様々なパッケージをまとめてインストールするという人もいます。私としては公式インストーラがおすすめです。Linuxの場合はソースコンパイルを使用していますが、aptの方がいいという方もいますし、パッケージマネージャを利用することもあります。

Anacondaは、2017年時点では科学技術計算系のパッケージが同梱されていたこともありインストールが手軽だったので、Windows環境で科学技術計算系をする場合には楽でした。しかし、5年たった今、Windows環境でもAnacondaを使わずに、公式版とpipでインストールが可能になりました。一方、Anacondaは大企業で使う場合は有料化されており、ライセンス形態も複雑になったので注意が必要です。また、はまるポイントが多いため、コミュニティにサポートしてもらいやすい公式版とは違い、ハードルが高いというのが現状です。

4.仮想環境

Pythonレイヤーの仮想環境に限定した話で、OSの仮想化やコンテナ化は別ですが、ひとつのOS上に複数のPython環境を作ることができ、また、利用するPythonライブラリを区分できること、OS上のグローバルなPython環境をクリーンに保てるといったことから、昨今はプロジェクトごと、やりたいタスクごとに仮想環境を作るというのがほとんどになっています。

<仮想環境の種類>
①venvモジュール:Pythonの標準ライブラリに搭載されており、Linux/macOS/Windowsで使用可能。
②pyenv:マイクロバージョンの切り替えやソースコンパイルの切り替えが可能。ただ、昨今はDockerなどでマイクロバージョンを含めてPythonをDocker化していることも増えているため、そこまでこの機能の需要は多くない。
③condaコマンド:Anacondaで使う仮想環境。

5.インストーラ

サードパーティ製パッケージを導入する際は、Pythonに同梱されているpipコマンドを使用します。画像処理ならpillow、Webフレームワークならflask、データ分析ならpandasといったパッケージのダウンロードは多くの場合、PyPIから行われます。私は仮想環境をアクティベートしてからインストールするので、仮想環境を有効化してから、必要なパッケージをインストールするようにコマンドを打ち込んで環境を整えています。

・Wheelで楽になった環境構築
Wheelはバイナリパッケージを1ファイルにするもので、ビルド済みの配布用パッケージを準備してくれます。PyPIからpipコマンドでインストールする場合、ファイルを落とし、展開し、自分でインストールするのが一般的でしたが、Wheelでアップロードされていればインストールを楽に終えることができます。たとえば、Pillowは依存関係が難しいのですが、依存関係で必要なものをすべて取りそろえた形でパッケージ化して保存してくれているのがWheelです。Windows用、macOS用、Linux用とそれぞれのパッケージに必要な環境が取り揃えられており、どのような環境でも構築が容易になりました。pipコマンドは自身の環境を見て必要なものを落としてきてくれるので普段は意識する必要はありませんが、Wheelのことを知らない方が意外と多いようでした。

6.エディタ

エディタについては以前のコラムで取り上げていますのでご参照ください。特に制約はありませんが、最初は統合環境を使うのがいいと思います。いくつか試して、自分にとって使いやすいものを選んでいきましょう。迷うようならVS Codeか、PyCharmの有料版を使用してみるのもいいと思います。

おまけ

おまけの情報として、私が普段使用している環境についてもご紹介します。私自身は普段、macとLinuxをメインに扱っており、複数のバージョンを入れています。参考にしてみてください。

Windows macOS Linux
1.実装 CPython CPython CPython
2.Pythonバージョン 3.9 3.8、3.9、3.10 3.6、3.7、3.8、3.9
3.インストール方法 公式インストーラ 公式インストーラ ソースビルド/opt
4.仮想環境 venv venv venv
5.パッケージインストール pip pip pip
6.エディタ VS Code VS Code VS Code

今回のお話は資料としても公開しています。興味がある人はこちらをぜひチェックしてみてください。

当協会の最新情報は公式サイトか、公式Facebookページでご覧いただけます。FacebookページではPythonに関連したニュースもお知らせしていますので、ぜひフォローしてみてください。また、YouTubeチャンネル「Pythonエンジニア認定試験」では、私が試験概要や学習のコツをお話ししたものや、合格した方のコメント動画を公開しています。こちらもぜひご覧ください。

[PR]提供:Pythonエンジニア育成推進協会