コンテンツにスキップ
Dev Classmethod Jp Articles Foundation Models Multimodal Ringfit

Foundation Models のマルチモーダル機能でリングフィットアドベンチャーのリザルト画面から運動記録を取り出してみた

  • URL: https://dev.classmethod.jp/articles/foundation-models-multimodal-ringfit
  • 日付: 2026-06-19
  • Tier: Tier 2
  • 要旨: Apple の Foundation Models(iOS 27 Beta)のマルチモーダル機能を使って、リングフィットアドベンチャーのスクリーンショットから活動時間・消費カロリー・走行距離を構造化データとして抽出する iOS アプリを実装。初期設計では「読み取り+変換を同時に委ねる」と誤読・nil 生成が起き、分・秒を分離した設計と Bool による nil 回避が有効だった。

詳細

検証環境:MacBook Pro M2 Pro / macOS Tahoe 26.4.1 / Xcode 27.0 Beta / iPhone 16e(iOS 27.0 Beta)。

失敗した設計:

  • totalActivitySeconds: Int(分秒の変換をモデルに委ねた)→「13分11秒」を781秒と誤読(正解791秒)
  • runningDistanceKm: Double? でオプショナル → モデルが nil の代わりに -1.00.0 を返す

成功した設計:

  • activityMinutes: IntactivitySeconds: Int に分離し、0〜59の範囲 を description に明記 → アプリ側で minutes * 60 + seconds を計算
  • runningDistanceAvailable: BoolrunningDistanceKm: Double のペア化 → nil の代わりに Bool で存在判定

フォールバック設計として #available(iOS 27, *)SystemLanguageModel.default.isAvailable → catch の 3 層で Vision.framework OCR へのフォールバックを実装している。

@Guide の description は日本語でも英語と同等の精度が出ることを確認(ただし複雑な条件分岐では差が出る可能性あり)。