Android Emulator — エミュレーションの仕組み

著者: IT Sectr 公開日: 2026-02-09 読了時間: 8 分

Android Emulator は、開発者のコンピュータ上でAndroidデバイスの完全な仮想コピーを実行するAndroid Studioのコンポーネントです。エミュレータはQEMUを使用してARM命令をホストのx86_64アーキテクチャに変換します。Googleドキュメントでは、AVD仮想デバイスとハードウェアアクセラレーションのセットアップの完全なサイクルについて説明しています。

要点

  • Android Emulator — ARMトランスレーション、GPU、センサー、NFCをサポートするQEMUベースの完全エミュレーション
  • AVD Manager — APIレベル、アーキテクチャ、ハードウェア特性を選択して仮想デバイスを作成・設定するツール
  • HAxMとHyper-V — エミュレータのパフォーマンスを3〜5倍に向上させるハードウェアアクセラレーション
  • コードでの確認 — Build.FINGERPRINTとBuild.PRODUCTでKotlinにおけるエミュレータ実行を検出可能
  • センサーエミュレーション — 加速度計、ジャイロスコープ、NFC、GPS、カメラがエミュレータでサポートされています

Android Emulatorとは?

Android Emulator は、QEMU (Quick EMUlator) 上で動作し、Androidハードウェアプラットフォームをエミュレートする仮想Androidデバイスです。iOS Simulatorとは異なり、Android EmulatorはARM命令を完全に変換するため、モバイルアーキテクチャ用にコンパイルされたコードをx86_64ホストで実行できます。

Googleは2007年に最初のAndroid SDKとともにAndroid Emulatorをリリースしました。それ以来、エミュレータは低速なARMのみのソリューションから、GPUサポート、ハードウェアアクセラレーション、センサーエミュレーションを備えた高性能システムへと進化しました。Google(Android Developer Blog、2025)によると、HAxMを搭載した最新のエミュレータは初世代よりも4〜5倍高速に動作します。

エミュレータはAndroidデバイスのすべてのコンポーネント(CPU、GPU、RAM、ストレージ、タッチスクリーン、加速度計、ジャイロスコープ、GPS、カメラ、バッテリー、NFC、Bluetooth、Wi-Fi)をサポートしています。開発者はExtended Controlsを通じて、着信、SMS、さまざまなネットワーク信号レベル、地理位置情報をシミュレートできます。

エミュレータ用システムイメージ

Android Emulator はSDK Managerからダウンロードしたシステムイメージ(System Images)を使用します。各システムイメージには、選択したAPIレベルとターゲットプロセッサアーキテクチャに対応するAndroidファームウェアの完全なコピーが含まれています。x86_64(HAxM推奨)、ARM64(ARM互換性テスト用)、Google APIs(Google Play Servicesプリインストール)など、異なるアーキテクチャのイメージが利用可能です。Wear OS、Android TV、Automotive用の個別イメージもあります。

kotlin
// コードでのエミュレータタイプの確認
val isEmulator = Build.FINGERPRINT
    .contains("generic") ||
    Build.PRODUCT.contains("sdk")

if (isEmulator) {
    Timber.d("アプリはエミュレータで実行されています")
}

Android StudioでのAVD設定

AVD (Android Virtual Device) はエミュレータ用の仮想デバイス設定です。Android StudioのAVD Managerでは、モデル、画面サイズ、ピクセル密度、RAM容量、ストレージ容量、Androidバージョンなど、あらゆる特性の組み合わせでデバイスを作成できます。

AVDパラメータ開発時の推奨テスト時の推奨
アーキテクチャx86_64(HAxM対応)ARM64(純粋エミュレーション)
RAM2048〜4096 MB1536〜2048 MB
内部ストレージ8〜16 GB4〜8 GB
APIレベル最新安定版最小サポート版
Google Play Services有効必要に応じて

AVDの作成はAndroid StudioのDevice Managerから行います。ハードウェアプロファイル(Pixel、Nexus、Galaxyなど)、システムイメージを選択し、パラメータを設定します。作成後、デバイスはRun Configurationsリストに表示され、アプリをすぐに実行できます。

クイック起動のスナップショットモード

エミュレータは Quick Boot をサポートしています。AVDの状態をスナップショットとして保存し、次回起動時に復元します。起動時間が30〜60秒から2〜5秒に短縮されます。クリーンな状態にリセットするには、AVD ManagerでCold Boot Nowを使用してください。

ARMトランスレーションとハードウェアアクセラレーション

ARMトランスレーション はAndroid Emulatorの主要技術で、ARM命令をリアルタイムでx86_64に変換します。トランスレーションがない場合、エミュレータはx86_64イメージのみ実行でき、テスト機能が制限されます。GoogleはARM→x86変換にlibhoudini、HAXMアクセラレーションにIntelライブラリを使用しています。

bash
# WindowsでのHAxMステータスの確認
sc query "IntelHaxm"

# SDK Manager経由でHAxMをインストール
sdkmanager "extras;intel;Hardware_Accelerated_Execution_Manager"

# ハードウェアアクセラレーションでエミュレータを起動
emulator -avd Pixel_9_API_35 -accel on -gpu auto

Intel HAxM (Hardware Accelerated Execution Manager) はIntel VT-xプロセッサ用の仮想化ドライバで、エミュレータを3〜5倍高速化します。AMDプロセッサ搭載のWindowsでは、Windows Hyper-V PlatformWHPX を使用してください。ハードウェアアクセラレーションがないと、エミュレータは低速で動作し、アニメーション遅延が最大1〜2秒発生します。

Apple Silicon(Mシリーズ)搭載のmacOSでは、ハードウェアアクセラレーションはHypervisor.frameworkを通じてネイティブに動作します。Google(Android Emulator Release Notes 2025)によると、M2 Maxのエミュレータは基本操作で実機の95%のパフォーマンスを達成しています。

エミュレータ vs 実機

エミュレータと実機の選択は開発段階によって異なります。エミュレータでの開発とデバッグは便利です。高速起動、即時デプロイ、Extended Controlsによるセンサーシミュレーションが可能です。実機では、最終的なパフォーマンス、バッテリー、ハードウェアのテストを行います。

シナリオエミュレータ実機
UI開発○(高速)×(デプロイが遅い)
パフォーマンステスト×(指標が過大)○(実測値)
センサーエミュレーション(GPS、NFC)○(Extended Controls)制限あり
消費電力非対応○(Battery Historian)
ネットワークテスト(2G/3G/4G/5G)○(速度シミュレーション)○(SIMカード使用)
CI/CD自動化○(物理デバイス不要)困難(デバイスファーム)

ハードウェアアクセラレーションを使用したエミュレータの パフォーマンス は、多くの場合、実際の低価格デバイスよりも優れています。そのため、最終テストは目標のパフォーマンスレベルの実機で実行してください。

Kotlinコードでのエミュレータ確認

Kotlin で実行環境を検出すると、不適切なコードを無効にしたり、デバッグ情報を追加したりするのに便利です。Androidはこの目的のために Build.FINGERPRINTBuild.PRODUCTBuild.HARDWARE を提供しています。

kotlin
object EmulatorDetector {
    val isEmulator: Boolean
        get() = Build.FINGERPRINT.startsWith("generic")
                || Build.FINGERPRINT.contains("emulator")
                || Build.HARDWARE == "ranchu"
                || Build.HARDWARE == "goldfish"
    
    fun logEnvironment() {
        if (isEmulator) {
            Log.d("EmulatorDetector", "環境: エミュレータ")
        }
    }
}

エミュレータ検出器の使用はデバッグ時に役立ちます。エミュレータ上で詳細なログを有効にしたり、アニメーションを無効にしたり、実際のAPI呼び出しをモックに置き換えたりできます。アプリのビジネスロジックに必要な場合を除き、プロダクションビルドでの確認は避けてください。

エミュレータでのアプリテスト

Android Emulator はCIサーバーでの自動テストに使用されます。テストを実行するには、AVDを作成し、エミュレータを起動し、システムが完全にロードされるのを待つ必要があります。Gradle Managed Devicesはこのプロセスを簡素化し、AVD設定をbuild.gradle.ktsに記述します。

kotlin
// build.gradle.kts — Gradle Managed Devices
android {
    testOptions {
        managedDevices {
            devices {
                register<ManagedVirtualDevice>("pixel9Api35") {
                    device = "Pixel 9"
                    apiLevel = 35
                    systemImageSource = "google"
                }
            }
        }
    }
}

エミュレータを 手動で 起動するには、コマンドラインを使用します: emulator -avd Pixel_9_API_35 -no-window -no-audio -gpu swiftshader_indirect。-no-windowフラグはサーバー環境用にGUIを無効にし、-gpu swiftshader_indirectはホストGPUなしでソフトウェアレンダリングを提供します。

ネットワークとセンサーのエミュレーション

Android EmulatorのExtended Controlsは、ネットワーク状態(レイテンシ、帯域幅、ネットワークタイプ(GPRS、EDGE、3G、4G、5G))のシミュレーションための強力なツールを提供します。これにより、通信環境の悪いエリアに物理的に移動することなく、低速接続時のアプリの動作をテストできます。

センサーシミュレーションには、仮想3Dデバイスモデルによる加速度計、ジャイロスコープ、磁力計が含まれます。GPSには、ルートを含むGPXファイルをロードでき、エミュレータは座標に沿った移動をシミュレートします。これはナビゲーションアプリのテストに不可欠です。カメラはホストのWebカメラまたは画像の読み込みを通じてエミュレートされます。

Android Emulatorの マルチディスプレイ は、タブレットや折りたたみデバイス向けの複数画面をサポートしています。Extended Controlsでは、エミュレータを再起動することなく、画面の向き、サイズ、ピクセル密度(DPI)を変更できます。折りたたみデバイスのテストには、折りたたみ状態と展開状態を切り替えるFoldableモードが利用可能です。

Wear OSとAndroid TV向けAndroid Emulator

エミュレータはスマートフォンだけでなく、Wear OSAndroid TV もサポートしています。Wear OSでは、円形および長方形のAVD設定、ベゼル回転シミュレーション、スワイプジェスチャー、および電話エミュレータとの連携テストが利用できます。Android TVではD-padナビゲーションを使用したインターフェースが使用されます。両方のプラットフォームがハードウェアアクセラレーションとGoogle Play Servicesを使用したテストをサポートしており、スマートウォッチやテレビアプリの開発サイクルにとって重要です。

よくある質問

Android EmulatorとiOS Simulatorの違いは?

Android EmulatorはQEMUによる 完全なARMエミュレーション で命令変換を行いますが、iOS Simulatorはホストアーキテクチャ向けにコードをコンパイルします。Android EmulatorはGPU、カメラ、センサー、Bluetooth、NFCをサポートしていますが、iOS Simulatorはこれらの機能のほとんどをサポートしていません。

コードでアプリがエミュレータで実行されているか確認する方法は?

Kotlinでは、Build.FINGERPRINT に「generic」または「emulator」が含まれているか、Build.HARDWAREに「ranchu」または「goldfish」が含まれているかを確認します。追加のマーカーとしてBuild.PRODUCTを使用します。エミュレータの場合、「sdk_google」または「google_sdk」が含まれます。

Android Emulatorを高速化する方法は?

AMDプロセッサの場合は Intel HAxM(Intel VT-x)またはWindows Hyper-V Platform(WHPX)を有効にします。ハードウェアアクセラレーション対応のx86_64システムイメージを使用します。AVD Managerでエミュレータに少なくとも4 GBのRAMを割り当てます。スナップショット読み込みのためにQuick Bootを有効にします。

Android EmulatorでNFCをテストできますか?

はい、Android Emulator はAndroid 10(API 29)以降でNFCエミュレーションをサポートしています。Extended Controls → Phone → NFCからNDEFメッセージを送信できます。タグの読み取り/書き込み、ピアツーピア、HCEモードに対応しています。完全なテストには、NFCチップを搭載した実機を使用してください。

AVDにはどのシステムイメージを選ぶべきですか?

日常的な開発には Google APIs対応x86_64 を選択してください。最大のパフォーマンスと完全なサービスセットを提供します。互換性テストにはARM64イメージを使用します。CIにはGoogle Play Servicesなしのイメージを使用します。サイズが小さく、起動が高速です。

まとめ

  • Android Emulator — ARMトランスレーション、GPU、センサー、NFCをサポートするQEMU上の完全なAndroidデバイスエミュレーション
  • AVD Manager — アーキテクチャ、APIレベル、RAM、ハードウェア特性を選択可能な仮想デバイス設定
  • ハードウェアアクセラレーション — HAxM、Hyper-V、WHPXがエミュレータのパフォーマンスを3〜5倍向上
  • 環境検出 — Build.FINGERPRINT、Build.PRODUCT、Build.HARDWAREでエミュレータ実行を検出
  • Extended Controls — GPS、NFC、センサー、着信、SMSのシミュレーションでシナリオテストを実現
  • CI自動化 — Gradle Managed Devicesとx86_64イメージで効率的なCIテスト
  • Quick Boot — スナップショットモードでエミュレータの起動時間を2〜5秒に短縮

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください