iOS26 「Foundation Models Framework」を試してみた
はじめに
今月リリースされたiOS26で利用可能になった、Foundation Models Frameworkを試してみました。
Foundation Models FrameworkはAppleが開発者向けに提供している、デバイス上で動作する生成AIモデルをアプリに組み込むためのフレームワークです。
Foundation Models Frameworkはテキストベースのモデルで、リクエストに基づいてテキストコンテンツを生成します。
他のLLMとの一番の違いとしては、オンデバイスで動作することだと思います。
オンデバイスで動作することには、複数の大きな利点があります。
まず、インターネット接続が不要なため、開発者はアプリにオフラインで利用可能な機能を組み込めます。さらに、ユーザーデータは端末内で処理が完結し、外部に送信されることがないため、プライバシー保護の観点からも優れています。また、オンデバイスのモデルを利用するため、利用量に応じた料金が発生せず、開発者は追加費用なしでアプリに機能を組み込むことが可能です。
一方、オンデバイスモデルのデメリットとしては、モデルが参照できる情報がモデルのトレーニング時点のものに限定され(情報の鮮度が失われやすい)、高度な計算処理や大規模なデータ処理にはデバイスの処理能力が追いつかない点などが挙げられます。
利用要件
Foundation Models FrameworkはiOS26で、Apple Intelligenceが利用可能な端末で利用できます。
開発環境としては、Xcode26が必要です。
Foundation Models Frameworkは全てのApple端末で利用できるわけでは無いので、利用可能かどうかのチェックが必要です。
SystemLanguageModel.default.isAvailable
の値で確認できます。
if SystemLanguageModel.default.isAvailable {
// 利用可
} else {
// 利用不可
}
また、SystemLanguageModel.default.availability
をチェックすることで利用不可の理由も取得できます。
switch SystemLanguageModel.default.availability {
case .available:
// Show your intelligence UI.
case .unavailable(.deviceNotEligible):
// Show an alternative UI.
case .unavailable(.appleIntelligenceNotEnabled):
// Ask the person to turn on Apple Intelligence.
case .unavailable(.modelNotReady):
// The model isn't ready because it's downloading or because of other system reasons.
case .unavailable(let other):
// The model is unavailable for an unknown reason.
}
Apple Intelligenceに対応したMac上で、OSをSequoia、Xcodeを26にして、iOS26シミュレータでアプリを実行したところ、modelNotReady
の理由で利用できませんでした。試しにMacのOSをTahoeにアップデートしたところ、シミュレータ上でFoundation Models Frameworkが問題なく利用可能になりました。
文章を要約する実装
以下、ボタンをタップすると、夏目漱石のこころの冒頭文を要約する機能を実装してみました。
import SwiftUI
import FoundationModels
struct ContentView: View {
let text: String =
"""
私はその人を常に先生と呼んでいた。
だからここでもただ先生と書くだけで本名は打ち明けない。
これは世間を憚かる遠慮というよりも、その方が私にとって自然だからである。
私はその人の記憶を呼び起すごとに、すぐ「先生」といいたくなる。
筆を執っても心持は同じ事である。
よそよそしい頭文字などはとても使う気にならない。
私が先生と知り合いになったのは鎌倉である。
その時私はまだ若々しい書生であった。
暑中休暇を利用して海水浴に行った友達からぜひ来いという端書を受け取ったので、私は多少の金を工面して、出掛ける事にした。
私は金の工面に二、三日を費やした。
"""
@State var respondContent: String = ""
var body: some View {
VStack(spacing: 20) {
Text(text)
.multilineTextAlignment(.center)
.padding(.horizontal)
Text(respondContent)
.multilineTextAlignment(.center)
.foregroundStyle(.purple)
.padding(.horizontal)
Button("要約する") {
Task {
let session = LanguageModelSession()
let prompt =
"""
以下のテキストを要約してください。重要なポイントを保持し、簡潔で分かりやすい要約を作成してください。
\(text)
"""
respondContent = try await session.respond(to: prompt).content
}
}
.buttonStyle(.borderedProminent)
.controlSize(.large)
}
.padding()
}
}
実際にFoundation Models Framework使用している箇所は以下のみなので、凄く簡単に要約の生成が出来ました。
let session = LanguageModelSession()
let prompt =
"""
以下のテキストを要約してください。重要なポイントを保持し、簡潔で分かりやすい要約を作成してください。
\(text)
"""
respondContent = try await session.respond(to: prompt).content
まとめ
Apple Intelligenceに使用されているLLMをサードパーティーアプリに組み込むためのFoundation Models Frameworkですが、謳い文句通り、導入は非常にシンプルでした。複雑な設定は不要で、数ステップのコード記述だけでオンデバイスAIの力をアプリに実装できる点は、開発者にとって大きな可能性を感じさせます。
Foundation Models Frameworkには、他にも開発効率を高める便利な機能が搭載されています。例えば、レスポンスを特定の構造体(型)で受け取れる機能や、大規模な応答をリアルタイムで処理できる段階的なレスポンスなどがあり、アプリケーションへの組み込みが非常に容易になります。
以下からSample Codeがダウンロードできるので、色々試してみたいと思います。
Discussion