Universal Binary

ユニバーサルバイナリとは



ユニバーサルバイナリは、Appleが開発した技術で、異なるCPUアーキテクチャを持つ環境でソフトウェアを動作させるためのバイナリ形式です。これにより、例えばPowerPCとx86、あるいはx64とARM64のように、互換性のない複数のCPU上で同一のアプリケーションを動かすことが可能になります。

ユニバーサルバイナリの登場背景



AppleがMacintoshに搭載するCPUPowerPCからインテルのx86へ移行した際、この技術が導入されました。また、macOS(当時はMac OS X)における32ビットから64ビットへの移行期にも、32ビットバイナリと64ビットバイナリの混在を可能にするために利用されました。

ユニバーサルバイナリの利点



ユニバーサルバイナリに対応したアプリケーションを利用する際、ユーザーは実行環境のCPUアーキテクチャを意識する必要がありません。CPUに合わせた個別のパッケージをダウンロードすることなく、単一のアプリケーションパッケージで動作します。また、Rosettaのような変換層を介さずにCPUのネイティブ性能を最大限に引き出すことができます。

ユニバーサルバイナリの欠点



一方で、ユニバーサルバイナリには、各アーキテクチャに対応する複数のバイナリを内包するため、単一のアーキテクチャ専用のバイナリと比べてファイルサイズが大きくなるという欠点があります。

Universal 2



インテル系プロセッサ向けのx86_64とAppleシリコン向けのarm64のネイティブコードを格納するバイナリフォーマットは「Universal 2」と呼ばれています。この技術はWWDC 2020で「Rosetta 2」と共に発表されました。

lipoコマンド



macOSには、`lipo`というコマンドラインツールが標準で提供されています。このツールを使うことで、以下の操作が可能です。

異なるアーキテクチャ向けのバイナリを結合し、ユニバーサルバイナリを生成する
ユニバーサルバイナリに格納されているアーキテクチャの種類を確認する
特定のアーキテクチャ向けのバイナリのみを抽出または削除する

lipoコマンドの活用例



例えば、開発者はlipoコマンドを利用して、特定のCPUアーキテクチャ向けに最適化されたバイナリを生成したり、既存のユニバーサルバイナリを分析したりできます。これにより、アプリケーションのパフォーマンスを最適化したり、ファイルサイズを調整したりすることが可能です。

まとめ



ユニバーサルバイナリは、Apple製品のエコシステムにおいて、異なるアーキテクチャ間のソフトウェア互換性を保つための重要な技術です。ユーザーは、意識することなく、自身の環境に最適なパフォーマンスでアプリケーションを利用できます。lipoコマンドは、開発者がユニバーサルバイナリを効率的に管理するための強力なツールです。

脚注



関連項目



Rosetta
ファットバイナリ
Mach-O
Classic (ソフトウェア))

外部リンク



Universalアプリケーション

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。