My RSS Reader

Description about Blog Author


Macの買い替えとarm64アーキテクチャーへの移行

先月の話にはなりますが、普段作業用に使っているMacをIntel CPUモデルのMac mini 2018からM4 Macminiに乗り換えました。Amazonのセールで8万円程度で出ており、熟考した結果購入することにしました(その間に8千円ほど値段が前後してしまいましたが)。

使っていたMac mini 2018はメモリーこそ16GBに変更していますが、それ以外はカスタマイズせずに買ったものです。CPUは第8世代Core i3で4コアですし、ストレージは256GBで、外付けGPUはありません。これでも10万円位した気がします。

とは言え普段使いには特に困ることは無いので、Mac mini 2018はもうしばらく使おうかなと思っていたのですが、来年のmacOS 27がIntel CPU対応のMacの大部分をサポート外にすると聞き、それならもう新しいものを買ってしまおうと思って今回、購入に至ったわけです*1

同じきっかけで今後Apple Silicon版Macに移行する人も増えると思ったので、今回、こんなブログ記事を書こうと思いました。

今回私が買ったモデルはCPU 10Core, GPU 10Core, メモリーは16GB、ストレージは256GBの標準モデルです。 公式では94800円のモデルですが、私が購入した頃は8万円前半で出ていました。定期的に開催されるセールの時が狙い目です。

https://www.amazon.co.jp/dp/B0DLCCBD1H

「ところでストレージ256GBじゃ足りないのでは?」とよく言われますが、Mac mini 2018のストレージが普段使いで160GBくらい空いていたので大丈夫だろうという判断です。普段からMac上で大きなアプリケーションを動かすことは無くて、sshとかしてほかの環境で動かすので、何とか256GBでもやりくりできています。

もちろんそれには若干工夫が必要で、VirtualBoxを使って仮想マシンを実行する場合は仮想マシン置き場を設定変更し、外付けのSanDiskのSSD 1TBに変更しています。そこまでする必要は無いと思って私は設定していませんが、最近のmacOSにはAppStoreのアプリを外部ストレージに保存するオプションも追加されているので、アプリの管理をAppStoreでおこなっている場合は、有益なオプションかもしれません。また、なんらかの信頼性のあるクラウドストレージの併用は必要だと思います。私はApple Oneを契約しているので、そちらを主に使っています。

support.apple.com

大きさを比較してみます。右上はPowerPC G4 Mac mini、左下がIntel Mac mini、右下がM4 Mac miniです。

M1からM2のMacminiもIntel Mac miniと同じ大きさでしたから、M4モデルのその大きさにびっくりします。 筐体がコンパクトになった分、若干厚みが増しました。これまでMac miniはスタンドを使って縦置きにして使っていましたが、厚みが変わったことで、これまで使っていたスタンドが使えなくなりました。新しいのを探さないと。

データ移行

最近はずっと新しいMacへの移行作業をするときは標準の移行ツールは使わずに、ユーザーの.sshと一部のファイルだけをコピーして移行完了とし、後のアプリケーションは新規インストールしていました。

ただ今回は久しぶりに移行ツールを使ってみようと思い、標準の移行ツールを使ってユーザーデータ丸々を移行しました。移行は問題なく完了してライセンスも問題なく引き継げましたが、amd64版のソフトウェアがそのまま入っているため、その対応が必要でした。

ミーティングアプリ

リモートワーク主体になったのもあり、リモートコミュニケーションツールは一通りそろえる必要があります。いまだったらZoomとかSlackとか、Teamsとかでしょうか。

SlackはもともとApple Store版のSlackを使っていたため、特に何もせずに使えました。

TeamsおよびMicrosoft 365 Appについては、移行後に再度ログインが求められました。これはライセンスで管理されているソフトウェアなので仕方がないです。特にエラーが出ることなく使い続けられています。

Zoomは起動したものの、amd64版が動いているのでアップデートが必要(arm64版に移行)と勧められました。賢いですね。そのまま指示に従えばApple Siliconに対応したバージョンに切り替えられます。 だいたいそれで終わりです。

Homebrewでインストールしたソフトウェアの移行

Homebrewでインストールしたソフトウェアは基本的にそのままamd64版のソフトウェアがインストールされた状態です。

brew listコマンドでインストールしたパッケージ一覧を出力してメモしておき、いったんすべて消してHomebrew自身も削除、後は新規インストールの方法に従って設定していくだけです。

移行のついでに手動でインストールしていたアプリケーションをbrew install --caskを使ってインストールしました。 今回の移行をきっかけに、ほぼ手動インストールしたソフトウェアは無くなりました。

セットアップ後にbrew listのメモに従ってインストールし直しするだけです。移行のついでにもう使わないものは取捨選択することにしました。これで移行は完了です。

Homebrew以外でインストールしたソフトウェアの移行

macOSのアプリケーションはユニバーサルバイナリーなので、アーキテクチャーに合わせたほうで動いてくれます。一方、特定の用途のためにインストールしたCLIツールはアーキテクチャーごとにリリースされているため、置き換えが必要でした。ほとんどはHomebrewなどの管理ツールを使っているものの、一部理由があってほかのツールを使っていることがあるので、そこら辺も置き換えが必要です。

基本的に同様に消して入れ直すだけでしょうか。管理ツール自体のarm64移行が必要だったりもします。

SDKMANを使ってインストールしていたJavaはいったん消してSDKMAN自体も入れ直しですね*2。ざっくり作業をまとめるとこんな感じです。

//amd64版が入っている % sdk version

SDKMAN! script: 5.19.0 native: 0.7.4 (macos x86_64)

//amd64版Javaを消す % sdk uninstall java 17.0.15-tem –force

//amd64版SDKMANを消す % tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman % rm -rf ~/.sdkman … % curl -s “https://get.sdkman.io” | bash % sdk version SDKMAN! script: 5.19.0 native: 0.7.4 (macos aarch64)

% sdk install java 17.0.15-tem

インストールしたJavaがarm64版かどうかを判断してみると、x86_64、つまりamd64版ですね。 なぜでしょう?

% vi test.java

import java.util.*; public class OSInfo { public static void main(String[] args) { HashMap<String, String> map = new HashMap<String, String>(); map.put(“os.arch”,“OSアーキテクチャ”); Set<Map.Entry<String, String» entry = map.entrySet(); Iterator<Map.Entry<String, String» iterator = entry.iterator(); while(iterator.hasNext()) { Map.Entry<String, String> item = iterator.next(); String property = System.getProperty(item.getKey()); System.out.println( item.getKey() + “(” + item.getValue() + “) : " + property ); } } }

% java test.java os.arch(OSアーキテクチャ) : x86_64

おそらくこちらが関連する情報だと思います。SDKMANがデフォルトでRosetta2サポートをオンにしているのが原因だそうです。arm64版Javaは一部のモジュールがarm64対応していないものがあったり、提供元がarm64版Javaを提供していなかったりすると困るだろうということで、Rosetta2サポートがデフォルトになっているんだとか。5.10.0リリース時点ではAzul Zuluだけがarm64版Javaを提供していたようです。

実はamd64版で動くアプリ(Jmeter)もしばらくは必要なので、とりあえずこのまま使おうと思います。 いつか、この環境(JmeterとJDK)は移行しないとな。

最後に、そういった管理ツールを使わずにバイナリーインストールしたソフトウェアも若干あるので、それらもarm64移行します。これで移行はすべて完了です。

まとめ

Rosetta 2がインストールされていればネイティブで動く場合と比べて遅いものの、Apple siliconモデルでIntel CPU向けのアプリケーションが現状は動作します。しかし、Appleは技術文書で再来年のリリースでRosetta 2を廃止する計画を立てているため、完全移行の準備はしておく必要があります。詳細は次のブログ記事をごらんください。いよいよMacでIntel CPU向けのアプリケーションが完全に動かなくなります。

taisy0.com

macOS 15 SequoiaとmacOS Tahoe 26がIntel CPUに対応する最後のmacOS*3になるので、今から準備しておかないといけません。期限を迎えるまでに完全移行ができるのか、ちょっと心配しています。

*1:今年のmacOS 26は一部サポートしますが、Mac mini 2018はサポート外

*2:current versionは消せないらしいので–forceオプションをつけます

*3:古いMacは実質macOS 15 Sequoiaが最後のサポートされたOSになります。あと2年くらいはアップデートを続ければ使えるかな?

[source]