◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SDK 58 — Beta が 09/15 から。stable の案内はまだなく、Expo Go でのプロジェクト実行は 09/03 からログインが必要です●WIDGET — iOS のウィジェットが本番ビルドだけ真っ黒になる原因を追った報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-04-24上級

Rork Max の Machine Learning 最適化 — Core ML 統合・端末別パフォーマンス調整・量子化からサイズ削減まで

Rork Max で生成した iOS アプリに Core ML を統合して、端末上で推論を動かすときの最適化手順を網羅的にまとめました。モデル変換・量子化・Neural Engine 最適化・バッテリー消費抑制まで、実アプリで詰まるポイントを実装レベルで解説します。

rork59rork-max41machine-learningcore-mloptimization4neural-engineios12

✦ プレミアム記事

Rork Max で AI 機能を組み込んだアプリを作ろうとすると、遅かれ早かれ「端末上で機械学習モデルを動かしたい」という場面に突き当たります。オンデバイス推論の魅力は、ネットワーク依存がない、レイテンシが圧倒的に低い、プライバシーが守れる、API コストがゼロという 4 点で、これらを兼ね備えるためには Apple の Core ML を使うのが最短ルートです。

しかし Rork Max で生成した SwiftUI アプリに Core ML モデルを入れる作業は、思っているほど直線的ではありません。モデル変換・ターゲット設定・Compute Units の指定・量子化・バッテリー消費の抑制・新旧端末での差異 — これらを一つずつ押さえていかないと、「モデルは動いているが異常に遅い」「特定機種で落ちる」「バッテリー消費が激しくて App Store レビューで指摘される」といった症状に陥ります。

ここで整理するのは私自身が Rork Max で生成した個人アプリに Core ML を統合してきた中で整理した、実装レベルでの最適化手順をまとめます。単なる Core ML 入門ではなく、Rork Max 生成物と組み合わせたときに特有の落とし穴 を含めて深掘りします。

1. Core ML 統合の全体像と Rork Max 特有の前提

Core ML の統合は、大きく 5 つのフェーズに分かれます。①モデルの調達または学習、②Core ML 形式への変換、③Xcode プロジェクトへの追加、④Swift からの推論呼び出し、⑤端末別パフォーマンス調整。Rork Max で生成したプロジェクトの場合、③以降を自分で行うことになります。

Rork Max の現状のテンプレートは、Core ML の統合を前提とした初期コードを生成しないため、後から自分でモデルを追加する形になります。これは一見面倒に見えますが、モデルを差し替えたときにコードが壊れにくい、という意味ではむしろ健全な構造です。

最初の一歩は、.mlmodel または .mlpackage ファイルを Xcode プロジェクトに追加することです。Rork Max が生成したプロジェクトの場合、ルートの SwiftPackage のような場所にモデルを入れると、Xcode が自動的に <ModelName>.swift という型安全なラッパーコードを生成します。これを Swift コードから呼び出すことで、文字列ベースの入出力ではなく、型付きの入出力で推論を扱えます。

2. モデル変換: PyTorch / TensorFlow から Core ML へ

既存のモデルを使う場合、ほとんどは PyTorch または TensorFlow 形式で手元にあります。Core ML に変換するには coremltools を使います。

import coremltools as ct
import torch
 
# PyTorch モデルを読み込み
model = torch.load("my_model.pt", map_location="cpu")
model.eval()
 
# トレース
example_input = torch.rand(1, 3, 224, 224)
traced_model = torch.jit.trace(model, example_input)
 
# Core ML に変換
mlmodel = ct.convert(
    traced_model,
    inputs=[ct.ImageType(name="input", shape=(1, 3, 224, 224), scale=1/255.0)],
    convert_to="mlprogram",
    compute_precision=ct.precision.FLOAT16,
    minimum_deployment_target=ct.target.iOS17,
)
mlmodel.save("MyModel.mlpackage")

ここでのポイントは 3 つあります。convert_to="mlprogram" は Core ML の新しい形式(Xcode 13 以降)で、旧来の NeuralNetwork 形式より高速化と柔軟性が向上しています。compute_precision=ct.precision.FLOAT16 は推論時の精度を float32 から float16 に落としてモデルサイズを半分にします。minimum_deployment_target はその iOS バージョンで使える最適化を有効化します。

Rork Max で Deployment Target を iOS 17 以上に設定しているなら、ここでも iOS17 を指定するのが最適です。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦Rork Max で生成した SwiftUI アプリに Core ML モデルを統合する正しい手順と、ビルド時に詰まるポイントの回避
✦量子化(float16 / int8 / パレット化)の使い分けと、iPhone の世代別に最適なモデルサイズの選び方
✦Neural Engine を確実に使うための Compute Units 指定、バッテリー消費を抑えつつスループットを上げる実装パターン
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ 開発ツール2026-05-20
iOS の 0x8badf00d ウォッチドッグ強制終了に Rork アプリが落ちるときの対処
Rork で作った iOS アプリが起動直後に消える。クラッシュログに 0x8badf00d。Apple のウォッチドッグが React Native の重い初期化を切ったときの正しい直し方を、私の運用中アプリで実際に効いた手順で説明します。
⬡ 開発ツール2026-04-24
Rork アプリのバイナリサイズが 150MB を超えた時に切り分ける 5 つの要因と実践的な削減手順
Rork で生成したアプリが 180MB まで膨らみ、App Store Connect の警告で止まった経験から、原因を 5 要素に分解して 69MB まで落とすまでの手順を、実測値と失敗した箇所も含めて共有します。
◉ AI モデル2026-03-28
Rork × Core ML カスタムモデル開発 × オンデバイスAI
Create ML で学習したモデルを Core ML に載せ、Rork Max のアプリで動かすまでの実装記録です。推論先を端末とクラウドへ振り分けるルーター、量子化によるサイズ削減、Vision / Natural Language 連携、OTA でのモデル差し替えを実測値とともに扱います。