この記事の要点
- Android も iOS も「カーネル → ハードウェアとの橋渡し → 実行環境・ライブラリ → アプリ向けのフレームワーク → アプリ」という層で作られたOSです。違いは、各層に何を使い、どこまで公開しているかにあります。
- Android は Linux カーネルの上に HAL、ART(Android Runtime)とネイティブのライブラリ、Java API フレームワーク、システムアプリが載ります(Android Developers、2026年9月確認)。iOS のカーネルは Darwin の一部である XNU です。
- どちらもアプリをサンドボックスに閉じ込め、他のアプリのデータに勝手に触れさせない仕組みを持ちます。Android はアプリごとに別の UID、iOS はアプリごとの専用のホームディレクトリで分けます。
- モバイル2級の出題カテゴリ「モバイル端末基本機能と端末周辺技術」(公式の比率は20%)に当たる範囲です。
Android と iOS のアーキテクチャとは、何を比べる話なのか?
一言でいうと、OS を「層」に分けて、それぞれの層の役割と、アプリをどう守るかを比べる話です。スマホのOSは、ハードウェアを直接扱う低い層から、アプリが呼び出す高い層までを積み重ねて作られています。
層に分ける理由は、下の層の違いを上の層から見えなくするためです。たとえばカメラの部品が端末ごとに違っても、アプリは共通の API を呼ぶだけで写真を撮れます。Android の公式ドキュメントは、HAL(ハードウェア抽象化レイヤ)を「端末のハードウェアの機能を上位の API に公開する標準のインタフェース」と説明しています。
レイヤ構成を比べると、何が違うのか?
Android の公式ドキュメントは、プラットフォームを下から Linux カーネル、HAL、Android Runtime(ART)とネイティブ C/C++ ライブラリ、Java API フレームワーク、システムアプリという層で示しています。iOS は同じ粒度の図を公開ドキュメントで確かめにくいため、ここでは確認できた事実だけを並べます。
| 項目 | Android | iOS |
|---|---|---|
| カーネル | Linux カーネル(スレッドや低レベルのメモリ管理などを担う) | XNU(Darwin の一部。Mach と FreeBSD の要素、IOKit を組み合わせたカーネル) |
| ハードウェアとの橋渡し | HAL がカメラや Bluetooth などの機能を標準のインタフェースで公開 | 端末とOSを同じ会社が作り、公開されたフレームワーク経由で使う |
| アプリの実行環境 | ART。Android 5.0(API レベル21)以降、各アプリが自分のプロセスと ART のインスタンスで動く | アプリはネイティブのコードとして動く |
| アプリのコードの形 | DEX 形式のバイトコード(AOT と JIT のコンパイルを併用) | Apple のツールでビルドし、コード署名したもの |
| アプリ向けの部品 | Java API フレームワーク(ビュー、通知、アクティビティの管理など) | UIKit や SwiftUI などのフレームワーク |
| 標準アプリ | メールやブラウザなどのシステムアプリも、他のアプリで置き換えられる | 標準アプリと既定のアプリの扱いはOSの設定と制度で決まる |
← 表は横にスクロールできます →
Android 5.0 より前は、実行環境として Dalvik が使われていました。ART と Dalvik はどちらも DEX 形式を実行する点が共通で、選択肢で「ART は Java のソースコードをそのまま実行する」とあれば誤りです。ビルドの段階で DEX に変換されます。
サンドボックスと権限は、どうやってアプリを守るのか?
Android:公式ドキュメントによると、Android はアプリごとに固有のユーザーID(UID)を割り当て、それぞれ自分のプロセスで動かします。分離はカーネルが Linux の仕組みで強制します。その上に、Android 5.0 で SELinux による強制アクセス制御が加わり、Android 9 では条件を満たすアプリが個別の SELinux のサンドボックスで動くようになりました。
iOS:Apple Platform Security によると、各アプリにはインストール時にランダムに割り当てられる専用のホームディレクトリがあり、自分以外の情報には iOS が明示的に用意したサービスを通じてしか触れられません。機密データへのアクセスには、アプリに署名して組み込まれた「エンタイトルメント」が必要です。
権限(パーミッション)の扱いは、Android では3つに分かれます。
- インストール時の権限:影響の小さい通常の権限と、同じ証明書で署名されたアプリにだけ認める署名権限。インストール時に自動で与えられる。
- 実行時の権限(危険な権限):位置情報など影響の大きい権限。利用者がシステムの確認画面で明示的に許可する。この方式は Android 6.0(API レベル23)で導入された。
- 特別な権限:他のアプリの上に表示するなど、特に強い操作。設定の「特別なアプリアクセス」で切り替える。
通知を出すことも、Android 13(API レベル33)からは実行時の権限(POST_NOTIFICATIONS)になりました。通知の流れはプッシュ通知の仕組みで扱います。
モバイル2級では、どの範囲で、どう問われそうか?
MCPC の公式ページの図では、モバイルシステム技術検定 2級(100問・100分・4者択一)の出題カテゴリ「モバイル端末基本機能と端末周辺技術」の比率が20%と示されています(2026年9月27日確認)。当サイトでは、公式テキスト『モバイルシステム技術テキスト 第11版』の第8章「モバイル端末のソフトウェア技術」がこの範囲に当たると推定しています(章名からの当サイトの判断で、公式の対応表ではありません)。
4択での問われ方は、次のような型が考えられます。出題頻度の公式データはありません。
- 層の順番:Android の構成要素を下から正しく並べた選択肢を選ばせる。
- 層の役割:HAL・ART・フレームワークと、その役割の組合せを問う。
- サンドボックス:アプリを分ける仕組み(UID、専用ディレクトリ)の説明を選ばせる。
- 権限の種類:実行時に許可を求める権限と、インストール時に与えられる権限の区別を問う。
アプリをどこから配るかという話はアプリの配布と審査の仕組み、アプリの作り方の違いはネイティブ・Web・ハイブリッドアプリの違いで扱います。試験全体はモバイルシステム技術検定2級とはへ。
どこで取り違えやすいのか?
層の名前を見たら「その層は何を隠し、何を公開するか」を思い出してください。
| 取り違え | 正しい考え方 | 確認する問い |
|---|---|---|
| HAL がアプリの画面を作る | HAL はハードウェアの機能を上位に公開する層 | ハードウェア側の話か、画面側の話か |
| ART は Java のソースを直接実行する | ビルド時に DEX に変換し、ART が実行する | 実行するのはソースか、DEX か |
| Android の全アプリが同じ UID で動く | アプリごとに固有の UID を割り当てる | 分離の単位はアプリか、端末か |
| 権限はすべてインストール時に決まる | Android 6.0 以降、危険な権限は実行時に許可を求める | どの種類の権限の話か |
| iOS のカーネルは Linux | iOS のカーネルは Darwin の一部の XNU | どちらのOSのカーネルか |
← 表は横にスクロールできます →
確認問題1:Android の層を正しく並べられるか?
Android のプラットフォームの構成を、ハードウェアに近い下の層から順に並べたものとして、最も適切なものはどれか。
- HAL → Linux カーネル → Java API フレームワーク → ART → システムアプリ
- Linux カーネル → HAL → ART → Java API フレームワーク → システムアプリ
- Linux カーネル → ART → システムアプリ → HAL → Java API フレームワーク
- ART → Linux カーネル → HAL → システムアプリ → Java API フレームワーク
正解:2。Android の公式ドキュメントは、Linux カーネルを土台に、HAL、ART とネイティブのライブラリ、Java API フレームワーク、システムアプリの順に層を示しています。
1は HAL をカーネルより下に置いており、ハードウェアの機能をカーネルの上で公開するという役割と合いません。3は HAL をアプリより上に置いています。4は実行環境である ART をカーネルの下に置いており、土台がカーネルであることと矛盾します。
確認問題2:Android のサンドボックスを説明できるか?
Android のアプリケーションサンドボックスに関する記述として、最も適切なものはどれか。
- すべてのアプリを同じユーザーIDの1つのプロセスで動かし、アプリ側の設定で分離する
- アプリの分離は利用者の操作に任され、カーネルは他のアプリへのアクセスを止めない
- アプリごとに固有のユーザーIDを割り当てて別のプロセスで動かし、カーネルが分離する
- アプリをインストールした日付ごとにグループに分け、同じグループの中でだけ共有する
正解:3。Android はアプリごとに固有の UID を割り当てて自分のプロセスで動かし、カーネルが Linux の仕組みで分離を強制します。
1は UID とプロセスを共有するとしている点が、アプリごとに分ける仕組みと逆です。2はカーネルが分離を強制するという説明と矛盾します。4のような日付による分け方は、サンドボックスの仕組みにはありません。
確認問題3:権限の許可のタイミングを埋められるか?
次の文の空欄に入る語句として、最も適切なものはどれか。
「Android 6.0(API レベル23)で導入された権限の方式では、位置情報のように影響の大きい権限について、アプリの( )に利用者がシステムの確認画面で個別に許可する。」
- 実行中
- 開発時
- 審査時
- 出荷時
正解:1。Android 6.0 で、利用者がアプリの権限を実行時に管理する方式が導入されました。影響の大きい「実行時の権限」は、アプリが使う前に確認画面で許可を求めます。
2は開発者がアプリを作る段階で、利用者が許可する場面ではありません。3はストアの審査の段階で、利用者の許可とは関係がありません。4は端末の出荷の段階で、あとから入れるアプリの権限を決めることはできません。
同じ「モバイル端末基本機能と端末周辺技術」の問題を本番と同じ4択で試すなら、登録不要のモバイル2級の無料お試し20問で解説まで確認できます。
よくある質問
iOS の層構成も覚える必要がありますか?
出題の範囲は公表されていません。当サイトでは、公式ドキュメントで確かめられる Android の層構成と、両OSに共通するサンドボックス・権限の考え方を優先して押さえることを勧めています。iOS はカーネルが XNU であることと、アプリごとの専用ディレクトリで分けることを区別できれば十分な場面が多いでしょう。
ART と Dalvik の違いは何ですか?
どちらも DEX 形式のコードを実行する Android の実行環境です。Android 5.0(API レベル21)より前は Dalvik、以降は ART が使われています。ART は事前のコンパイル(AOT)と実行時のコンパイル(JIT)を組み合わせています。
Android のシステムアプリは特別扱いですか?
公式ドキュメントでは、メールやブラウザなどのシステムアプリに特別な地位はなく、他のアプリを既定のアプリとして使えると説明しています。選択肢で「システムアプリは置き換えられない」とあれば注意してください。
出典・参考
- [1]MCPC モバイルシステム技術検定[2級]CBT方式(出題カテゴリの図・形式)確認 2026-09-27
- [2]MCPC 検定テキスト(モバイルシステム技術テキスト 第11版)確認 2026-09-27
- [3]Android Developers: Platform architecture 確認 2026-09-27
- [4]Android Open Source Project: Application sandbox 確認 2026-09-27
- [5]Android Developers: Permissions on Android 確認 2026-09-27
- [6]Android Developers: Android 6.0 Changes(Runtime Permissions)確認 2026-09-27
- [7]Apple Platform Security: Security of runtime process in iOS(サンドボックス・エンタイトルメント)確認 2026-09-27
- [8]apple-oss-distributions/xnu(README)確認 2026-09-27
本番と同じペースで腕試し
記事の次は、本番形式の問題で。
公式の出題カテゴリの比率どおりに組んだ無料お試しを、登録不要・カード不要で解けます。続きの模試と章別ドリルは買い切りで、月額はかかりません。
あわせて読みたい
当サイトは、モバイルコンピューティング推進コンソーシアム(MCPC)とは関係のない個人が運営する非公式の学習教材です。掲載している問題はすべて当サイトのオリジナルで、実際の試験問題・過去問題・再現問題ではありません。試験の日程・受検料・出題範囲は公式サイト(https://www.mcpc-jp.org/license/ )で必ず確認してください。合格を保証するものではありません。合格の目安は当サイトの推定です。技術・制度の記述は「最終確認日」時点のものです。