JIT不使用版はユーザーから苦情殺到の可能性

ゲームキューブ/WiiエミュレータDolphiniOS、なぜApp Storeで公開できないか公式説明

Image:speedimaging/Shutterstock.com

今月初め、アップルはApp Reviewガイドラインを更新し、App StoreでiPhone向けのレトロゲーム機エミュレータの配信を解禁した。これを受けてファミコンやゲームボーイ、ニンテンドーDS等に対応した「Delta」が配信開始され、瞬く間に全世界ランキングでトップに躍り出ている。

しかし、もう1つの人気エミュレータ「DolphiniOS」はApp Storeで公開が困難な理由を、開発者らが明かしている。

元になったDolphinは、任天堂のゲームキューブやWii用ゲームのほとんどを動かせるエミュレータであり、長年にわたりレトロゲームファンに親しまれている。WindowsやLinux、Mac向けにウェブ上で公開されており、誰でもダウンロードが可能だ

しかし、昨年Steamに開設したページはまもなく削除され、無期限に延期と発表。Steam運営元のValveが任天堂からDMCA(デジタルミレニアム著作権法)テイクダウン通知を受けたため、と説明していた。

DolphiniOSは、そのiOS向けフォーク(派生したバージョン)だ。公式Dolphinチームは関わっておらず、別のOatmealdomeチームが独立して管理している。これまでも非公式アプリストアAltStoreで公開されていたが、正規のApp Storeに進出するかどうか注目が集まっていた次第だ。

Oatmealdomeチームは公式ブログで「DolphinがApp Storeに登場しない理由」を説明している。今回、任天堂は関係なく、アップルがエミュレータを高速に動かすための技術「JIT」を使わせてくれないからだ。

ゲームキューブとWiiは、PowerPCベースのCPUを内蔵している。対して最近のアップル製デバイスはすべてARMベースのCPUを使っているため、PowerPCのコードを直接実行できない。iPhone上でそれらのゲームを動かすには、PowerPCコードをARM CPUに理解できるよう変換する必要がある。

これをスピーディに実現するため、DolphiniOSはJIT(Just-In-Time)コンパイルを使っている。一般的なソフトウェアは実行前に完全にコンパイルしておくが、JITは実行時にコンパイルするものだ。

要は「リアルタイムでネイティブコードを生成できる」ということで、特にエミュレーションアプリでは大きな効果を発揮する。2020年のiOS 14.2で密かにサポートされたものの、アップルが公式に認めたわけではなく、開発者がデバッグ等で使えるに留まっている

一応、iOS 17.4では限定的に認められたが、EU圏内のブラウザアプリのみ。全世界向けアプリには依然として許可されていない。

DolphiniOS開発チームはアップルにJITサポートの許可を求めたものの、数週間前に拒否されたという。「セキュリティ上のリスクがあると考えている可能性がある」とのことで、正確な理由は連絡されていないようだ。

JITを使わなくともDolphiniOSを動かすことは、技術的には可能だ。その場合は「インタープリタ」つまり実行時にコードを1行ずつ機械語に翻訳する。その原理上、JITコンパイルよりも何倍も遅い。

どれだけ遅いかは、次の2つの動画を見比べれば明らかだ。上はインタープリタを使ったもの、下はJITを使ったものである。

このうちインタープリタ版ならApp Storeに提出できるが、ユーザーから延々とクレームが来るだろう。またアップルも、使いものにならないという理由で却下する可能性がある。開発チームは、アプリの再提出を断念している理由をそう語っている。

ようやくレトロゲーム機エミュレータを阻む壁は取り払われたものの、パフォーマンス向上に繋がる技術を使用禁止されるという、もう1つの壁に阻まれている格好である。

関連キーワード: