スマートフォンのコンパス — 本質、動作原理と応用

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

スマートフォンのコンパス(compass)は、磁力計に基づくデジタルセンサーで、地球の磁極への方向を決定します。この技術により、ナビゲーション、マッピング、拡張現実アプリケーションは、空間内でのデバイスの向きを正確に判断できます。STMicroelectronics, 2025によると、最新のMEMS磁力計は、最大1–2度の精度で方向を決定できます

重要なポイント

  • スマートフォンのコンパスは、MEMS磁力計に基づくデジタルコンパスで、地球の磁場を測定します。
  • 最新の磁力計は、ホール効果または磁気抵抗効果を使用して磁場の方向を決定します。
  • デジタルコンパスの正確な動作には、スピーカーやその他のコンポーネントからの寄生磁場を補償するキャリブレーションが必要です。
  • スマートフォンの磁力計は3軸(X、Y、Z)で磁場を測定し、デバイスのどの向きでも方向を判断できます。
  • デジタルコンパスは、ナビゲーションアプリケーション、拡張現実、位置情報サービス、天文学プログラムで使用されます。

スマートフォンのデジタルコンパスとは?

スマートフォンのデジタルコンパスは、磁力計に基づくセンサーで、地球の磁場の強さを測定し、方位角(磁北に対する角度)を決定します。機械式コンパスとは異なり、デジタルコンパスは微小電気機械システム(MEMS)を使用して磁場を検出します。磁力計は3軸で磁場を測定し、スマートフォンのどの傾きでも正しい方向を判断できます。

センサーの仕組み

最新のMEMS磁力計は、2×2×1 mmのマイクロチップで、加速度計とジャイロスコープとともに(9軸IMUの一部として)スマートフォン本体に統合されています。センサーは方向だけでなく、地球の磁場の強さ(緯度に応じて25–65 µT)も測定します。金属物体やスピーカー、バイブレーションモーター、カメラからの寄生磁場の存在は歪みを生み出し、正確な動作にはソフトウェアによる補正が必要です。

携帯電話の最初のデジタルコンパスは、2009年にiPhone 3GS — 初の内蔵磁力計搭載スマートフォン — の発売とともに登場しました。現在、磁力計は低価格モデルを含む大多数のスマートフォンに搭載されています。Yole Groupによると、モバイルデバイス向けMEMS磁力計の市場は年間15億台を超えており、この技術の需要を裏付けています。

磁力計の動作原理

MEMS磁力計の核となるのは、外部磁場の影響で電気的特性が変化する感知素子です。最新のスマートフォンは、ホール効果または磁気抵抗効果(AMR — 異方性磁気抵抗効果)を使用しています。原理は、電流を流す材料が磁場にさらされると抵抗が変化し、電圧変化から磁場ベクトルが計算されることに基づいています。

ホール効果とAMR

ホール効果センサーは、移動する電荷に作用するローレンツ力によって半導体プレートの端に生じる電圧変化を検出します。磁気抵抗センサー(AMR)は、抵抗が磁場の方向に依存するパーマロイ(NiFe)膜を使用します。AMRセンサーはホールセンサーと比較して小型で高感度であり、そのため最新のスマートフォンで主流となっています。

タイプ感度消費電力サイズ
ホール
AMR
GMR非常に高

磁力計のデータは加速度計の測定値と組み合わされて、傾きを補正し、水平面での北方向を決定します。センサーフュージョンアルゴリズムは、MadgwickフィルターまたはKalmanフィルターを使用して、磁力計、ジャイロスコープ、加速度計のデータを統合します。これにより、高速回転やデバイスの揺れでも安定した正確な方位角が得られます。

モバイルデバイスの磁力計の種類

モバイル業界では、3つの主要なタイプのMEMS磁力計が使用されています:ホール効果、異方性磁気抵抗(AMR)、および巨大磁気抵抗(GMR)です。AMR磁力計は、感度、消費電力、コストの最適なバランスにより、スマートフォンで最も広く使用されています。主要メーカーは、AKM(Asahi Kasei Microdevices)、STMicroelectronics、およびBosch Sensortecです。

標準的なスマートフォンのAMR磁力計の感度は0.3–1 µTで、ダイナミックレンジは±1000 µT(±8 Gauss)であり、地球の磁場(30–65 µT)を正確に測定し、寄生磁場を補償するのに十分です。センサーのサンプリングレートは100–200 Hzに達しますが、ほとんどのアプリケーションはエネルギー節約のため10–50 Hzを使用します。温度と筐体の応力変形の自動補償は、センサードライバーレベルで実装されています。

デジタルコンパスのキャリブレーション

コンパスのキャリブレーションは、スマートフォンのコンポーネント(スピーカー、バイブレーションモーター、カメラ、バッテリー)が作り出す寄生磁場を補償するプロセスです。キャリブレーションがないと、磁力計の測定値が実際の方向から10–30度ずれる可能性があります。キャリブレーションシステムは、3軸のオフセット行列(ハードアイアンバイアス)を決定し、後続のすべての測定を補正するために適用します。

キャリブレーションのアルゴリズムと方法

標準的なコンパスのキャリブレーション方法は、“8の字”を描くことです:ユーザーが数字の8のような軌道でスマートフォンを回転させます。移動中、センサーは可能なすべての向きで磁場を記録し、アルゴリズムが点を蓄積して、中心がゼロからオフセットした球体を近似します。球体の半径は地球の磁場の大きさに対応し、中心は寄生オフセットベクトルを表します。近似後、システムは各軸の補正係数を計算します。

QualcommおよびMediaTekの最新のキャリブレーションアルゴリズムは、ユーザーの操作なしに継続的にバックグラウンドでキャリブレーションを実行します。デバイスの回転中の磁場の変化を分析し、自動的に補正パラメータを更新します。センサーが新しい寄生磁場(磁気ケースを取り付けた場合など)を検出すると、システムは1–2秒の連続的なデバイスの動きで再キャリブレーションを開始します。

モバイルアプリでのコンパスの使用

デジタルコンパスは、幅広いモバイルアプリケーションで使用されています。主な用途は、ナビゲーションおよびマッピングサービス(Google Maps、Yandex.Maps、2GIS)で、地図上のデバイスの向きを判断してユーザーの移動方向を正しく表示します。拡張現実(AR)アプリケーションでは、コンパスは基本的な方角に対する仮想オブジェクトの正しい配置を保証します。

天文学アプリケーション(Star Walk、SkySafari)では、コンパスが加速度計と組み合わされてスマートフォンが向いている方向を判断し、夜空の対応する領域を表示します。釣りや観光アプリは、コンパスを使用して方位基準付きで地図上の関心ポイントをマークします。GPSを使用したフィットネストラッキングは、コンパスの測定値を使用してランニングやサイクリングの方向を判断し、ルート表示の精度を向上させます。

Android API経由のコンパスの使用

Androidでデジタルコンパスにアクセスするには、Sensor APIのTYPE_MAGNETIC_FIELDセンサーを使用します。開発者は磁力計の測定値の変化のリスナーを登録し、マイクロテスラ単位の3軸の磁場強度値の配列を受け取ります。方位角を決定するために、磁力計のデータはセンサーフュージョンを使用して回転行列を介して加速度計のデータと組み合わされます。

kotlin
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager

class CompassManager(
    private val sensorManager: SensorManager
) : SensorEventListener {

    private val magnetometer = FloatArray(3)
    private val accelerometer = FloatArray(3)
    private val rotationMatrix = FloatArray(9)
    private val orientation = FloatArray(3)

    override fun onSensorChanged(event: SensorEvent) {
        if (event.sensor.type == Sensor.TYPE_MAGNETIC_FIELD) {
            event.values.copyInto(magnetometer)
        } else if (event.sensor.type == Sensor.TYPE_ACCELEROMETER) {
            event.values.copyInto(accelerometer)
        }
        
        SensorManager.getRotationMatrix(
            rotationMatrix, null,
            accelerometer, magnetometer
        )
        SensorManager.getOrientation(rotationMatrix, orientation)
        
        val azimuth = Math.toDegrees(orientation[0].toDouble())
        // 方位角: 0 = 北, 90 = 東, 180 = 南, 270 = 西
    }

    fun start() {
        sensorManager.registerListener(this,
            sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
            SensorManager.SENSOR_DELAY_UI)
        sensorManager.registerListener(this,
            sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
            SensorManager.SENSOR_DELAY_UI)
    }

    override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {}
}

getOrientationで取得した方位角はラジアンで測定され、-πからπの値を取り、0は磁北に対応します。画面表示のため、値は0–360の範囲に正規化して度(Math.toDegrees)に変換されます。磁気偏角 — 磁北と真北(地理的北)の間の角度で、地理的な位置に依存し時間とともに変化します — を考慮することが重要です。Google MapsはGeomagneticField APIを通じて偏角を自動的に調整します。

よくある質問

スマートフォンのデジタルコンパスはどのように動作しますか?

デジタルコンパスは、MEMS磁力計 — 3軸で地球の磁場を測定する2×2 mmのチップ — を使用します。磁力計のデータは、方位角 — 北方向とデバイスの向きの間の角度 — を決定するために加速度計の測定値と組み合わされます。

スマートフォンのコンパスが間違った方向を示すのはなぜですか?

コンパスの誤った測定値は、ほとんどの場合、キャリブレーション不足、スピーカーやバイブレーションモーターからの磁気干渉、および磁気ケースが原因です。解決策は、“8の字”のキャリブレーション動作を行うか、磁気アクセサリーを取り外すことです。エラーが続く場合は、センサーの点検が必要になる場合があります。

コンパスにキャリブレーションは必要ですか?また、どのように行いますか?

はい、スマートフォン内部の寄生磁場を補償するためにコンパスのキャリブレーションが必要です。最新のデバイスのほとんどでは、キャリブレーションはバックグラウンドで自動的に実行されます。手動キャリブレーションの場合は、スマートフォンで空中に“8の字”を描いてください。システムがすべての角度からデータを収集し、測定値を補正します。

Androidアプリケーションでコンパスにアクセスするには?

Androidでは、TYPE_MAGNETIC_FIELDセンサーを使用したSensor APIを通じてコンパスにアクセスできます。方位角は、磁力計と加速度計のデータを組み合わせるSensorManager.getRotationMatrix()とgetOrientation()を介して計算されます。結果の方位角は画面表示用に調整できます。

どのスマートフォンモデルが最も正確なコンパスを持っていますか?

最も正確なコンパスは、トリプルIMUセンサー(磁力計+ジャイロスコープ+加速度計)とアクティブキャリブレーションシステムを搭載したスマートフォンに搭載されています。フラッグシップのGoogle Pixel、Samsung Galaxy Sシリーズ、iPhone Proモデルがリーダーです — これらは0.3 µTの感度と自動補正を備えたAKMおよびBoschの磁力計を使用しています。

まとめ

  • スマートフォンのコンパス(デジタルコンパス)は、方位角とデバイスの向きを決定するために地球の磁場を測定するMEMS磁力計です。
  • 最新の磁力計はAMR効果(異方性磁気抵抗効果)を使用し、0.3 µTの感度と2×2 mmのコンパクトサイズを提供します。
  • 正確なコンパスの測定値には、スマートフォンのスピーカー、バイブレーションモーター、カメラからの磁場を補償するキャリブレーションが必要です。
  • 北方向はセンサーフュージョン — 傾き補正のための磁力計データと加速度計・ジャイロスコープの組み合わせ — を通じて計算されます。
  • デジタルコンパスは、ナビゲーション、マッピング、拡張現実、天文学、フィットネストラッキングで向きと移動方向を決定するために使用されます。
  • Androidでは、コンパスへのアクセスはTYPE_MAGNETIC_FIELDとgetRotationMatrixおよびgetOrientationによる方位角計算を通じて提供されます。
  • 磁気偏角(磁北と地理的北の間の角度)は、GoogleおよびAppleのナビゲーションAPIで自動的に補正されます。

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

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

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

こちらもお読みください