S2Arm — SwitchゲームをARM64とMetalへ変換しApple環境で動かすツール
jhaizhou-ops/S2Arm
★ 2,765 ・ C# ・ Apache-2.0
概要
「S2Arm」は、ユーザー自身が所有するNintendo Switch向けゲームのバイナリを、iPhoneやiPad、MacといったAppleデバイス上でネイティブに動作させるためのオープンソース変換・実行ツールです。主にC#などで開発されており、ライセンスにはApache-2.0が採用されています。
従来のゲーム環境再現ではCPUやGPUの挙動をランタイム上でエミュレートする方式が一般的ですが、S2Armはゲーム内のARM64コードをビルド時にネイティブコードへと書き換え、グラフィックスAPIの呼び出しを直接Metalへと変換するアプローチを採用しています。これにより、エミュレータ特有のオーバーヘッドを大幅に削減し、低発熱かつバッテリー消費を抑えた高速な実行を目指しています。
自身で吸い出したゲーム資産を、使い慣れたApple Silicon搭載デバイスやiOS端末でプレイしたい開発者やパワーユーザーに適したツールです。
主な特徴
-
エミュレータを介さないネイティブ実行
実行時にCPUエミュレータを挟むのではなく、ビルド時にゲームのARM64コードを対象デバイスのプロセッサ向けに書き換えて直接実行します。グラフィックス描画もMetalへダイレクトに変換されるため、高速な動作とバッテリー効率の両立が図られています。 -
1つのアプリ内でライブラリ全体を管理
インポートした複数のゲームは単一のS2Armアプリ内にまとめられます。ゲームごとに追加のアプリをインストールする必要がないため、Appleの無料開発者アカウントなどで制限されるアプリの署名枠(App slot)を1枠しか消費しません。 -
MacおよびWindows対応のGUIランチャー
環境構築やゲームのインポート、ビルド、インストール作業を数クリックで行えるグラフィカルランチャーが提供されています。初期セットアップから進行状況の可視化、キューによる複数タイトルの連続ビルドまで、コマンドラインを使わずに操作可能です。 -
AIアシスタント連携インターフェース(s2armctl)
ランチャーにはs2armctlと呼ばれる制御用インターフェースが統合されています。CLI操作が可能なAIアシスタントに指示を出すことで、ビルドや端末へのインストール、エラー時の診断ログ収集や問題解決手順の自動実行を任せることができます。 -
コミュニティ製ディープポートとの統合
一部のゲーム向けにコミュニティが独自に開発した深い移植プロジェクト(Downstream deep ports)を認識する仕組みを備えています。標準の変換ルートだけでなく、専用の最適化ルートを選択してビルドすることが可能です。
使い方
S2Armを利用してゲームを端末にインストールする基本的な手順は以下の通りです。なお、ゲームデータ本体および暗号化キーはユーザー自身が用意する必要があります。
1. ランチャーのダウンロードと環境設定
公式サイトまたはGitHubリリースページからMac用またはWindows用のランチャーを入手して起動します。Mac環境からiPhone向けにビルドする場合は、App StoreからXcodeをインストールし、Apple IDでサインインしておく必要があります(ランチャー画面上で案内されます)。
2. キーとゲームファイルのインポート
ランチャーの指示に従い、所有しているキーファイルとゲームファイルを追加します。ゲーム本体、更新データ、DLCを同一フォルダにまとめてインポートすることが推奨されています。
3. プラットフォームの選択とビルド
対象プラットフォーム(iPhone / iPad または Mac)を選択し、「Build」をクリックします。ビルド中は各ステージの進捗、所要時間、ディスク使用量が表示されます。
4. 署名とインストール
ビルド完了後、ランチャーの指示に従ってApple IDで署名を行い端末にインストールします(Windows版ランチャーには署名ツールとしてImpactorが同梱されています)。端末上でS2Armを起動すると、ライブラリから該当ゲームを選択してプレイできます。
AIアシスタント経由で操作する場合
外部のAIエージェントにPCのコマンド実行権限を与えている場合、付属のs2armctlを利用して自動進行させることができます。
# ランチャーを起動して接続する
/Applications/S2Arm.app/Contents/Resources/s2armctl start
# 次に行うべきアクションと担当(ユーザー側かツール側か)を確認する
/Applications/S2Arm.app/Contents/Resources/s2armctl next
# 問題が発生した際に診断バンドルをエクスポートする
/Applications/S2Arm.app/Contents/Resources/s2armctl diag export ~/Desktop/S2Arm-diagnostics.zip
※Windows環境の場合はランチャーフォルダ内の s2armctl.cmd を使用します。
技術的なポイント
-
静的再コンパイル(Static Recompilation)の活用
Switchのアーキテクチャ(ARM64)とApple Silicon(ARM64)の命令セットの親和性を活かし、命令を逐次解釈・JITコンパイルするのではなく、事前にコード書き換えを行う設計になっています。これによりJITの制限が厳しいiOS環境でもネイティブ速度での実行を可能にしています。 -
Metalへの直接描画変換とネイティブホスト
ゲームからのグラフィックスコールを直接Metal APIにマッピングし、OSのシステムサービスはネイティブのホストレイヤーが処理することで、オーバーヘッドを最小限に抑えています。 -
クロスプラットフォームなビルド環境
ビルド処理自体はmacOSだけでなくWindows上でも実行可能です(Windows環境からはiPhone/iPad向けのパッケージビルドに対応)。C#ベースの実装を中心に、各OS用のGUIフロントエンドおよびCLI(s2armctl)が設計されています。
注意点
-
持ち込み(BYOG)前提
S2ArmにはゲームROMや暗号化キー、著作権で保護されたバイナリは一切含まれていません。すべてユーザー自身が合法的に取得したファイルを準備する必要があります。 -
32-bitタイトルの非対応
S2Armは64ビット(AArch64)ゲームのみをサポートしています。Apple Siliconハードウェアが32-bit ARMコードの実行をサポートしていないため、32ビットゲームや36ビットアドレス空間を要求するタイトルは動作しません。 -
対応環境
- iPhone / iPad: iOS / iPadOS 18 以降
- Mac: Apple Silicon搭載、macOS 15 以降
- Android / HarmonyOS: README上では「Coming soon(近日対応)」と記載されており、現時点では未提供です。
-
セーブデータの移行に関する注意
最新リリースでは新しいアプリ識別子(io.s2arm.*)が採用されているため、OSからは別アプリとして認識されます。過去のベータ版からのセーブデータは自動引き継ぎされないため、アプリ更新前の手動バックアップが推奨されています。
まとめ
S2Armは、エミュレータという形式を取らずに静的再コンパイルとMetal直結の描画変換によってSwitchゲームをAppleデバイス上で動作させるユニークなツールです。GUIランチャーの提供やAIエージェントによる自動化など、ビルド手順を簡素化する工夫も盛り込まれています。対応OSや対象タイトル(64ビット限定)の要件を確認した上で、自身のゲームライブラリをApple環境へ移植してみたい方は試してみてはいかがでしょうか。





