Chapter 03

Rosetta 2 ってなに?

ほげさん
ほげさん
2021.08.14に更新

Rosetta とは

Rosetta とは特定のアーキテクチャのバイナリを別のアーキテクチャのバイナリに変換することで互換性を維持する Apple の技術のことです。

2004 年に Macintosh が PowerPC から Intel アーキテクチャに移行したときに使われたのが Rosetta で、2020 年に Intel アーキテクチャから Apple Silicon に移行するために発表されたのが Rosetta 2 です。

Rosetta 2 のやってくれること

ARM Mac の Finder でアプリの情報を確認すると、( Intel ) や ( Universal ) などと書いてあります。

Intel は見た通り x86_64 用のバイナリであることを、Universal は x86_64 バイナリと ARM64 バイナリの両方を含んでいることを示しています。

( Intel ) の例。

( Universal ) の例。
Rosetta を使用して開く というオプションがあります。

例えば Chrome はダウンロード時にアーキテクチャを選択できますが、右を選択したところ Universal バイナリでした。

( Apple シリコン ) と表示されるものもあります。

ARM Mac から x86_64 バイナリを使う際、もしくは Universal バイナリを Rosetta を使用して開く を有効にして使う際に、カーネルが自動的に Rosetta 2 を呼び出して x86_64 バイナリを ARM64 バイナリに変換します。

初めて Rosetta 経由でアプリを開いたときに ARM64 バイナリが作成されキャッシュされるので、それ以降は都度変換されたりはしません。
初回の変換も知らなければ気づかないくらいの時間で終わります。

また、Universal バイナリを Rosetta 経由で使う場合は、ARM64 バイナリが使われるわけではなく変換が行われるようです。

実際に使うと分かりますが、別に明示的に Rosetta を使用して開く を有効にする必要はあまり感じません。

何も考えないで ARM Mac を触っていると自然と ARM バイナリを使うことになりますが、結果的にはユーザにとってかなりシンプルです。

アプリの ARM アーキテクチャ対応状況

このサイトで確認できます。

https://isapplesiliconready.com/

ARM Mac を購入する前に、自分が普段使っているアプリが動きそうかを確認すると良いでしょう。

まとめ

  • Rosseta 2 は Apple の技術
  • x86_64 バイナリを ARM Mac で使うときに自動で ARM64 バイナリに変換をしてくれる

参考にした記事

https://news.mynavi.jp/article/osxhack-267/
https://news.mynavi.jp/article/osxhack-273/