M4 が乗った Macbook Pro を買った
もともと 2019 年に発売された、 Intel の CPU が乗っていて USB C が 4 ポートついている Macbook Pro を使っていた。
かれこれ 5 年半使ったし、そろそろ OS のサポートも切れかねないので、買い替えを検討していた。
で、そのうち M4 が乗った Macbook Air が発売される、しかも事前の予想では4Kのディスプレイを 2 枚繋いでかつ本体のディスプレイも表示できるようになるし、USB C のポートも 1 つ増えて 3 つになると噂されていた。
自分の作業環境には 4K ディスプレイが 2 枚あるので、これをうまく使えると嬉しいし、ディスプレイを2枚繋いだうえで更に USB C のポートが余っていると、Macbook Pro で Raspberry PI Pico の SDK を使ってプログラミングするときに、Pico やらデバッガやらロジアナやらをつなげてとても嬉しい。
ので、すごく期待をしていた。
先日 M4 が乗った Macbook Air の詳細が発表された。4Kのディスプレイを 2 枚繋いでかつ本体のディスプレイも表示できる部分は事前の予想通りだったものの、USB C のポートは従来の Macbook Air 同様に 2 個だった。
買い替え先の Macbook の SSD は 512GB 必要なので、Macbook Air なら 20 万円弱、 Macbook Pro なら 25 万円弱のモデルを買うことになる。
その差は 5 万円あり、悩ましいところだけど、もし Macbook Air を買ったとしたら、周辺に色々つなぐためのポートレプリケーター(USB C を HDMI やらなんやらに変換してくれる箱)を買い足す必要がある。なんなら外出時にもポートレプリケーターを持ち出さなければいけない場合も考えられる。
ノート PC は、ここ最近は 5 年強周期で買い替えている。なので、この先 5 年で、Macbook Air の USB C のポートが少ないことが原因でいくら位の周辺機器を買い足すことになるだろうかと考えると、実はそれなりに快適に運用するうえでのコストの差は 5 万円はないと思った。
あと、今、在宅勤務で使っている会社支給の仕事用の端末が M1 Macbook Pro であり、ついているポートが(Thunderbolt のバージョンが違う等の細かい違いはあれども)ほぼ同じで、仕事が終わったあとに本体だけ仕事用のものから、プライベートのものに入れ替えてケーブルを繋ぎ変えるだけで、手間少なく使えるのがイメージできた。
1 年で 200 日働く。仕事の開始時と終了時にそれぞれ繋ぎ変えを行うので、1 日に 2 回ケーブルの差し替えを行う。なので 1 年で 400 回差し替える。5 年間では 2000 回の差し替えを行う。
配線の手間が増えて、例えば毎回 1 分ずつ増えたとするとそれだけで 33 時間になる。
33 時間の可処分時間を 5 万円弱で買うと思えば、そう悪い出費ではないように思った。
そんな感じで、結局、M4 が乗った Macbook Air が発表されたので M4 が乗った Macbook Pro を買った。
Intel から Arm な Mac への移行
こんなことはもう色んな人がやってるのでわざわざ書く必要ないのかもしれない。
Mac から別の Mac へ移行するときにはファイルのコピーをサポートしてくれるツールがあって、それを使うことができる。
今回も基本はそれを使ったのだけど、CPUの種類が異なるものの間での移行なので、動かないプログラムがなにか出てくるであろうことは予想していた。
動かないものはもちろんいくつかあってそれぞれ対応したのだが、homebrew 本体とhomebrew 経由でインストールしたパッケージについても律儀にコピーされてきており、これの移行に若干工夫が必要だった。
移行後の M4 側の環境で、brew uninstall
がまともに動かなかった。これは、 brew コマンドの中で intel 向けの ruby の interpreter が動くからであるようだった。
少し悩んだけど、terminal 自体を rosetta2 を有効にして動かすと、中で動いている zsh やらそこから実行されるコマンド類も rosetta2 が有効な状態で動かすことができるようなので、rosetta2 を有効にして brew uninstall
及び brew 本体の削除を行った。
一通りのアンインストールが終わったあと terminal の rosetta2 を無効にし、arm 環境向けに再度 homebrew 本体と各種パッケージのインストールをした。
rosetta2、よく出来てるなぁって思った。