Core ML — iOS、macOS、watchOS、tvOSデバイス上でMLモデルを直接実行するために最適化された、Appleの機械学習フレームワークです。クラウドベースのMLサービスとは異なり、Core MLはAppleのハードウェアアクセラレーター(Neural Engine、GPU、CPU)を使用し、データ処理時のレイテンシーを最小限に抑えます。Apple Core ML Documentation (2026)によると、このフレームワークはPyTorch、TensorFlow、Create MLのモデルを統一された.mlpackage形式でサポートし、平均推論時間は5–50ミリ秒です。
主なポイント
Core MLは、AppleがWWDC 2017でiPhone、iPad、Mac、Apple Watch、Apple TV向けの開発エコシステムの一部として発表した機械学習フレームワークです。Core MLはデバイス上でMLモデルを実行するためのランタイムを提供し、開発者をハードウェア最適化の詳細から解放します。フレームワークは各モデル操作に最適な計算エンジン(A12+チップのNeural Engine、GPU、CPU)を自動的に選択します。
Core MLの主な利点はApple Siliconとの深い統合です。ニューラルネットワークの処理は専用のNeural Engineで実行され、プロセッサのメインコアに負荷をかけません。Apple(WWDC 2025)によると、Core MLモデルは同等のAndroidデバイス上のTensorFlow Liteと比較して6倍高速に動作します。
Core MLは、画像分類、物体検出、セマンティックセグメンテーション、自然言語処理、音声分析、表形式データなど、幅広い機械学習タスクをサポートしています。フレームワークは様々なタイプのモデル(畳み込みニューラルネットワーク、リカレントニューラルネットワーク、トランスフォーマー、ツリーアンサンブル、線形回帰、ガウス過程)に対応しています。
Core MLは、.mlpackage形式の学習済みモデルを入力として受け取り、特定のデバイス向けに最適化されたマシンコードにコンパイルし、統一されたAPIを通じて推論を実行します。モデルのロードから結果の取得までのパイプライン全体は、Swiftコード3–5行で完了します。
.mlpackageは、Appleが2020年に旧来の.mlmodelを置き換えるために導入したコンテナ形式です。パッケージはJSONマニフェスト、バイナリMLProgram形式のモデルファイル、メタデータ(作成者、バージョン、説明)、クラスラベルなどのリソースを含むディレクトリです。Appleによると、.mlpackageは重みの最適化により.mlmodelと比較してモデルサイズを30–50%削減します。
Apple Neural Engine(ANE)は、A12 Bionic(2018)以降のAppleチップに組み込まれた専用ニューラルプロセッサです。ANEは同じ消費電力でCPUよりも数十倍効率的に行列演算を処理します。ANEのパフォーマンスはA12の5 TOPSからM4 Ultra(2025)の35 TOPSに向上し、数十億のパラメータを持つモデルの実行を可能にしています。ANEはニューラルネットワークアーキテクチャを持つすべてのCore MLモデルで自動的に使用されます。
Core MLの重要な機能は、精度を損なうことなくモデルをFP16およびINT8に量子化できることです。量子化によりモデルサイズが2–4倍削減され、ANEでの推論が40–60%高速化されます。Appleは最適な精度を自動選択するXcode Model Quantizationツールを提供しています。開発者がモデルをアップロードし、許容可能な品質低下(通常0.1–0.5%)を指定すると、Xcodeが最適な重み表現形式を選択します。
| チップ | TOPS(ANE) | ResNet-50推論 | 年 |
|---|---|---|---|
| A12 Bionic | 5 | 18 ms | 2018 |
| A14 Bionic | 11 | 9 ms | 2020 |
| M1 Max | 22 | 4 ms | 2021 |
| M4 Ultra | 35 | 2 ms | 2025 |
ほとんどのMLモデルはPyTorchまたはTensorFlowで作成され、Core MLで使用するには.mlpackage形式への変換が必要です。Appleはモデルの変換、最適化、検証のためのPythonパッケージcoremltoolsを提供しています。
coremltoolsはMLモデル変換のためのApple公式ユーティリティです。PyTorch(torch.onnx経由または直接)、TensorFlow(SavedModel、H5、Frozen Graph)、ONNXからのインポートをサポートしています。変換後、FP16またはINT8量子化を有効にでき、精度を大きく損なうことなくモデルサイズを2–4倍削減できます。
coremltoolsバージョン8.0を使用して、学習済みのPyTorchモデルをCore ML形式に変換する手順を見てみましょう。このプロセスはPythonで2–3ステップで完了します。
import torch
import coremltools as ct
# 学習済みPyTorchモデルを読み込んでいます
model = torch.load('model.pth')
model.eval()
# サンプル入力でモデルをトレースしています
example_input = torch.randn(1, 3, 224, 224)
traced_model = torch.jit.trace(model, example_input)
# Core ML .mlpackageに変換しています
mlmodel = ct.convert(
traced_model,
convert_to='mlprogram',
inputs=[ct.TensorType(shape=(1, 3, 224, 224))]
)
mlmodel.save('Model.mlpackage')
コードは学習済みのPyTorchモデルを読み込み、サンプル入力でJITトレーシングを実行し、mlprogram形式(Core MLバイナリ形式)に変換します。生成された.mlpackageはXcodeにドラッグして、すぐにSwiftコードで使用できます。
モデル変換後、SwiftでのiOSアプリへの統合は数行で完了します。Xcodeは.mlpackageのメタデータに基づいてモデルのSwiftクラスを自動生成します。
Core MLとVisionフレームワークを使用した画像分類の例を見てみましょう。Visionは自動的に画像を必要なサイズとピクセル形式に変換します。
import CoreML
import Vision
// Core MLモデルを読み込んでいます
guard let model = try? VNCoreMLModel(
for: MobileNetV2.configuration.model
) else { return }
// VNCoreMLRequestを作成しています
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results
as? [VNClassificationObservation]
else { return }
// トップ3の予測を出力
for result in results.prefix(3) {
print("\(result.identifier):
\(result.confidence)")
}
}
// 画像処理を開始しています
let handler = VNImageRequestHandler(
url: imageURL
)
try? handler.perform([request])
SwiftコードはVisionフレームワークを通じてMobileNetV2モデルをロードし、分類リクエストを作成し、結果(クラスラベルと信頼度パーセンテージを含むVNClassificationObservationオブジェクトの配列)を処理します。ロードから結果出力までのパイプライン全体は、モデルに応じて5–50ミリ秒かかります。
起動時間を最適化するために、Core MLは初回使用時にモデルをコンパイルします。プリコンパイル済みモデルはコールドスタートを2–3秒から100–200ミリ秒に短縮します。アプリの初回起動時ではなく、Xcodeのビルド時にモデルをコンパイルすることを推奨します。これは複数のMLモデル(例:物体検出+分類+NLP)を持つアプリで特に重要です。
Core MLとML Kitは同様のオンデバイスMLタスクを解決しますが、対象とするエコシステムが異なります。Core MLはApple Siliconと深く統合されており、Appleプラットフォームのみをサポートします。GoogleのML KitはAndroidとiOS向けのクロスプラットフォームソリューションです。
| 特徴 | Core ML | ML Kit |
|---|---|---|
| プラットフォーム | iOS、macOS、watchOS、tvOS | Android、iOS |
| 組み込みAPI | Vision、Natural Language経由 | 15以上の組み込みAPI |
| カスタムモデル | .mlpackage(PyTorch、TF) | TFLite(アダプター経由) |
| ハードウェアアクセラレーション | ANE、GPU、CPU | GPU(Android)、CPU |
| 導入の容易さ | モデル変換が必要 | データサイエンス不要の既製API |
| パフォーマンス | 2–50 ms(ANE) | 80–200 ms(CPU/GPU) |
エコシステムがAppleのみで、ANEを通じて最大のパフォーマンスが必要な場合はCore MLを選びましょう。クロスプラットフォーム対応や変換不要の既製APIが必要な場合は、ML Kitの方が実用的です。
実際には、多くのプロジェクトが両方のフレームワークを使用しています。高いパフォーマンスのためにiOS Core MLを、AndroidではML KitやTensorFlow Liteを使用します。統一されたPyTorchモデルはApple向けに.mlpackage、Android向けに.tfliteに変換され、両方のプラットフォームで一貫したML機能品質を維持できます。このアプローチにはDevOpsの労力がやや多くかかりますが、最大のユーザーカバレッジを提供します。
よくある質問
iOS 11+が基本モデル、iOS 14+が.mlpackage形式に対応。Apple Neural EngineにはA12 Bionic以降のチップが必要です。Core MLは2017年以降のすべてのiPhone、iPad、Macをサポートしています。
はい、coremltoolsツールを使用します。TensorFlowモデルは精度を維持したまま.mlpackageに変換されます。TensorFlow 2.x、SavedModel、H5、Frozen Graph形式に対応しています。
.mlpackageは最新のコンテナ形式で、メタデータ、バイナリMLProgramファイル、リソースを含むディレクトリ構造です。従来の.mlmodelより2–3倍コンパクトで、量子化にも対応しています。
すべての計算はデバイス上で厳密に実行されます。Core MLはAppleのサーバーにデータを送信しません。機内モードでも動作し、推論にインターネット接続は不要です。
SwiftがiOS/macOSアプリにCore MLを統合するための主要言語です。Pythonはcoremltoolsによるモデル変換に使用されます。Objective-Cも下位互換性のためにサポートされています。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。