WWDC2025で、Foundation Models Frameworkという仕組みが発表されました。今回は、この仕組みを使って何ができるか、そして最も単純なHello World的なアプリを作ってみました。
なお、Foundation Models Frameworkを学ぶきっかけは下記のハッカソンイベントです。
Apple Foundation Models Framework ハッカソン - connpass
こちらに参加報告を書いています。よろしければご参照ください。
www.crossroad-tech.com
使用した環境
MacOS : Tahoe 26.0.1
Xcode: 26.01
iPhone 15 Pro (iOS 26.01)
1. Foundation Models Frameworkとは
AppleがWWDC 2025 (2025/6) に発表したLLMです。以下の特徴があります。
- 30億個のパラメータをもっている
- OS内蔵である
- インプットもアウトプットもテキスト (画像などは扱えない。他のフレームワークと組み合わせる必要がある)
- インターネット不要で使用できる
- 一方、インターネット経由で外部の情報を取得するための「Tool Calling」という仕組みも準備されている
詳細はこちらで紹介されています。
Foundation Modelフレームワークの紹介 - WWDC25 - ビデオ - Apple Developer
なお、昨今の状況では30億個パラメータは小さい、ChatGPTなど多くの方が使っているサービスは数千億パラメータなので、100分の1くらいとのことです。そのため、他のサービスを使うときと同じ感覚でプロンプトを作ると適切な応答が来ないときがあるそうです。
利用に癖がありますが、だからこそ面白いかなと思いました。
その他、日本語情報ではこの辺りがわかりやすかったです。 note.com
2. Foundation Models Frameworkに問い合わせて回答を得るだけのアプリを作る
Foundation Models Frameworkについては、最近少しずつ情報が増えてきました。しかし、iOS/iPadOSローカルのLLMのみに質問したら回答を得る、という最もシンプルな処理が紹介されているサイトを見つけられませんでした。
たとえば、こちらの公式ドキュメントでは、旅行の日程を提示してくるサンプルアプリのソースコードが公開されています。
こんな感じです。
アプリを開く→色々な地域の画像が表示されているので、どれかをタッチする→旅行日程案がテキストで表示される
これはこれで興味深いですが、「2000年にあった代表的な日本の出来事を教えてください」とか、任意の質問をして回答を得る、という処理は実行できません。
また、Foundation Models Frameworkを使った色々な処理が体験できるサンプルコードをGitHubで公開されている方がいらっしゃいました。
しかし、私の環境ではなぜかビルドに失敗して以下のようなエラーが出ました。Xcode 26 betaと26で何らかの表記ルールが変わったためと思いますが深追いはできていません。
Foundation-Models-Framework-Example-main/Foundation Lab/Models/DataModels.swift:223:88 Cannot infer contextual base in reference to member 'possiblyAbsent' Foundation-Models-Framework-Example-main/Foundation Lab/Models/DataModels.swift:223:88 Extra argument 'semantics' in macro expansion
ということで、問い合わせたら回答文を表示する、ただそれだけができるアプリを作ってみました。
このように動作します。
[前準備]
- Xcodeを26以上にしておく
- MacOSをTahoe 26以上にしておく
Xcodeで新規プロジェクトを作ります。Xcodeを開き、File > New > Project.. です。
このような画面が出ます。多分どのタイプでもよいですが、シンプルなAppを選んでNextを押します。
この後、Identiferを適当に設定します。私は"Webview.limes.com.FMF-TrialApp" としました。
プロジェクトが生成されると、ソースコードとしてContentView.swiftとFMF_TrialAppApp.swiftの2種類が生成されます。FMF_TrialAppApp.swiftは起動時にContentViewを呼ぶだけなので、実際の処理はContentView.swiftに書くことになります。
ということでContentView.swiftの全文です。
Claudeで作ったのと、表示がおかしいところを何度か直したのもあって、長くなっています。もう少し削れると思います。
iOS/iPad実機とMacを接続して、Sigining & CapabilitiesでAutomatic Signingを実行してProvisioning 処理を済ませてからビルドすると実機で動くようになります。
試してみると、過去の出来事、ケーキの作り方、バドミントンのやり方など、一般的な質問をすると全て回答してくれました。
一方、専門性が高い内容、たとえば医療用語とかを聞くと答えられませんでした。これは冒頭に書いたようにパラメータ数が相対的に少ないので予想通りの結果です。
3. おわりに
ひとまず最も単純な仕組みはできました、RAG (Retrieval-Augmented Generation) を活用して、自分が準備したドキュメントをもとにして回答するアプリも作ってみたので、次の記事で解説したいと思います。