ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

M1コアのMac miniを使ってみて

2021/05/13 追記 Python3関連で追記をしました。

M1 Macを買おうとしたきっかけ

Youtubeなどをみていると、次から次へとM1 Macの性能や互換性の高さ、コストパフォーマンスが良いと言う評価をしている方が多く、気になっていました。

私が所属してる日本仮想化技術株式会社はサーバー仮想化分野(及びその周辺)で活動している東京都渋谷区に構えるIT系の会社です。 最近はVMware vSphere製品を中心としたサーバー仮想化だけでなく、5G(や今後は6G)、MEC、AI、ARやVRなどの技術、機械学習、Dev/Ops、Kubernetesなどを中心としたコンテナーなどのお仕事を、色々な会社さんと協力して取り組んでいます。

現在世間はコロナ禍ということもあり、仕事は去年の緊急事態宣言が発令されて以降は在宅勤務が基本になっています(どうしても必要でない限り、原則在宅勤務ということになっている)。そこで、それだけ性能がいいのなら作業効率の向上も、普段使い時のストレス軽減にもなるのではと思ってM1 Mac miniと外部モニターのリクエストをしたところ、買ってもらうことができました(ちなみに、仕事で必要なものは相談すればいつでも買ってもらうことができる良い会社です。これは少ない人数でやっているからできる芸当...なのかもしれません)。

f:id:ytooyama:20210508212419p:plain

M1 Macを使って

「M1 Macはすごい」というのは噂で色々聞いていました。Youtubeとかで調べると使ってみた感想とかベンチマークだとか、色々なアプリを動かしみたとか様々な情報が見つかります。

そのような話は他に任せることにしてそれ以外のところで使ってみた感想を言うと、まず一点目に感動したのが「M1 Mac miniは全然熱くならない」というところです。私はIntel Core i3のMac mini 2018も持っているのですが、性能は思ったほど悪くはないものの、ちょっと何かの作業をするだけでも本体が熱くなり、排気ファンが割と頻繁に回ります。冬は暖房になるので良いですが、それと比べたら段違いです。これで夏場も安心ですね。

二点目に「アプリケーションの互換性の高さ」です。自分が普段使っているアプリケーションの多くは動作しました。

発売開始から1年程度経ったのもあって、私が普段使うアプリケーションの多くはユニバーサルアプリ化が進んでいました。唯一、画面の解像度を切り替えるために使っていたEasyResがM1対応していませんでした。アプリを起動したら「利用するにはRosettaのインストールが必要」と言われました。インストールしたら特に問題なく使うことができました。

エディターはCotEditorを愛用しています。こちらもユニバーサルアプリ化されているので問題ありません。あとはたまに使うのですがLibreOfficeなども、App Store版はユニバーサルアプリ化されていました。ポップアップメッセージの一部が文字化けしている問題以外は特に問題なく動いていました。ファイルの互換性は問題ないと思います。

ブラウザーについてはFirefoxを普段使っています。Firefoxの現行のバージョンはM1も対応しているので、特にパフォーマンスなど問題はありません。データ移行もFirefoxアカウントでログインするだけで全部OKでした。

仕事柄、Slackをコミュニケーションツールとして使うのですが、これもAppStoreに公開されているアプリをダウンロードして、紐づけられているメールアドレスを入れてメールで送られてくる文字列を入力して、参加しているチャンネルを追加していくだけで移行完了でした。

開発系だと色々なツールをHomebrewを使ってインストールするのですが、M1 Macが発売された当初は色々と未対応で動かなかったようですが、現状は問題ないようです。

XCodeを入れずに使いたかったので、以下を実行してCommand Line Toolを入れた後、

$ xcode-select --install

以下のサイトを開いて書かれているコマンドを実行しました(実行するコマンドは変わる可能性があるのでサイトを開いて確認してください)。

このあとHomebrewでインストールしたのは「telnet」です。たまに使うので。

PythonについてはHomebrewでもインストールできますが、今回も公式サイトからダウンロードしました。ただ注意点があって、普通にダウンロードのページからリンクを辿るとIntel向けのパッケージがダウンロードされてしまいます。そのため「Looking for a specific release?」のDownloadのリンクを辿って、ページ遷移後のFilesの一覧の中から「macOS 64-bit universal2 installer」を選ぶと、Apple Silicon(M1)に対応したビルドのPython 3.9.5がダウンロードできました。

以前、サイトで見つけたIntel版Python3で動かせたストップウォッチアプリも、M1 Mac上で動かせました。互換性は問題なさそうです。

f:id:ytooyama:20210508211720p:plain
Python3アプリの動作をチェック

2021/05/13追記

執筆時点ではPython 3.9.5のApple Silicon版を利用していました。特にモジュールを追加せずに動くアプリケーションは問題なかったのですが、pandasをインストールしようとしたところ、依存モジュールのnumpyのビルドに失敗してインストールできない問題が発生しました。numpyは色々なモジュールの依存関係で利用されるモジュールだと思います。いずれ対応されそうですが、しばらくはmacOS 64-bit Intel installerを使うと良さそうです。

stackoverflow.com github.com

一方、Python 3.8.10のIntel版パッケージを利用した場合は問題が起きませんでした。

% pip install numpy
Collecting numpy
  Downloading numpy-1.20.3-cp38-cp38-macosx_10_9_x86_64.whl (16.0 MB)
     |████████████████████████████████| 16.0 MB 17.1 MB/s 
Installing collected packages: numpy
Successfully installed numpy-1.20.3

% pip install pandas
Collecting pandas
  Downloading pandas-1.2.4-cp38-cp38-macosx_10_9_x86_64.whl (10.5 MB)
     |████████████████████████████████| 10.5 MB 2.4 MB/s 
Requirement already satisfied: numpy>=1.16.5 in ./virtual/environment/lib/python3.8/site-packages (from pandas) (1.20.3)
Collecting pytz>=2017.3
  Downloading pytz-2021.1-py2.py3-none-any.whl (510 kB)
     |████████████████████████████████| 510 kB 22.4 MB/s 
Collecting python-dateutil>=2.7.3
  Downloading python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
     |████████████████████████████████| 227 kB 17.1 MB/s 
Collecting six>=1.5
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: six, pytz, python-dateutil, pandas
Successfully installed pandas-1.2.4 python-dateutil-2.8.1 pytz-2021.1 six-1.16.0

Python 3.8.10はここからダウンロードできます。回避策としてmacOS 64-bit Intel installerの方をダウンロードしてください。

www.python.org

Python 3.9.5については確認中です。 -> 3.9.5のIntel版も問題なくインストールできました。いずれ解消しそうですが、今のところはIntel版を使っておくと良さそうですね。

Python 3.9.5はここからダウンロードできます。同様にmacOS 64-bit Intel installerの方をダウンロードしてください。

www.python.org

ざっと書いてみましたがアプリケーションについては、一般的なアプリケーションについては動かなかったものはありませんでした。ただシステムの深い部分と密接な感じのアプリケーションだったりドライバーだったり周辺機器などは、よく確認してからのほうが良さそうです。しばらくはIntel版Macと併用が良さそうです。

メイン環境をM1 Macにしてみて

現在のデスクはこんな感じになっています。

f:id:ytooyama:20210508211811j:plain
デスク周り

ラズパイが置いてあるあたりに、以前はMacBook Pro 16インチを置いて、Bluetooth接続のキーボードとマウスを使って作業をしていました。今回、外部モニターとMac miniの組み合わせにしたことにより、机の上に作業スペースが生まれました。書き物をしたり、ラズパイをいじったりとか色々できて良さそうです。

今回選んだ液晶モニターはHDMI端子が二つあるのでMacとの接続は普段DPで繋いでデュアルモニターとして使ったり、ニンテンドーSwitchとかPS4とかのゲーム機を繋いで遊んだりできそうだなあとか思っていたりします。

Apple Oneを契約しているので、対応するコントローラーを繋いでApple Arcadeで色々ゲームを楽しむのもありでしょうか。

写真のキーボードとマウスが置いてある台は後付けのもので、使わない時は収納するとスッキリします。キーボードは3つのデバイスとBluetooth接続できるので、iPadとMacBook ProとMac miniを使えるように設定しています。キーが丸いのは打ちにくかったのですが、使っているうちに慣れました。

Mac mniを立てるのに使ったスタンドは実はもう一つ買っていました。MacBookをクラムシェルモードで使うために使うと思います。

f:id:ytooyama:20210508213230j:plain

VirtualBoxは動かず

仮想化ソフトウェアとしてオープンソースのVirtualBoxを古くから使っていましたが、これは残念ながら動作しません。 もともとIntel CPUでも、Big Surには非対応で様々な問題が生じることがあり、次第に使うのをやめていました。

開発者曰く、「VirtualBoxはx86のマシンをエミュレートするソフトウェアであるため、M1対応は計画にない。対応するとしたら再設計が必要になるだろう」と話しており、M1対応ができる開発者が現れない限り、M1対応は絶望的と思います。これまで良いソフトウェアを使わせていただき、ありがとうございました。

後述しますが、Parallels Desktop 16.5からM1がサポートされました。VMware FusionもM1対応を表明していますので、今後Parallels DesktopとVMware Fusionであれば、M1及びその後継CPUのモデルでも利用できそうです。

気になっていたディスプレイの問題

以前はMac miniをサーバー用途で使っていたため、VNCクライアントで繋いで使っていました。買い替えを機に、モニターを接続して普段つかいのマシンとしてM1 Mac miniを使おうと思いました。

Mac miniはディスプレイがないので、外部モニターを端子にケーブルを繋いで接続する必要があります。噂では「M1 Macで4K 60Hzが出ない」とか、「使用中にブランクになることがある」、「スリープ解除時に画面が映らない」といったことがちらちら聞かれていました。ちょっと心配ではあったのですが、次の組み合わせでは問題なく動作するのを確認しています(ただし、もっと長い間使っていると再現する問題があるかもしれないので、しばらく気をつけてみたいと思います)。

HDMI接続による4K 60Hzは、モニター付属のHDMIケーブルを使った接続で認識しました。Display Portによる4K 60Hzは、YOJOCK社製のケーブルを使った接続により、安定したディスプレイ表示が行えました。2日ほど使っていますが、ディスプレイが誤動作するといったことは今のところ起きていません。

仮想マシンソフトウェア「Parallels Desktop」

M1向けにParallels Desktopのライセンスを支給してもらったので、使ってみることにしました。以前ダウンロードしたParallels Desktop 16.5のインストーラーはM1 Macでは動かなかったので、新たにダウンロードしてインストールしました。

Intel Mac miniを使っていた頃は、Parallels Desktopの仮想マシンでdnsmasqによる名前解決のためのDNSとchronyによるNTP時刻同期サーバーを実行していました。

M1 Mac miniでも同じようなサーバーを用意するため、arm64向けのDebian 10のISOをダウンロードしてその上で動かしました。「debian-10.9.0-arm64-netinst.iso」と言うイメージを使ってインストールしました。インストール後Parallels Toolsを入れて完了です。

そのうち、Windows 10も動かしてみたいと思います。ただ、NTPサーバーはラズパイに戻すかも。

iOSアプリ

TBS Free、YTV Mydo!、radikoなどをいれてみました。 TBS FreeはMac向けにビルドされたものなので、操作しづらいといったことなく使えました。

YTV Mydo!は以前、iPadで使った時と同じような感じで利用できました。バラエティ、アニメなどがみられます。

radikoは正式にはradiko for auというアプリでauアカウントでログインして使うものですが、ログインせずに使えばフリーモードで使えます。まあこれはブラウザーで開けば良いでしょう。

iOSアプリはあくまでおまけ程度のつもりでいましたが、私はあまり使わないものの意外と実用的だそうです。もうちょっと色々触ってみようと思います。

GitHubに公開されているコマンドラインツールなどへの対応

M1に移行して困ったのがarm64バイナリーがないプロジェクトの場合ですが、Mac向けのamd64バイナリでも動作するのを確認しました。例えば kubevirtのamd64バイナリーとかが動作しました(ワンテンポ遅いですが動いています)。ただ動かない場合もあるので、試しにやってみると良いと思います。手元では標準のターミナルを「Rosettaを使用して開く」をオンにしない状態で動作確認しています。

一方kubectlのようにM1向けのバイナリーが存在する場合は、そちらをインストールするとネイティブに動きます。

まとめ

「M1 Macすごい。CPUアーキテクチャーが変わったのにほとんど苦労せずにいつもの環境ができた。」というのが素直な感想です。普段ライトな使い方しかしていないので、はまっていないだけかもしれません。

ちなみにちょっと前まで使っていたIntel CPU版のMac miniについては、コロナ禍が収まって会社に出社できるようになったら、オフィスで使おうと思います。外で作業するときはMacBookとかiPadを使うことにして。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。