この記事を書いたあと、eightのMacを macOS 27(27.0.1)に上げたところ、Rosetta 2 が自動では戻らず、Intel 用のプログラム(Wine など)が「bad CPU type in executable」で起動しなくなりました。Apple の macOS 27 リリースノートにも「Rosetta を入れていても、macOS 27.0 へのアップグレード後は自動で復元されない」と明記されています。インストール履歴を見ると、macOS 26 の間は OS を更新するたびに Rosetta の更新も自動で入っていたのに、27.0 と 27.0.1 の後には入っていませんでした。
・直し方:ターミナルで
softwareupdate --install-rosetta --agree-to-license(Intel 用のアプリを開いたときに出る案内からでも入れられます)・確かめ方:
arch -x86_64 /usr/bin/true で何も出なければ入っています・入れ直すと、Wine や Game Porting Toolkit は macOS 27 でもこれまでどおり動きました。macOS 27 で Rosetta が使えなくなったわけではなく、「上げた直後は入っていない」という変化です。
・あわせて、Wine を初めて動かしたときに「macOS 28 では開けなくなるコンポーネントが含まれています」という通知が出るようになりました。
・macOS 27 で Game Porting Toolkit や Wine がどこまで動くかは macOS 27でGame Porting Toolkitは動くのか にまとめています。
MacでSteamのゲームを遊んでいる人も、Unityや古いJavaで開発している人も、どこかでRosetta 2のお世話になっています。そのRosetta 2が、ついに終わりに向かって動き出しました😳
先に結論を書きます。いま(2026年9月)はまだ全部動きます。Appleのサポート記事では、Rosettaがふつうに使えるのはmacOS 27までで、macOS 28(2027年秋の見込み)からは「更新の止まった古いゲーム」向けだけに絞られます。ただしApple自身のページ同士で書いてあることが食い違っていて、どれを信じるかで猶予が1年変わります。
そこで今回は、「いつ止まるか」を一次情報で確かめたうえで、自分のMacでRosettaに頼っているものを全部洗い出し、何から手を付ければいいかを優先度つきでまとめました。数えてみたら、見かけの数字と本当に困る数がまるで違いました。
この記事は下調べが2つ、実験が3つあります。
先に実測した環境を書いておきます。★この記事の数字はこのMacに入っているものを数えた結果です。
| 項目 | 内容 |
|---|---|
| パソコン | Apple M4 / メモリ32GB |
| OS | macOS 26.6.2(25G83)。⚠macOS 27 はアップデートとして届いているが、入れていない |
| Rosetta 2 | インストール済み(oahd が動作中) |
| 調べたもの | アプリ476本/Homebrew・pyenv・Java・Unity(6000.4.5f1 と 6000.6.0f1)・Unreal Engine 5.7・Steam・Whisky・Wineskin の中にある実行ファイルとライブラリ |
| 調べ方 | ファイル先頭の Mach-O ヘッダを直接読む自作スクリプト(Python 3.12.5)+ lipo / vmmap / arch |
用語集
| 用語 | 平たく言うと | なぜ効くのか |
|---|---|---|
| Rosetta 2 | Intel Mac 向けのプログラムを、Apple silicon の上で動くようにその場で翻訳するしくみ | これが無くなると、Intel専用のものは起動すらしなくなる |
| arm64 / x86_64 | CPUの「言葉」の種類。Apple silicon は arm64、Intel は x86_64 | プログラムはどちらかの言葉で書かれている。両方入りもある |
| ユニバーサル | arm64 と x86_64 の両方を1ファイルに入れたプログラム | Macが自分に合うほうを選ぶので、Rosettaが無くても動く |
| Mach-O | Macの実行ファイルやライブラリの形式 | 先頭の数バイトを読むと、どの言葉で書かれているかが分かる |
| 実行ファイル | それ自体を起動するプログラム | ★Rosettaが無くなって本当に困るのはこれ |
| ライブラリ(dylib) | ほかのプログラムに読み込まれて使われる部品(p979で詳しく書きました) | 読み込む側が arm64 だと、x86_64 の部品は最初から読めない |
| プロセス | いま動いている1本のプログラム | ★Rosettaはプロセスごとに翻訳する。1本の中で混ぜられない |
| 互換レイヤー(Wine) | WindowsのゲームをWindowsなしで動かすしくみ。Whisky・CrossOver・Porting Kit の中身 | ★Macで配られているWineはほぼすべて x86_64 |
【下調べ】いつ何が止まるのか ── Appleのページ同士が食い違っていた
まず一次情報です。Appleが出している3つのページを読み比べました。
| ページ | 日付 | 書いてあること |
|---|---|---|
| サポート記事(Rosettaのインストール方法) | 2026-09-14 更新 | macOS 27以前なら使える。macOS 28からは、Intelベースのフレームワークに頼る更新の止まった一部の古いゲーム向けだけになる |
| 開発者ニュース「Rosettaサポートの変更」 | 2026-09-01 | macOS 26.4以降、Rosettaに頼るアプリを起動すると通知が出ることがある。macOS 27が最後のリリースで、その後はIntel専用アプリは動かなくなる。古いゲーム向けの機能は残す |
| 開発者ニュース「App Store の受付開始」 | 2026-09-09 | ⚠「macOS 26 が Intel Mac と Rosetta に対応する最後で、macOS 27 は Apple silicon 専用」 |
上の2つは同じことを言っています。27までは全面的に使えて、28からはゲームだけです。問題は3つ目で、ここだけ「Rosettaは26まで」と読めます。Intel Mac の対応終了(これは26で正しい)とRosettaを1文にまとめてしまった書き方に見えますが、Appleは訂正を出していません。
この記事の立場
いちばん具体的で、いちばん新しく更新されたサポート記事(9月14日)の「27まで全面・28からゲームだけ」を事実として扱います。ただし、3つ目のページがある以上、「27でも一部が止まる」可能性はゼロではありません。eightはmacOS 27をまだ入れていないので、27で実際にどうなるかは確かめていません。
もうひとつ、「ゲーム向けだけ残す」の中身はまだ公表されていません。どのゲームが対象なのか、判定は誰がどうするのか、そしてWineのような互換レイヤーが「ゲーム」として扱われるのか。ここは現時点で分からないことです。推測では書かず、分からないものとして扱います。
【下調べ・続き】Rosettaは「プロセス単位」で翻訳している
洗い出しの前に、何が止まって何が止まらないのかを決めておく必要があります。これを取り違えると、数える意味がなくなるからです。そこで、同じ小さなプログラムを3通りに作って確かめました。
#include <stdio.h>
#include <sys/sysctl.h>
/* 自分がRosettaで翻訳されて動いているかを自己申告する */
int main(void) {
int t = 0; size_t n = sizeof t;
sysctlbyname("sysctl.proc_translated", &t, &n, NULL, 0);
printf("proc_translated=%d\n", t);
return 0;
}
clang -arch x86_64 hello.c -o hello_x86_64
clang -arch arm64 hello.c -o hello_arm64
clang -arch x86_64 -arch arm64 hello.c -o hello_universal
★ポイントは arch -arm64 です。これを付けると「arm64 で起動しろ」と強制できるので、Rosettaを消さずに「Rosettaが無い状態」を再現できます。
| 作ったもの | ふつうに起動 | arch -arm64で起動(=Rosettaが無い状態) |
|---|---|---|
| x86_64 だけ | 翻訳中(1) | Bad CPU type in executable |
| arm64 だけ | ネイティブ(0) | 動く |
| ユニバーサル | ネイティブ(0) | 動く |
Rosettaが無くなったときに出るエラーは、この Bad CPU type in executable です。見覚えがあったら、それが原因です。
次に、ライブラリを確かめました。x86_64 だけのライブラリを作り、同じプログラムからネイティブとRosettaの両方で読み込みます。
[ネイティブ] 読み込めない: ... mach-o file, but is an incompatible architecture
(have 'x86_64', need 'arm64e' or 'arm64e.v1' or 'arm64' or 'arm64')
[翻訳中] 読み込めた answer()=42
ここから決まる数え方
ネイティブのプロセスは x86_64 の部品をそもそも読み込めないので、ユニバーサルアプリの中にIntel専用のライブラリが混ざっていても、ふだんは使われていません。Rosettaが無くなって本当に困るのは、Intel専用の「実行ファイル」を起動するときです。数えるならそこを数えます。
もうひとつ分かったことがあります。ユニバーサルでも arch -x86_64 で起動すると、翻訳中(1)になりました。Mac版Steamの回で、ネイティブ対応のゲームなのにSteamから起動するとRosettaで動いてしまったのは、起動する側がx86_64を指定していると考えると辻褄が合います(Steamの中身までは確かめていません)。
【実験1】自分のMacでRosettaを通っているものを探す ── いま動いているものを見ても分からない
まず、いちばん手軽な方法から試しました。いま動いているプロセスを全部見て、翻訳中のものを数えます。アクティビティモニタの「種類」列と同じことを、コマンドでやっています。
vmmap <PID> | grep "Code Type"
# ARM64 → ネイティブ
# X86-64 (translated) → Rosettaで翻訳中
| 見たプロセス | ネイティブ | 翻訳中 | 読めなかった |
|---|---|---|---|
| 547 | 536 | 0 | 11 |
翻訳中は0件です。これだけ見ると「このMacはRosettaを使っていない」と言えそうですが、⚠違います。RosettaはIntel専用のものを起動したときにだけ現れるので、いま動いていないものは見えません。
次に、macOS自身の一覧を見ました。「このMacについて」→「詳細情報」→「システムレポート」→「アプリケーション」の「種類」列です。コマンドなら次の1行で出ます。
system_profiler SPApplicationsDataType -json
# arch_kind: arch_arm_i64 → ユニバーサル
# arch_arm → Apple silicon だけ
# arch_i64 → Intel だけ ★ここが止まる
| 種類 | 本数 |
|---|---|
| ユニバーサル | 395 |
| Apple silicon だけ | 16 |
| Intel だけ | 11 |
| iPhone/iPad用 | 20 |
| その他 | 34 |
Intelだけの11本は、Visual Studio(for Mac)とその更新ツール、App Storeで入れた画像ツール、Porting KitのWineskin、Unreal Engine 5.7に付いてくる補助アプリ2つ、古いUE4の連携サービス、そしてUnityの UnityPlayer.app 4つでした。
⚠この Unity の4つは、よく見るとこのMacで動かすものではありません。macos_x64_player_... という名前のとおり、Intel Mac 向けにゲームを書き出すときの型紙で、隣には arm64 版とユニバーサル版の型紙も並んでいます。一覧の「Intelだけ」には、こういう使わないものも混ざります。
476本中11本なら大したことはない、と言いたいところですが、⚠この一覧は .app しか数えていません。コマンドやライブラリ、開発ツールの中身は出てこないので、本当に困るものがここから漏れていました。
【続き】.app以外まで数える ── 数字をそのまま読むと間違える
そこで、ファイルの先頭にある Mach-O ヘッダを直接読むスクリプトを書いて、開発ツールやゲームの置き場所を丸ごと数えました。lipo を1ファイルずつ呼ぶと遅すぎるので、先頭の数バイトだけを自分で読んでいます。
def cpus(path):
with open(path, "rb") as f:
head = f.read(8)
magic_be = struct.unpack(">I", head[:4])[0]
if magic_be in (0xCAFEBABE, 0xCAFEBABF): # ユニバーサル
n = struct.unpack(">I", head[4:8])[0]
if not 1 <= n <= 8: # ⚠Javaの.classも同じ4バイト
return None
... # 各アーキのCPU番号を集める
magic_le = struct.unpack("<I", head[:4])[0]
if magic_le in (0xFEEDFACF, 0xFEEDFACE): # 1アーキだけ
return {struct.unpack("<i", head[4:8])[0] & 0xFFFFFFFF}
# arm64(0x0100000C) を含む → Rosettaが無くても動く
# x86_64(0x01000007) だけ → Rosettaが無いと動かない
⚠つまずきがひとつありました。ユニバーサルの目印 0xCAFEBABE は、Javaの .class ファイルと同じ4バイトです。そのままだと Java の部品を大量に Mach-O と誤認するので、「中のアーキ数が1〜8で、CPU番号が知っているもの」だけを数えるようにしました。
結果です。
| 場所 | Mach-O | Intel専用 | 割合 |
|---|---|---|---|
| Homebrew(/opt/homebrew) | 2,890 | 7 | 0.2% |
| /usr/local(Intel版Homebrewの置き場) | 20 | 0 | 0% |
| pyenv の Python | 1,463 | 3 | 0.2% |
| Java | 171 | 98 | 57.3% |
| Unity 6000.6.0f1 | 949 | 74 | 7.8% |
| Unreal Engine 5.7 | 14,350 | 3,006 | 20.9% |
| Steam(本体とゲーム) | 125 | 10 | 8.0% |
| Whisky の Wine | 194 | 194 | 100% |
| Wineskin(Porting Kit) | 549 | 548 | 99.8% |
Unreal Engine の 3,006個が目を引きます。これが全部止まるなら大ごとです。ただ、前の章で決めたとおり、本当に困るのは実行ファイルだけです。そこで、見つけたIntel専用のファイルを種類ごとに分けて数え直しました。種類もMach-Oヘッダの中に書いてあります。
| 場所 | Intel専用 | オブジェクト(.o) | ライブラリ | 実行ファイル | うちarm64版が無い |
|---|---|---|---|---|---|
| Homebrew | 7 | 0 | 6 | 1 | 0(テスト用の見本) |
| pyenv の Python | 3 | 0 | 3 | 0 | 0 |
| Java | 98 | 0 | 43 | 55 | 55 |
| Unity 6000.6.0f1 | 74 | 0 | 40 | 27 | 17 |
| Unreal Engine | 3,006 | 2,872 | 79 | 54 | 49 |
| Steam | 10 | 0 | 9 | 1 | 1 |
| Wineskin | 548 | 0 | 517 | 31 | 31 |
3,006個のうち2,872個はオブジェクトファイルでした。組み立て前の部品で、実行されることはありません。本当に困る候補は49個、全体の1.6%です。Homebrew の7個も、Homebrew自身のテスト用の見本ファイルでした。
★「Intel専用のファイルの数」を数えると、困り具合を60倍に見積もってしまいます。数えるべきは「Intel専用の実行ファイル」で、しかも「同じ場所にarm64版が置いてないもの」です。
【続き・切り分け】本当に困るものは何だったのか
残った実行ファイルを1つずつ見ていくと、傾向がはっきりしました。本体はネイティブなのに、付属の道具だけIntel専用というものが多いのです。
| どこ | Intel専用だったもの | 何に使うか | 困る場面 |
|---|---|---|---|
| Java | Temurin 8(JDK 1.8)が丸ごと | Java 8 で動かすもの全般 | Java 8 に固定しているプロジェクト |
| Unity 6000.6.0f1 (本体は arm64) | Helpers/LightBaker・JobProcess | ライトの焼き込み | ★従来の2方式で焼くとき(次の章で実際に動かしました) |
| Android NDK の一部 | Android向けのビルド | Androidアプリを書き出すとき(★同梱のJDKは 6.6 で arm64 になった) | |
| Mono の道具 | スクリプト関連の補助 | —(使われる場面は未確認) | |
| Unreal Engine 5.7 | libimobiledevice(idevice... 22個) | iPhone実機への転送・デバッグ | iOS実機で動かすとき |
| svn・UnrealAndroidFileTool・Python3(intel64版) | バージョン管理・Android転送 | それぞれの機能を使うとき | |
| VMware Fusion | ovftool・vctl など | 仮想マシンの書き出し・コンテナ | コマンドで操作するとき(本体の起動は別) |
| Steam | hardwareupdater | コントローラなどの更新 | —(本体 steam_osx はユニバーサル) |
| Wine(Whisky・Wineskin) | ほぼ全部 | Windowsゲームを動かす | ★ゲームを起動するたび |
【実験2・Unity 6.6】ライトの焼き込みで、本当にRosettaは動くのか
「中に入っている」と「実際に動く」は別です。そこで Unity で実際に焼き込みを走らせました。検証の途中で Unity が 6000.4.5f1 から 6000.6.0f1 に更新されたので、まず2つのバージョンの中身を比べておきます。
| 6000.4.5f1 | 6000.6.0f1 | |
|---|---|---|
| Intel専用のファイル | 150 | 74 |
| arm64版の無い実行ファイル | 52 | 17 |
| Android用に同梱された OpenJDK | x86_64 | arm64 |
UnityRosettaHelper.app | あり(x86_64) | 無くなった |
Helpers/LightBaker・JobProcess | x86_64 | x86_64 のまま |
★Unity はいままさに移行の途中で、2つのバージョンの間にIntel専用の実行ファイルが3分の1に減っています。それでも、焼き込みの2つはまだ残っていました。
検証用に空のプロジェクトを作り、光源1つと箱・床だけのシーンをエディタのスクリプトで自動的に焼き込んで閉じるようにしました。その間に起動したプロセスを記録し、あわせてmacOSのログでRosettaの動きを見ます。
var s = new LightingSettings { lightmapper = LightingSettings.Lightmapper.ProgressiveCPU,
lightmapResolution = 10 };
Lightmapping.lightingSettings = s;
Lightmapping.bakeCompleted += OnDone; // 終わったら次の方式へ、全部終わったら Exit
Lightmapping.BakeAsync();
⚠画面なしのバッチモード(-batchmode)は、Unity Personal では起動しませんでした('com.unity.editor.headless' was not found)。画面ありで -executeMethod を使っています。
焼き込みの方式を3つ試した結果です。
| 焼き込みの方式 | 焼いていたプロセス | Rosetta | 結果 |
|---|---|---|---|
| Progressive CPU | LightBaker(x86_64) | 使う | 成功(6.6秒) |
| Progressive GPU | LightBaker(x86_64) | 使う | 成功(3.4秒) |
| Unity Compute GPU(新しい方式) | エディタのワーカープロセス(arm64) | 焼き込み中は使わない | 成功(35.9秒) |
Unity 自身のログにも、はっきり出ていました。
Launching external process: .../Unity.app/Contents/Helpers/JobProcess
[BakePipeline::BakeStage] Background thread started. Calling LightBaker.
Launching external process: .../Unity.app/Contents/Helpers/LightBaker
[BakePipeline::BakeStage] LightBaker bake took 6574.09ms and succeeded.
そして macOS のログでは、LightBaker が起動した直後に、Rosetta の翻訳係 oahd-helper が次の番号で起動していました(LightBaker 65847 → oahd-helper 65848)。Intel専用のものが、Rosettaを通って動いた証拠です。
★Unity 6.6 の答え
従来の Progressive CPU と Progressive GPU は、どちらも Intel専用の LightBaker で焼いていました。Rosettaが無くなると、この2つは起動できません。いっぽう、Unity 6.6 がログで勧めてくる新しい Unity Compute GPU は、arm64 のワーカープロセスで焼いていて、焼き込み中にRosettaは1回も動きませんでした。
ただし、2つ注意があります。
- ⚠新しい方式でも
JobProcess(x86_64)は起動しました。焼き込みの下準備で使われていて、ここはまだ Rosetta 頼みです - ⚠新しい方式は
com.unity.render-pipelines.coreパッケージが必要です。入っていない空のプロジェクトではLight baking failed with error code 9.で失敗しました
Unity 6.6 は、スクリプトで Progressive CPU を指定すると「非推奨なので Unity Compute GPU を使え」という警告を出します。移行先はもう用意されている、ということです。
初回だけ5分半待たされた
もうひとつ、はっきり差が出たところがあります。同じ焼き込みを2回やると、1回目だけ極端に遅かったのです。
| 下準備(Layout Systems) | Rosettaの翻訳係の起動 | Rosettaの記録 | |
|---|---|---|---|
| 1回目 | 335.58秒(処理は1.20秒) | 7回 | 11回 |
| 2回目 | 7.05秒 | 0回 | 7回 |
| 新しい方式 | — | 0回 | 1回(JobProcessの起動だけ) |
2回目は、Intel専用の道具が同じように起動しているのに(記録は7回)、翻訳係は1回も起動していません。Rosettaは一度翻訳した結果を保存しておき、次からはそれを使います。1回目の待ちがすべて翻訳のせいとは言い切れません(プロジェクトを初めて開いたときの準備も重なっています)が、「Intel専用の道具は、最初の1回がとても遅いことがある」のは確かです。
⚠記録でひとつ、つまずきました。起動した瞬間のプロセスを vmmap で見ると、LightBaker が「ARM64」と出たのです。自作の x86_64 のプログラムで確かめると、起動した瞬間は ARM64、0.02秒後には X86-64 (translated) でした。Rosettaが翻訳を始める前の一瞬を見ていたわけです。起動直後の見た目は信じないほうがいいです。
【実験3】macOS 26.6 の警告は、本当に出るのか
Appleは「macOS 26.4以降、Rosettaに頼るアプリを起動すると通知が出ることがある」と書いています。「ことがある」なので、実際に試しました。
| 開いたもの | 動き方 | 通知 |
|---|---|---|
| 自作のIntel専用アプリ(署名なし・画面なし) | 翻訳された(oahd-helper が起動) | 記録は見当たらなかった |
| App Storeで入れたIntel専用アプリ | Code Type: X86-64 (translated) | 出た(画面で確認) |
ふつうに配布されているアプリでは、通知は出ました。つまり、ここ最近「このアプリは今後動かなくなります」という通知を見た覚えがあれば、それが自分のMacのRosetta依存の一覧です😅
★もうひとつ、ログを見ていて気づいたことがあります。どちらの場合も、起動した瞬間に ecosystemanalyticsd: Performing rosetta analysis という行が出ていました。macOSは、Rosettaで動いたアプリを記録しています。Appleが「影響するアプリの数」を把握できているのは、こういう仕組みがあるからでしょう。
【ゲーム側】Steam と互換レイヤーはどうなるのか
Macでゲームを遊ぶ人にとって、影響の出方は2通りに分かれます。
Mac版のゲームをSteamで遊んでいる場合
- Steam本体(
steam_osx)はユニバーサルでした。2025年6月のベータから Apple silicon ネイティブになっています - このMacに入っている Mac版のゲーム(Endless Sky・Battle for Wesnoth)の本体もユニバーサル
- ⚠ただしp971で測ったとおり、Steamから起動するとネイティブのゲームでもRosettaで動くことがあります。Rosettaが無くなったときに「arm64で起動し直してくれる」のか「起動できない」のかは、macOS 28が出るまで分かりません
- ★確かめ方と逃げ道はp986に書きました。
.appを直接開くとネイティブで動きます
Windowsのゲームを互換レイヤーで遊んでいる場合
こちらは深刻です。Whisky の Wine は194個中194個、Wineskin は549個中548個が x86_64でした。Macで配られてきた無料のWineは、ほぼすべてRosettaの上で動いています。
- Whisky は開発が終わっています(p956)。Apple silicon 版が出る見込みはありません。⚠2026年9月時点では、初回に取りに行くWine一式の配布も止まっています。入れてある人は、Wine一式(Libraries フォルダ)を消さないでください(Whiskyの使い方とインストール手順)
- Porting Kit(p989)は Wineskin を使うので、同じく x86_64 です
- 有料の CrossOver 27 は ARM64 ネイティブ版を試験中です。報道では2027年初めの予定で、Intel Mac と32bitは切り捨て。いまのプレビューには「D3DMetal が無い」「ゲームランチャーが動かない」「既存のボトルを ARM64 へ移せない」という制限があります
- ⚠Appleの「古いゲーム向けにRosettaを残す」に、Wineのような互換レイヤーが含まれるかは公表されていません
互換レイヤーで遊んでいる人がいまやるべきこと
CrossOver 27 のプレビューで「既存のボトルを移せない」とされている以上、乗り換えるときは作り直しになる前提で考えたほうが安全です。いまのうちにセーブデータと設定だけを退避しておきましょう。22GBのボトルでも、持ち出すべきものは数MBでした(p985)。
【開発環境側】Homebrew・Python・Node・Java を確かめる
開発ツールは、自分でコマンドを叩いて確かめられるのが救いです。このMacの結果と、確かめるコマンドを並べます。
| 道具 | このMac | 確かめ方 |
|---|---|---|
| Homebrew | /opt/homebrew(arm64)。/usr/local に Intel版は無し | brew --prefix が /usr/local なら Intel版 |
| Python(pyenv) | 3.10・3.11・3.12 すべて arm64 | lipo -archs ~/.pyenv/versions/*/bin/python3.* |
| Node | 26.0.0 arm64 | lipo -archs "$(command -v node)" |
| Docker | arm64 | 同上 |
| git・clang・ruby | ユニバーサル(macOS付属) | — |
| Java | 21 は arm64、8 は x86_64 | /usr/libexec/java_home -V |
Java だけは、macOS がアーキまで表示してくれます。
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
21.0.2 (arm64) "Eclipse Adoptium" - "OpenJDK 21.0.2" ...
1.8.0_302 (x86_64) "Eclipse Temurin" - "Eclipse Temurin 8" ...
Java 8 を「Rosettaが無い状態」で起動すると、予想どおり止まりました。
$ arch -arm64 /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/bin/java -version
arch: posix_spawnp: .../temurin-8.jdk/Contents/Home/bin/java: Bad CPU type in executable
ただし、名前だけで java を呼ぶと 21(arm64)が選ばれていたので、困るのは Java 8 に固定しているプロジェクトだけです。
では置き換えられるのか。配布元のAPIに問い合わせると、配布元によって答えが違いました。
| 配布元 | Java 8 の macOS arm64 版 |
|---|---|
| Eclipse Temurin(Adoptium) | 無い(x64 だけ。最新は 1.8.0_504) |
| Azul Zulu | ある(8.0.504) |
★「Java 8 だから置き換えられない」ではなく、「Temurin 8 だから置き換えられない」でした。配布元を変えれば済みます。
【整理】いまやること ── 優先度つき一覧
ここまでの結果を、手を付ける順番に並べました。
| 優先 | こんな人 | やること | 期限の目安 |
|---|---|---|---|
| 高 | Whisky・Porting Kit で Windows ゲームを遊んでいる | セーブと設定を退避(p985)。CrossOver 27 や、ゲームのMac版があるかを調べておく | macOS 28 に上げる前 |
| 高 | Java 8 に固定したプロジェクトがある | arm64 版のある配布元(Azul Zulu など)へ入れ替える | いつでも(すぐ済む) |
| 中 | Unity で Progressive CPU / GPU の焼き込みを使っている | Unity Compute GPU に切り替える(com.unity.render-pipelines.core が要る)。下準備の JobProcess はまだ残るので、Unity の更新も追う | macOS 28 に上げる前 |
| 中 | Unity / UE で Android・iOS 実機向けに書き出す | Unity は 6.6 で Android用JDKが arm64 になったが、NDKの一部が残る。UE は iPhone 実機用の道具が Intel専用。エンジンの更新を追う | macOS 28 に上げる前 |
| 中 | 「動かなくなる」通知が出たアプリがある | 最新版に更新。開発が止まっているなら代わりを探す | macOS 28 に上げる前 |
| 低 | Mac版のゲームを Steam で遊んでいる | Steam本体とゲームはユニバーサル。気になるなら .app を直接開く(p986) | macOS 28 が出てから確かめる |
| 低 | Homebrew・Python・Node をふつうに使っている | このMacでは全部 arm64 だった。/usr/local に Intel版が残っていないかだけ見る | — |
★いちばん確実な逃げ道は、macOS 27 に留まることです。どのページの書き方でも、27 で Rosetta が全部消えるとはされていません(9月9日の開発者ニュースを除く)。急いで 28 に上げなければ、少なくとも2027年秋までは今までどおり動きます。
【手順】自分のMacで確かめる
1. .app を一覧にする
system_profiler SPApplicationsDataType -json \
| python3 -c 'import json,sys
d=json.load(sys.stdin)["SPApplicationsDataType"]
for a in d:
if a.get("arch_kind")=="arch_i64": print(a["_name"], "-", a["path"])'
2. 気になるファイルのアーキを見る
lipo -archs /path/to/file # ★1回に1ファイルだけ(複数渡すとエラー)
# arm64 / arm64e が入っていれば大丈夫。x86_64 だけなら止まる
3. Rosettaが無い状態を再現する
arch -arm64 /path/to/command --version
# Bad CPU type in executable と出たら、Rosettaが無いと動かない
⚠画面のあるアプリにはやらないでください。起動してしまうと、放置していたアプリほど自動更新が走ることがあります。コマンドの道具で試すのが安全です。
4. いま翻訳中のプロセスを見る
for p in $(pgrep -x "アプリ名"); do vmmap "$p" | grep "Code Type"; done
# X86-64 (translated) なら Rosetta で動いている
5. フォルダを丸ごと数える
開発ツールやゲームの置き場所をまとめて調べるなら、この記事で使ったやり方がそのまま使えます。要点は3つです。
- ファイル先頭の Mach-O ヘッダでアーキを判定する(
0xCAFEBABEは Java の.classと区別する) - 同じヘッダの filetype を読んで、実行ファイル(2)だけを数える(オブジェクトファイル(1)やライブラリ(6)は後回し)
- 同じ場所に arm64 版が並んでいないかを見る(
x86_64→arm64と名前を読み替えて探す)
つまずき集
| 症状 | 原因と対処 |
|---|---|
| ★★Bad CPU type in executable で起動しない | Intel専用のプログラムを、Rosettaが無い状態で起動した。Apple silicon 版に入れ替えるしかない |
| ★アクティビティモニタで「Intel」が1つも無いのに、通知が出た | Rosettaは起動したときだけ現れる。いま動いていないものは見えない。システムレポートの「種類」列で探す |
| ★「Intel専用のファイルが3,000個」と出て青ざめた | ほとんどがオブジェクトファイル(.o)だった。実行ファイルだけを数え直す |
| ネイティブのアプリの中に x86_64 のライブラリが入っている | ネイティブのプロセスはそもそも読み込めないので、ふだんは使われていない。Rosettaで起動されたときだけ使われる |
| Mach-O を数えたら、Java の中身が大量に引っかかった | 0xCAFEBABE は Java の .class と同じ。アーキ数(1〜8)とCPU番号で弾く |
lipo -archs a b がエラーになる | -archs は1ファイルずつしか受け付けない |
zsh で log show を打ったら「too many arguments」 | ⚠zsh には log という同名の組み込みコマンドがある。/usr/bin/log show とフルパスで呼ぶ |
★Intel専用のはずのプロセスが vmmap で「ARM64」と出る | 起動した瞬間を見ている。0.02秒後には X86-64 (translated) になる。少し待ってから読む |
Unity で Unity Compute GPU の焼き込みが error code 9 で失敗 | com.unity.render-pipelines.core パッケージが入っていない(ログに Failed to find LightBakerWorkerProcessImporter...) |
| Intel専用の道具を初めて使ったら、何分も固まった | Rosetta が初回だけ翻訳している可能性がある。2回目から速くなる |
| Unity をバッチモードで起動したら終了コード198 | Unity Personal では画面なしのバッチモードが使えない(com.unity.editor.headless が無い) |
| Java 8 の arm64 版が見つからない | Temurin には無い。Azul Zulu などほかの配布元にはある |
まとめ
- ★いま(2026年9月)はまだ全部動く。Appleのサポート記事では、Rosettaが全面的に使えるのはmacOS 27まで、macOS 28(2027年秋の見込み)からは更新の止まった古いゲーム向けだけ
- ⚠★Apple自身のページが食い違っている。9月9日の開発者ニュースだけは「Rosettaは26まで」と読める。訂正は出ていない
- ⚠「ゲーム向けに残す」の中身は未公表。Wineのような互換レイヤーが含まれるかは分からない
- ★★Rosettaはプロセス単位。ネイティブのプロセスは x86_64 のライブラリを読み込めない(
incompatible architecture)。だから本当に困るのはIntel専用の実行ファイルだけ - Rosettaが無いときのエラーは Bad CPU type in executable。
arch -arm64を付けると、Rosettaを消さずに再現できる - ★いま動いているプロセスを見ても分からない。547個中、翻訳中は0件だった
- ⚠システム情報の一覧は.appしか数えない。476本中Intelだけは11本だったが、開発ツールの中身はここに出てこない。しかもその11本には、Intel Mac向けに書き出すための型紙のような、このMacでは動かさないものも混ざる
- ★★ファイルの数で数えると60倍に見積もる。Unreal Engine の「Intel専用3,006個」のうち2,872個はオブジェクトファイルで、arm64版の無い実行ファイルは49個(1.6%)だった
- 本当に困るのは、本体はネイティブなのに付属の道具だけIntel専用というもの。Unity の焼き込み、UE の iPhone 実機用の道具、そして Java 8
- ★★Unity 6.6 で焼き込みを実際に動かすと、Progressive CPU と GPU はどちらも Intel専用の LightBaker で焼いていた(Rosettaの翻訳係の起動も確認)。新しい Unity Compute GPU は arm64 のワーカーで焼き、焼き込み中のRosettaは0回。ただし下準備の JobProcess は x86_64 のまま
- ★Unity は 6.4 → 6.6 で Intel専用の実行ファイルが 52 → 17。Android用JDKは arm64 になった。いままさに移行の途中
- ★Intel専用の道具は最初の1回が極端に遅いことがある(下準備が 335秒 → 2回目 7秒)。2回目は Rosetta の翻訳係が起動せず、翻訳済みの結果が使われていた
- ★Wine はほぼ全部 x86_64(Whisky 194/194、Wineskin 548/549)。CrossOver 27 の ARM64 版は2027年初めの予定だが、既存のボトルは移せないとされている
- ★Java 8 は「置き換えられない」ではなく「Temurin 8 だから置き換えられない」だった。Azul Zulu には arm64 版がある
- macOS 26.6 では、App Storeで入れたIntel専用アプリを開くと通知が出た。そしてmacOSはRosettaで動いたアプリをログに記録している
終わりが近いと聞くと全部が止まるように思えますが、数えてみると、本当に困るものはずっと少なく、しかもどこにあるかをコマンドで特定できました。いちばん怖いのは、ふだん見えない場所にある付属の道具が、ある日いきなり起動しなくなることです。いまのうちに一度、自分のMacを数えておくのがおすすめです😊
それでは、今回はここまで。最後までありがとうございました😊
参考サイト
- If you need to install Rosetta on your Mac(Apple サポート。2026-09-14 更新。「macOS 27まで」「macOS 28から古いゲーム向けだけ」の記述)
- Upcoming changes to Rosetta support for Intel-based macOS apps(Apple Developer ニュース。2026-09-01。macOS 26.4 の通知と、macOS 27が最後という記述)
- App Store submissions now open for the latest OS releases(Apple Developer ニュース。2026-09-09。⚠「macOS 26がRosettaの最後」と読める記述)
- Apple’s Own Pages Disagree on When Rosetta Support Actually Ends(The Mac Observer。3つのページの食い違いを指摘)
- Announcing the Transition of Apple silicon Unity Editor from Rosetta 2(Unity Discussions。Unityスタッフによる告知。残っているのは主にCPUライトマッパーという説明はこのスレッド。★この記事の実測では Progressive GPU も Intel専用の LightBaker を通っていた)
- First Apple Silicon-native CrossOver build in testing as Rosetta's end nears(AppleInsider。CrossOver 27 プレビューの制限と時期)
- Valve's Steam gaming client is finally getting an Apple Silicon native upgrade(AppleInsider。Steam本体のネイティブ化)
- Adoptium API / Azul Metadata API(Java 8 の arm64 版の有無を問い合わせた先)