Mac業界の最新動向はもちろん、読者の皆様にいち早くお伝えしたい重要な情報、
日々の取材活動や編集作業を通して感じた雑感などを読みやすいスタイルで提供します。

Mac Fan メールマガジン

掲載日:

“Rosettaなき時代”に備えよう – Mac活用“ワンランクアップ”講座 第9回

著者: 海上忍

“Rosettaなき時代”に備えよう – Mac活用“ワンランクアップ”講座 第9回

Intel MacからAppleシリコンMacへ

言わずもがなですが、現在のMacに採用されているSoCは、ARMアーキテクチャの「Appleシリコン」。初代Apple M1およびそれを搭載するMacが登場したのは2020年、早くも5年の月日が経過しました。アーキテクチャの移行という一大事業でありながら、混乱らしい混乱もなく進行し、10月には5世代目の「M5 Mac」が発売されています。

一般的に異種プロセッサの命令セットには互換性がなく、それはIntelとARMも同様ですが、Appleは「Rosetta」という秘密兵器を再登板させることで、アーキテクチャのスムースな移行を図りました。

Rosettaは、いわば「機械語の翻訳こんにゃく」です。Objective-Cなどの言語で記述されたソースコードは、コンパイルと呼ばれる処理によりターゲットCPU向けの機械語(バイナリーコード)に変換されますが、バイナリーコードは特定CPU以外の環境では動作しません。

つまり、Intel CPU向けにコンパイルされたアプリ/バイナリーコードはIntel Macでなければ動作しないため、AppleシリコンMacで動作させたければソースコードを入手しARM向けにコンパイルし直さなければなりませんが、Rosettaはバイナリーコードを異種プロセッサ向けにその場で変換してくれるのです。

しかも、Rosettaはシステムから自動的に呼び出されるため存在を意識する必要がなく、変換後のパフォーマンスが大きく劣ることもありません。Intel Mac向けにコンパイルされたアプリでも、事前準備なしに、AppleシリコンMacで快適に利用できるのです。

アプリの情報画面には[Rosettaを使用して開く]オプションが用意されています。




Rosettaが必要な場面を確認しよう

とはいえ、Rosettaはあくまで”異種アーキテクチャのつなぎ役”。IntelからARMへの移行が完了すれば、その役目も終わりを迎えます。macOSのサポート対象からIntelプロセッサが外されれば、それは移行完了のサイン、Rosettaはシステムから姿を消します。そしてAppleはWWDC25の場において、macOS TahoeをもってIntel Macのサポートを終了すると発表。その日が近いことが確定しました。

そうと決まれば、我々エンドユーザは準備あるのみ。Appleシリコン搭載MacでIntelバイナリを使い続けていたユーザは、Rosettaに依存するアプリを特定し、それに代わるアプリを見つけておかなければなりません。

でも、どうやって…以下に挙げる3項目をできるだけ早期にチェックしましょう。Appleに方策あればユーザに対策あり、Rosettaがいつ消えてもいいようにIntelバイナリ依存を解消することをおすすめします。

アクティビティモニタでIntelバイナリをチェック

Finderで[アプリケーション]→「ユーティリティ」フォルダにある[アクティビティモニタ]を起動し、実行中のプロセス名が表示されたら[種類]ボタンをクリックしましょう。実行中のプロセスがバイナリ種ごとに並べ替えられるので、かんたんにIntelバイナリを特定できます。以下のスクリーンショットでは、Google日本語入力とAmazon Music HelperがIntelバイナリだとわかります。

アクティビティモニタで実行中のアプリのバイナリ形式を確認できます。

システム情報の「Rosettaソフトウェア」をチェック

Finderで[アプリケーション]→「ユーティリティ」フォルダにある「システム情報」を起動し、左側のメニューのソフトウェア欄にある[Rosettaソフトウェア]を選択しましょう。最近Rosettaが起動されたときの情報が表示されるので、どのアプリがRosettaに依存しているかわかります。

なお、「ターミナル」アプリのように、ARMバイナリが含まれているにもかかわらず、あえてRosetta経由でIntelバイナリを起動する例も存在します。

たとえば、以下のスクリーンショットからは、Rubyのバイナリ(/usr/local/Homebrew/Library/Homebrew/ vendor/portable-ruby/2.6.3_2/bin/ruby)がIntelバイナリであるために、ARMとIntel両方のバイナリを収録しているTerminalをIntelバイナリとして起動し直していることがわかります。RubyのバイナリをARMバイナリに入れ替えれば、この問題は解消されるはずです。

「システム情報」の「Rosettaソフトウェア」でRosettaを使用したアプリを確認できます

実行形式のファイルをチェック

macOSは、その祖となるOS・NeXTSTEP/OPENSTEP以来伝統的にMAB(Multi Architecture Binary)と呼ばれるバイナリフォーマットを採用しており、「Universal Binary」と呼ばれるようになった現在でも基本構造は変わりません。Rosettaも、このUniversal Binaryに大きく依存しています。

実行形式のファイルにどの形式のバイナリが収録されているかは、fileコマンドで確認できます。以下のコマンド実行例では、「UniBin」というファイルにIntel 64bit(x86_64)とPowerPC 32bit(ppc_7400)、Intel 32bit(i386)の3種類のバイナリが格納されていることがわかります。

Rosettaがなくなる次期macOSでは、アプリの実行ファイルに収録されているコマンドから「x86_64」が消え、ARM(arm64e)のみになることが予想されます。来年、macOSをバージョンアップしたあとに、/binや/usr/binディレクトリあたりに収録されているコマンドで試してみてください。

fileコマンドで実行形式のファイルにどの形式のバイナリが収録されているかを確認できます。

おすすめの記事

著者プロフィール

海上忍

海上忍

IT/AVコラムニスト。UNIX系OSやスマートフォンに関する連載・著作多数。テクニカルな記事を手がける一方、エントリ層向けの柔らかいコラムも好み執筆する。執筆以外では、オーディオ特化型Raspberry Pi向けLinuxディストリビューションの開発に情熱を注いでいる。2012年よりAV機器アワード「VGP」審査員。

この著者の記事一覧

×
×