開発を支援するAppleのさまざまな内部iOSバリアントの内部を覗いてみよう

開発を支援するAppleのさまざまな内部iOSバリアントの内部を覗いてみよう

Appleは正式リリースに至るまで、それぞれ独自の目的と全く異なるユーザー層を持つiOSの複数のバリエーションを開発しています。ここでは、それらのバリエーションとは何か、いつ、誰が使うのかをご紹介します。

iOSのエンドユーザー版は当然ながら誰でも無料で利用できますが、開発とテストには様々な段階があります。iOSの独自のバージョンのほとんどは、Appleまたは関連する工場やベンダー内での使用に限定されています。

Appleが登録開発者向けにオペレーティングシステムの最初の開発者ベータ版をリリースする前に、OSは適切な動作を保証するために一連の社内テストを受ける必要があります。そのため、iOSはApple社内で複数のバージョンが存在し、それらが同時に存在する可能性があります。

iOS のいくつかのタイプは、今後発売される製品のハードウェア コンポーネントをテストするために使用され、他のバリアントは Apple のソフトウェア開発チームによって、さまざまな OS 機能や拡張機能の作成とテストに使用されます。

Apple の iOS 開発の実践と一般的なアプローチをよりわかりやすく説明するために、社内で使用されている多くの OS バリアントの違いを詳しく説明した簡単な概要を以下に示します。

LLDiags - Appleが低レベル診断に使用しているもの

おそらく最も基本的なiOSバージョンであるこのバージョンには、実質的にユーザーインターフェースがありません。LLDiagsは、主に工場における低レベルの診断を目的としたiOSの特殊なバージョンです。

LLDiags を実行するデバイスには、内部的に「Diags」と呼ばれるシンプルな診断イメージのみが搭載されています。診断イメージには基本的なユーザー インターフェイスが表示され、これを使用してテストを実行したり、デバイスを再起動したりすることができます。

iPhone 8 の診断実行 - AppleDemo の動画からの YouTube プリントスクリーン

iPhone 8 の診断実行 - AppleDemo の動画からの YouTube プリントスクリーン

診断モードでない場合、LLDiags バージョンの iOS を搭載したデバイスは通常、リカバリモードで起動し、リカバリモードのロゴ以外は何も表示されません。ファイルシステムには、デバイスを起動するために必要な最小限のファイルしか保存されていないことがよくあります。

Apple のエンジニアは、接続されたコンピューターを介して、コマンドライン インターフェイスを通じてこれらのデバイスと対話すると言われています。

NonUI - Appleのハードウェアエンジニアとキャリブレーションマシンが使用するもの

iOS の NonUI バリアントは、Apple のソフトウェア開発チームとハードウェア開発チームの作業を分離する手段として作成されました。

ソフトウェアエンジニアリング(SWE)チームは、最終的にiOSのリリース版となる、ユーザーが目にするユーザーインターフェースの開発に取り組みました。ハードウェアチームには別の仕事が与えられました。

Apple社内のハードウェアエンジニアリングチーム(HWTE)は、通常のユーザーインターフェースへのアクセスを与えられていなかった。代わりに、ボタン、ポート、カメラ、スピーカー、センサーといったハードウェアコンポーネントのテストのみを目的とした、初歩的なUIを備えたiPhoneのOSの即席バージョンに頼っていたのだ。

次の 2 つの初期の iPhone は、iOS の InternalUI と NonUI の違いを完璧に示しています。

二人の

初代iPhoneの2つの「Acorn」プロトタイプは、InternalUIとNonUIの違いを示している。

Apple のソフトウェア エンジニアがクリック ホイールを備えた iPod 風のインターフェイスの開発に取り組んでいる間、ハードウェア開発チームは、単純な正方形と長方形をボタンとして備えたオペレーティング システムのバージョンの開発に取り組んでいました。

これらの初期のプロトタイプは、AcornOS と呼ばれるオペレーティング システムを実行しており、コレクターの間では一般に「Acorn プロトタイプ」と呼ばれています。

iPhoneが進化するにつれ、そのオペレーティングシステムの非UIバージョンも進化しました。初代iPhoneの後継プロトタイプには、「SkankPhone」という、おそらく不適切な名前が付けられたオペレーティングシステムのバージョンが搭載されていました。

SkankPhoneの「About(バージョン情報)」セクションの初期バージョンでは、オペレーティングシステム名が「iPhoneOS」ではなく「OS X」と記載されていました。これは、Appleのハードウェアチームとソフトウェアチームの分離を如実に示しています。

同社の社内OSには、様々な内輪ネタや下手なイラスト、ミームが溢れています。中にはポップカルチャーへの言及を含むものもあり、例えばwatchOSの社内バージョンには、人気ドラマ「ザ・シンプソンズ」のキャラクターへの言及が含まれています。

例えば、SkankPhoneアプリは画面下部に様々なメッセージを表示します。例えば、「Skankは新しい黒です」や「Newton MessagePad 3000にこんにちは」といったメッセージです。

木製の表面に、電話、SMS、Web、メディアなどのオプションを含むメニューが表示されているスマートフォン。

iPhoneでSkankPhoneが動作中 - YouTube Michael MJDのプリントスクリーン

このアプリは後にSwitchBoardへと進化し、BurnInなどの非UIアプリケーションや環境向けの基本的なランチャーとなりました。SwitchBoardは、他のiOSバリアントで標準のiOS UIを表示するために使用されるSpringBoardやUIkitを必要とせず、独立して機能します。

SkankPhoneはその後数年間は存続しましたが、iOS 6.0で最終的に廃止され、他の内部アプリケーションに取って代わられました。iPhoneのハードウェア機能がますます充実するにつれて、内部オペレーティングシステムは新しいコンポーネントをテストするためのアプリケーションをさらに必要とするようになりました。

内部の非UIオペレーティングシステムは、Apple社内で「リリース」iOSと呼ばれるコンシューマー向けiOSバージョンに影響を与える変更を反映することがよくあります。この点において、iOS 7.0以降の非UIバージョンは、一部の領域でフラットな外観を採用しています。

具体的な機能面では、iOSのNonUIビルドは開発用カーネルキャッシュ、開発用iBoot、複数のハードウェア構成のサポートを備えていることが多いです。このタイプのiOSには、N89 iPhoneやJ98/J99 iPadなど、未リリースまたは廃止されたデバイスへの参照が含まれることもあります。

Appleは長年にわたり、生産ラインやHorizo​​nマシンなどの部品校正機での使用を目的とした、非UI iOSの特定のバリアントを開発してきました。これらのOSバージョンはすべて、現在もApple社内および工場で使用されている非UIのカテゴリーに分類されます。

内部UI - Appleのソフトウェアエンジニアが使用するもの

iOSの最も魅力的で興味深いバリエーションは、おそらくInternal UIでしょう。その名前が示すように、このタイプのiOSは、iOSのユーザーインターフェースの内部バージョン、そして多くの場合は試作段階のバリエーションを備えています。

つまり、iOS の InternalUI バージョンには、未リリースの機能、未発表の製品、実験的なテスト環境、または Apple が開発した代替設計の選択肢の実装が含まれる可能性があります。

iOS 4の内部バージョンでは、代替のマルチタスクビューが見られ、その写真が2011年にベトナムのウェブサイトに投稿された。

ピンクの背景にさまざまなアプリが表示されたスマートフォンを持っている手。

iOS 4のマルチタスクビューは大きく異なっていたかもしれない

iOSのInternalUIビルドには、標準のユーザーインターフェースに加えて、オペレーティングシステムの外観や機能に影響を与える特殊な設定が含まれていることがよくあります。このタイプのiOSには、多数の社内用アプリケーションが付属しており、その中にはOSの新機能のコードネームや初期プロトタイプが含まれている場合もあります。

注目すべきは、iOSのinternalUIビルドにはバグ報告オプションが組み込まれており、Radarアプリケーションを通じて処理される点です。バグを報告するには、Appleの従業員が「Radarを提出」します。

iOSのInternalUIバリアントには通常、製品版と開発版の両方のiPhoneのサポートが含まれており、場合によっては開発ボードとFPGAもサポートされます。InternalUIビルドには、iBootのデバッグバージョンも含まれています。

iOS の内部 UI バージョンには、「Desense」と呼ばれる別のバリ​​アントも存在します。このタイプの iOS の内容は大きく異なる場合がありますが、多くの場合、同じ内部アプリケーションと設定が多く含まれています。

時々、iOS の内部ビルドが一般ユーザーやコレクターや愛好家のコミュニティに公開されます。

2020年初頭、開発中のiPhone 11からiOS 14の内部バージョンが数人にリークされ、最終的に報道機関にも公開されました。このバージョンには、AppClips、壁紙コレクション、ウィジェットに関する記述が含まれていました。

AppClipsとウィジェットはどちらも2020年後半のiOS 14でデビューしましたが、壁紙コレクション機能は2年後のiOS 16でようやく導入されました。これは、Appleが品質管理にどれほど細心の注意を払っているかを示す指標です。

VendorUI - 工場でテストに使われるもの

InternalUI とエンド コンシューマー バリアント iOS はどちらも標準の iOS ユーザー インターフェイスを完全に備えていますが、VendorUI については同じことが言えません。

VendorUIは、工場や関連ベンダーに品質管理テストのために送られる特殊なiOSです。このソフトウェアにはSpringBoardとiOS UIの主要要素が搭載されていますが、オペレーティングシステムにはすべてのデフォルトアプリケーションが搭載されていないことがよくあります。

このバージョンのiOSは通常、ビルドに含まれるアプリのチェックリストとともに配布されます。新機能の漏洩を防ぐため、アクセスは厳しく制限されています。

2024年3月、Xの信頼できる個人アカウントは、AppleがiOS 18のVendorUIバージョンの内部ビルドの配布を開始したと主張しました。

CarrierOS - キャリアが機能をテストするために必要なもの

CarrierOS は iOS のバリエーションであり、多くの場合、Apple が一般に公開している iOS のバージョンとほぼ同じです。

世界中の通信事業者に配布されるこのタイプの iOS には、標準のエンドユーザー インターフェイスに加えて、通信事業者に役立つ特殊なアプリやユーティリティが含まれています。

このオペレーティング システムには、iPhone の E-911 緊急通報システムをテストするために使用される「E911Tester」などのアプリケーションが含まれています。

iOSのリリース - エンドユーザーが体験できるもの

これは、iPhoneを持っているほぼすべての人が使用しているiOSのバージョンです。Appleのエンジニアでない限り、おそらくiOSのストックバージョンしか見たことがないはずです。Apple社内ではこれを「リリース」と呼んでいます。

開発者ベータ版、パブリックベータ版、標準の .ipsw ファイルはすべて、内部ツールやアプリケーションが含まれていないため、リリース カテゴリに分類されます。

興味深いことに、リリース版iOSの内部ディストリビューションも存在します。これらのディストリビューションは、公開されているiOSバージョンと同じファイルシステムを備えていますが、場合によっては開発用のiBootが追加されています。

これは一体何を意味するのでしょうか?

iOSの様々なバージョンが存在することは、Appleが製品の品質に注力していることを示しています。このオペレーティングシステムの新リリースは、毎年6月に最初の開発者向けベータ版がリリースされる前から、複数回のテストを経ます。

Apple は、新しい iPhone がすべて基準を満たしていること、そして欠陥のある製品が出荷されないことを保証するために、出荷品質管理にもオペレーティング システムを使用しています。