M1 MacでのPython開発環境構築における選択肢(Apple Silicon)

Apple siliconに憧れてM1 Macbook Airを買ってみたものの、これがなかなか曲者でした。プログラミングの勉強・開発環境としては、無難にwindowsかIntel macの方が良いかもしれません。他プログラミング言語については詳しくないのでわかりませんが、Pyhonの開発環境としてM1 Macで考えられる選択肢とその構築方法をまとめておきます。

M1 macでのPython開発環境の選択肢

ざくっと調べた感じだと、以下3つが現在(2021年9月)の主な選択肢のです。

  • Homebrewでインストールする
  • Anaconda環境(miniforge)を使う
  • Dockerを使う

M1 Macでの環境構築がややこしいの原因は、Apple siliconではCPUアーキテクチャ(命令系統の設計)として、従来のintel x86系と異なりArmアーキテクチャが使用されていることです。これについて下の記事などを読むとイメージかつかめます。

ITエンジニアの豆知識 CPUのアーキテクチャって?
ARM版 M1 プロセッサ搭載 mac は インテル版と何が変わるのか

Homebrewで直接pythonをインストールする

macOS(またはLinux)用パッケージマネージャー「Homebrew」を使ってpythonをインストールする方法です。

・メリット

MacOS環境でのデファクトスタンダードなツールなので取っ付きやすい

デメリット

PythonのパッケージによってはM1のArmアーキテクチャに対応済みのもの、Rosetta上でしか動かないものがあり、パッケージをインストールするたびに逐一確認する必要があるため、運用には注意が必要

僕はやったことはありませんが、以下の方が簡潔にまとめられています。

Rosetta 2は、従来のIntel Mac用のバイナリをArmベースのM1 Macでも動くようにさせるためのエミュレーションソフト

Rosetta 2 を調べてわかった Apple M1 が速い秘密

Anaconda環境(miniforge)を使う

Anaconda はデータサイエンス向けの環境を提供するプラットフォームです。科学技術計算などを中心とした、多くのモジュールやツールのコンパイル済みバイナリファイルを提供しており、簡単にPythonを利用する環境を構築できます。

m1 macではMiniconda(Anacondaの最小構成版: 参考 AnacondaとMinicondaの比較)のフォークであるminiforgeを使います。

・メリット

環境構築がかんたんで、仮想環境管理もできる。armネイティブで高速。
pythonパッケージのM1対応を気にしなくて良い。

デメリット

condaリポジトリにない(miniforgeでインストールできない)パッケージをpypi(pip)で入れると、予期せぬ衝突によって環境が破壊され、再インストールが必要になる可能性がある(参考: condaとpip:混ぜるな危険

こちらは以下の記事(+動画)が大変参考になりました。

miniforgeとは…

さまざまなCPUアーキテクチャ(intelのx86_64やppc64le、Apple M1を含むaarch64)のサポートに重点を置いたMiniconda。

Dockerを使う

Dockerコンテナ上にpython環境を作る方法です。

・メリット

環境ごとにコンテナを作れば衝突の心配がない。
pythonパッケージのM1対応を気にしなくて良い。

デメリット

Dockerの学習コスト。処理によっては上に2つと比べると遅い。

方法はこちらにまとめました。

まとめ

現実的には「Anaconda環境(miniforge)を使う」か「Dockerを使う」になるかなと思います。まずはminiforgeでやってみて、不都合があればDockerを使い始めれば良いでしょう。他にベターな方法があればぜひ教えて下さい。

コードを実行するだけならGoogle Colaboratoryもありですが、環境構築とは言えないので割愛しました。