AppleがFoundation Modelsフレームワークをオープンソース化
Appleは今夏、Foundation Modelsフレームワークをオープンソース化することを表明しました。これにより、アプリから呼び出すのと同じSwift APIを、自分のサーバー上でも動作させられるようになります。1 Platforms State of the Unionで、Appleはこの動きを率直にこう位置づけました。「さらに、私たちは大きなことを進めています。今夏のうちに、このフレームワークはオープンソースになります。アプリで使っているのと同じSwift APIが、サーバー上でも動作するようになり、Swiftをデプロイするあらゆる場所で、完全なエンドツーエンドのAIワークフローを実現できるのです。」1 この発表と並行して、同じ週にコンパニオンとなるSwiftパッケージがGitHubに登場し、Skills API、履歴管理ツール、そしてFoundation Modelsのプログラミングモデルを任意のchat-completionsエンドポイントへ向けるためのモデルアダプターを備えています。2 フレームワーク本体は今夏の約束のままですが、ユーティリティパッケージは今すでに公開されています。
12:44のオープンソース発表シーン。
TL;DR
- AppleはFoundation Modelsフレームワークを「今夏のうちに」オープンソース化し、同じSwift APIがサーバー上で動作して「Swiftをデプロイするあらゆる場所で、完全なエンドツーエンドのAIワークフロー」を実現できるようにします。1 このフレームワークは現時点ではオープンソースではありません。
- 別のオープンソースSwiftパッケージ
FoundationModelsUtilitiesは、すでにApache-2.0ライセンスでGitHubに公開されており、Apple各プラットフォームとUbuntuなど一部のLinuxディストリビューションをサポートしています。2 - このパッケージはSkills APIを提供します。result builderで構築され
DynamicInstructionsに準拠するSkills型が、タスク固有の指示をジャストインタイムでセッションのトランスクリプトに注入し、コンテキストの汚染を防ぎつつtime-to-first-tokenを最適化します。2 - また、履歴管理のためのprofile modifier(完了したツール呼び出しの破棄、ローリングウィンドウ、要約)と、chat completions REST APIを話す任意のサーバーと通信する
ChatCompletionsLanguageModelも提供します。2 - このパッケージは、Xcodeツールチェーンのskills、Game Porting Toolkitのskillsに続く、今回のWWDCで3つ目のskills提供であり、リポジトリ自身はそのパターンを「emerging and experimental(生まれつつある実験的なもの)」と表現しています。2
フレームワークは今夏オープンソースになる
見出しはダウンロードではなく、日付です。State of the Unionの12:44あたりで、Appleはタイムラインとその意味を2つの文で示しました。「今夏のうちに、このフレームワークはオープンソースになります。アプリで使っているのと同じSwift APIが、サーバー上でも動作するようになり、Swiftをデプロイするあらゆる場所で、完全なエンドツーエンドのAIワークフローを実現できるのです。」1 デバイス上でLanguageModelSessionからすでに呼び出しているフレームワークが、Swiftが動作する場所ならどこでも、つまり自分で管理するサーバー上でも動かせるものになるのです。
これによって得られるのは対称性です。Appleは今年、Foundation Modelsが向かう先を広げることに注力してきました。オンデバイスモデル、Private Cloud Compute、そしてGeminiやClaudeといったサードパーティモデルについては、Foundation ModelsとPrivate Cloud Computeで扱いました。フレームワークのオープンソース化は、その到達範囲を逆方向に、デバイスの外へと完全に広げます。セッションではこう述べられています。「Foundation Modelsフレームワークが、サードパーティモデル、Private Cloud Compute、オンデバイスモデルにどう接続するかをご覧いただきました。仕事に適したモデルを選ぶための柔軟性が、皆さんの手にあります。」1 オープンソース化という一歩は、2つではなく1つのプログラミングモデルがクライアントとサーバーの両方にまたがることを意味します。
正確に押さえておくべき注意点があります。フレームワークはまだオープンソースではありません。Appleは「今夏のうちに」と述べており、率直に読めば、これは季節を添えた約束であって、今日何かが出荷されたわけではないということです。以下で説明するパッケージは別の成果物であり、両者を混同すると、現時点で存在するものを過大に見積もることになります。
すでに公開されているユーティリティパッケージ
今日クローンできるのはFoundationModelsUtilities、GitHubにApache-2.0ライセンスで公開されているオープンソースのSwiftパッケージです。2 これはApple各プラットフォームとUbuntuなど一部のLinuxディストリビューションをサポートしており、この点が重要なのは、フレームワーク本体が今夏に取るクロスプラットフォームの方向性を予感させるからです。2 そのSwift-on-Ubuntuのパスをローカルで試したいなら、container machineを1つ作るだけで済みます。リポジトリをマウントした、Mac上の永続的なUbuntu環境です。リポジトリは内容を「emerging and experimental patterns(生まれつつある実験的なパターン)」と説明しているので、APIは凍結された取り決めではなく、Appleが舵を切ろうとしている方向のプレビューとして扱ってください。2
State of the Unionは、このパッケージを直接紹介しました。「私たちは新しいオープンソースのSwiftパッケージを導入します。skillsのような概念や、コンテキスト管理のためのユーティリティを使い始めるのに役立つ、ビルド済みのツールが満載です。」1 Appleは具体例を実際のアプリに即して示しました。「Tiimoのようなタスク管理アプリは、このパッケージを使って、ユーザーのデータに合わせてトーンや推奨を適応させるskillを取り込み、1日を乗りこなす手助けとなるパーソナライズされたブリーフを届けられます。」1 同じ箇所で、その土台となるものにも名前が付けられました。「オープンソースパッケージのこれらのユーティリティは、Dynamic Profilesと呼ばれる新しい基本的な構成要素で作られています。」1
その約束を担うのは3つのコンポーネントで、それぞれがエージェント型Swiftアプリの実際の問題に対応します。
Dynamic Profilesの上に築かれたSkills API
1つ目のコンポーネントはSkills APIです。このパッケージは、DynamicInstructionsに準拠しresult builderで構築されるSkills型と、現在どのskillがアクティブかを追跡するSkillActivations型を定義しています。2 個々のSkillはpromptまたはinstructionsで初期化し、セッションの途中で取り外し可能にすべきskillにはallowsDeactivation: trueを指定できます。2
興味深いのはその目的です。skillはLanguageModelSessionのトランスクリプトに、タスク固有の指示をジャストインタイムで追加します。これにより、そのターンが必要としない指示でトランスクリプトが埋まるのを防ぎます。2 そこから2つの具体的な利点が生まれます。セッションがコンテキストの汚染を避けられること、そしてtime-to-first-tokenが最適化されることです。トランスクリプトが短く関連性の高いものであれば、モデルが応答を始める前に処理する時間が短くなるからです。2 Skills APIは、指示が意味を持つ瞬間にスコープを絞った、ジャストインタイムの注入メカニズムなのです。
それを可能にするのがDynamic Profilesです。3日目の振り返りで、Swift Intelligence FrameworksのSenior Engineering Managerを務めるLori Hylan-Cho氏は、skillsをそのプリミティブの真上に位置づけました。「私たちはDynamic Profilesも提供しています。これはskillsのような高次のものを支える、いわば基盤技術のようなものです。skills自体もパッケージとしてリリースするので、それを使うことも、skillsのような独自の抽象化を構築することもできます。」3 この言い回しは正確です。Appleはskillsを1つのパッケージとして出荷し、開発者がそのパッケージを使うか、同じDynamic Profilesの土台の上に独自の抽象化を構築するかのいずれかを想定しているのです。
profile modifierとしての履歴管理
2つ目のコンポーネントは、コンテキスト問題のもう半分、つまりエージェント型ループが走るにつれて際限なく膨らんでいくトランスクリプトを管理します。このパッケージは履歴管理用のprofile modifierを提供し、READMEは3つの戦略を挙げています。2 完了したツール呼び出しの破棄は、結果がもはや不要になった完了済みのツール呼び出しのやり取りを取り除きます。ローリングウィンドウ戦略は、トランスクリプト全体ではなく、最近の履歴の限られた一部を保持します。要約は、古いターンを、モデルがなお推論できる短い形に圧縮します。2 いずれも同じダイヤルのつまみであり、トランスクリプトを情報量のあるまま保ちつつ、モデルが効率的に処理できる範囲を超えて膨れ上がらせないようにするものです。
WWDC 2026のラボが、要約modifierの挙動を補ってくれました。WWDC 2026 Coding Intelligence, Machine Learning & AI Group Labをローカルで文字起こしした録音からの言い換えですが、パネルは、各promptの冒頭でトランスクリプトのサイズを確認し、開発者が設定したしきい値を超えたら、古い履歴を1つの要約済みエントリにまとめ、そこから続行する仕組みを説明しました。6 パネルは、これを採用するうえで重要な2点を挙げました。このmodifierはAppleのモデルに限らず、どんなバックエンドでも動作します。言語モデルプロトコルに準拠するものなら何でも、これらのユーティリティを無償で継承できるからです。6 そしてパネルは、パッケージ全体を律する設計原則を述べました。ユーティリティに組み込まれたあらゆるprompt(要約promptを含む)は、開発者が上書きできなければならない、というものです。つまり、出荷時のデフォルトは、受け入れるべき固定の振る舞いではなく、調整するための出発点なのです。6
chat-completionsアダプター、その本命
3つ目のコンポーネントは、静かに最も多くをこなすものです。ChatCompletionsLanguageModelは、chat completions REST APIを話す任意のサーバーと通信し、guided generationにも対応します。2 その含意は大きなものです。Foundation Modelsのプログラミングモデル、つまりセッション、ツール、instructionsを、Appleのモデルに限らず、任意のchat-completionsエンドポイントへ向けられるのです。
自然な組み合わせはローカルなものです。MLX-LM Serverは、Mac上でchat-completions互換のHTTPサーバーとして動作します。これはMLXでMac上でエージェント型AIを動かすで扱いました。ChatCompletionsLanguageModelをローカルのMLXサーバーに接続すれば、Foundation Models APIの表面が、自分自身のハードウェア上で完全に動作するモデルを駆動するようになります。代わりにクラウドのエンドポイントへ向ければ、同じコードがホスト型のモデルを呼び出します。このアダプターこそが、「Foundation Models」をAppleのモデルを指す名前から、好きな場所へ向けられるプログラミングモデルへと変えるものなのです。
この任意バックエンド説には、すでに名前の付いた、出荷済みの実例があります。AnthropicはClaudeForFoundationModelsを提供しており、これは「Claude support for Apple Foundation Models」と説明されるApache-2.0パッケージです。Claudeをフレームワークの言語モデルプロトコルに準拠させ、LanguageModelSessionが、Appleのオンデバイスモデルを駆動するのと同じやり方でそれを駆動できるようにします。5 これはサードパーティによって具体化されたアダプターパターンです。フレームワークが公開するプロトコルを実装した、今日クローンできる生きたバックエンドなのです。Apple自身は、Xcodeにおける、Anthropic、OpenAI、Googleのための組み込み統合に名前を付け、State of the UnionではGoogleとの提携を直接発表しました。プロトコルにとっての要点は、どの場合でも同じです。フレームワークが継ぎ目を定義し、バックエンド(Appleのものであれ、誰のものであれ)がそれを埋めるのです。
トークンの計上と、向き合うべき予算
履歴管理が意味を持つのは、予算が小さいからにほかなりません。そして今年、フレームワークは、その予算をどれだけ消費しているかを正確に確認する手段を提供します。LanguageModelSession.Responseは、iOS 27(beta)で新たに追加されたusageプロパティを備えるようになり、「この応答で使用されたトークン数に関する情報」として文書化されています。4 すでに受け取っている応答からこれを読み取るので、使用量の計上は、別途測定パスを必要とすることなく、作業に付随して得られます。
WWDC 2026のラボが、ドキュメントが省いている肌触りを補ってくれました。WWDC 2026 Coding Intelligence, Machine Learning & AI Group Labをローカルで文字起こしした録音からの言い換えですが、パネルは、response.usageが入力と出力のトークン数、キャッシュされたトークン数、そして推論モデルの場合は出力トークンのうちどれだけが推論に使われ、どれだけが最終的な回答に使われたかを報告すると説明しました。6 パネルはトークンの計上を非常に要望の多かった機能と呼び、トークンをカウントするシンボルとシステムモデルのコンテキストサイズを読み取るシンボルは先んじてiOS 26.4で登場しており、今年response.usageがその全体像を完成させたと述べました。6
カウントを知ることが役立つのは、上限を知っている場合に限られます。そしてラボはそれを率直に示しました。同じ録音からの言い換えですが、オンデバイスモデルのコンテキストサイズは4096トークンのまま変わらず、これは入力と出力で共有されるウィンドウです。パネルが述べたように、おおよそ4,000トークンを入力すると、応答に残るのは約96トークンとなります。6 Private Cloud Computeは上限を32Kに引き上げますが、これも入力と出力をまたいで共有される予算です。6 これらの数字が、履歴管理modifierがその地位に値する理由を説明しています。4096トークンの共有ウィンドウでは、抑制なく膨らむトランスクリプトは、ただ遅くなるだけでなく、応答が必要とする余地を圧迫します。これこそが、破棄・ローリング・要約の各戦略が防ぐために作られた、まさにその失敗なのです。
1つのWWDCで3つ目のskills提供
Appleは今回のWWDCで、skillsを3つの異なる形で出荷し、ユーティリティパッケージはその3つ目です。Xcode 27のツールチェーンは、xcrun agent skills exportで取り出せるSwiftUIのagent skillsを同梱しています。これはXcode 27はどこへでもエクスポートできるAgent Skillsを出荷で扱いました。Game Porting Toolkit 4は、MetalとMetalFXの移植skillsを、GitHubマーケットプレイスからClaude Codeプラグインとして配布します。これはGame Porting Toolkit 4:Mac上のエージェント型ゲーム移植で扱いました。Foundation Modelsのユーティリティパッケージは、3つ目の形を加えます。ランタイムコードとしてのSkill API、つまりエクスポートするmarkdownファイルやインストールするプラグインではなく、自分のアプリの中で組み立てるSwiftの型です。
3つの提供は、異なる問いに答えます。XcodeのskillsとGPTKプラグインは、Appleの専門知識を、自分が動かすどんなエージェントにも配布します。ユーティリティパッケージは、自分のセッションの中で、自分のデータに対して、自分のアクティベーションロジックで、skillsを著述しアクティブ化するための構成要素を与えてくれます。Appleは、Loriが述べたのと同じDynamic Profilesの土台の上で、キュレートされた知識と、独自のものを構築する仕組みの両方を出荷しているのです。3
Key Takeaways
AI機能を構築するSwift開発者向け:
- クライアントとサーバーをまたぐ1つのプログラミングモデルを前提に計画してください。Foundation Modelsフレームワークは「今夏のうちに」オープンソースになるので、今日書くSwift APIが、その時サーバーサイドで動作するものになります。1 現在の機能ではなく、ロードマップ上の約束として扱ってください。
- FoundationModelsUtilitiesを今クローンして、Skills APIと履歴管理modifierをプレビューしてください。ただし、リポジトリの「emerging and experimental」という位置づけは、その表面が変わりうるというシグナルとして読んでください。2
コンテキストとコストを管理するチーム向け: - すべての指示をトランスクリプトに前もって詰め込むのではなく、Skills APIに手を伸ばして、タスク固有の指示をジャストインタイムで注入してください。これにより、コンテキストの汚染が減り、time-to-first-tokenが改善します。2 - 履歴管理modifier(完了したツール呼び出しの破棄、ウィンドウのローリング、要約)を適用して、長いエージェント型ループがモデルの実効コンテキストを超えて膨らまないようにしてください。2
ローカルまたはサードパーティのモデルを動かす開発者向け:
- ChatCompletionsLanguageModelを使って、Foundation Modelsのプログラミングモデルを、Mac上のローカルなMLX-LM Serverを含む任意のchat-completionsエンドポイントへ向けてください。これにより、1つのAPIの表面で、オンデバイス・ローカルサーバー・クラウドのモデルを駆動できます。2
FAQ
Foundation Modelsフレームワークは今日オープンソースですか?
いいえ。WWDC 2026でAppleは、フレームワークが「今夏のうちに」オープンソースになり、同じSwift APIがサーバー上で動作して「Swiftをデプロイするあらゆる場所で、完全なエンドツーエンドのAIワークフロー」を実現すると述べました。1 発表時点では、これはタイムライン付きの約束であって、出荷されたリリースではありません。今すぐ使えるのは、GitHubにある別個のユーティリティパッケージです。2
FoundationModelsUtilitiesパッケージとは何ですか?
FoundationModelsUtilitiesは、GitHubにあるオープンソースのSwiftパッケージで、Apache-2.0ライセンスのもと、Apple各プラットフォームとUbuntuなど一部のLinuxディストリビューションをサポートします。2 Skills API、履歴管理用のprofile modifier、そしてChatCompletionsLanguageModelアダプターを提供します。リポジトリは内容を「emerging and experimental patterns」と説明しています。2 このパッケージはフレームワークとは別個のものであり、オープンソース化されるフレームワークそのものではありません。
Skills APIはどのように動作しますか?
このパッケージは、result builderで構築されDynamicInstructionsに準拠するSkills型と、アクティブなskillを追跡するSkillActivations型を定義しています。2 Skillはpromptまたはinstructionsで初期化し、allowsDeactivation: trueを設定できます。skillは、タスク固有の指示をLanguageModelSessionのトランスクリプトにジャストインタイムで注入し、コンテキストの汚染を防ぎつつtime-to-first-tokenを最適化します。2 skillsはDynamic Profilesの上に築かれており、Appleはこれをskillsのような高次のもののための「基盤技術」と説明しています。3
Apple以外のモデルでFoundation Modelsを使えますか?
はい、パッケージのChatCompletionsLanguageModelを通じて使えます。これは、chat completions REST APIを話す任意のサーバーと通信し、guided generationにも対応します。2 Mac上のローカルなMLX-LM Serverやクラウドのエンドポイントへ向けられるので、Foundation Modelsのプログラミングモデルが、Apple自身のものを超えたモデルを駆動します。
このパッケージは、AppleのほかのWWDC 2026のskillsとどう関係しますか?
このパッケージは、今回のWWDCで3つ目のskills提供です。Xcode 27は、xcrun agent skills exportでエクスポートするSwiftUIのskillsを同梱し(agent skillsエクスポートの記事で扱っています)、Game Porting Toolkit 4は、移植skillsをClaude Codeプラグインとして出荷します(GPTK 4の記事)。ユーティリティパッケージは、Dynamic Profilesの上に築かれた、自分自身のアプリの中で組み立てるランタイムのSwiftコードとしてのSkill APIを提供する点で異なり、これにより独自のskillsを著述しアクティブ化できます。2
オープンソース化という一歩は、Appleが今年デバイスに向けて築いてきたのと同じ到達範囲を広げます。Foundation ModelsとPrivate Cloud Computeは、フレームワークがすでにまたいでいる、オンデバイス、Private Cloud Compute、サードパーティモデルのパスを扱っています。同じ「Swiftアプリを超えたFoundation Models」という方向性は、PythonからのFoundation Models:fm CLIにも現れています。そこでは、同じモデルが、Xcodeの外でシェルコマンドにも、PythonのLanguageModelSessionにも応答します。skills戦略は、Xcode 27はどこへでもエクスポートできるAgent Skillsを出荷のXcodeツールチェーンから、MLXでMac上でエージェント型AIを動かすのローカルモデルとの組み合わせまで、WWDC全体を貫いています。後者では、MLX-LM ServerがChatCompletionsLanguageModelに呼び出すchat-completionsエンドポイントを与えます。シリーズ全体のハブはApple Ecosystem Seriesです。
References
-
Apple, WWDC 2026 session 102, Platforms State of the Union. Source for the open-source commitment (“Later this summer, the framework will be open source. So the same Swift APIs you use in your app can now run on your server too, giving you a complete end-to-end AI workflow anywhere you deploy Swift”), the package introduction (“we’re introducing a new open source Swift package, loaded with pre-built tools to help you get started with concepts like skills and utilities for context management”), the Tiimo example, the flexibility framing (“You’ve seen how the Foundation Models framework connects to third-party models, Private Cloud Compute, and the on-device model”), and the statement that “these utilities from the open source package are created with new fundamental building blocks called Dynamic Profiles.” ↩↩↩↩↩↩↩↩↩↩
-
Apple, foundation-models-utilities. Source for the package name
FoundationModelsUtilities, the Apache-2.0 license, support for Apple platforms and select Linux distributions like Ubuntu, the “emerging and experimental patterns” framing, the Skills API (theSkillstype conforming toDynamicInstructionsbuilt with a result builder,SkillActivationstracking active skills, individualSkillobjects initialized with a prompt or instructions, the optionalallowsDeactivation: true, and the just-in-time transcript injection that prevents context pollution and optimizes time-to-first-token), the history-management profile modifiers (dropping completed tool calls, rolling-window strategies, and summarization), and theChatCompletionsLanguageModelthat communicates with any server using the chat completions REST API with optional guided generation. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, WWDC 2026 session 398, Dub Dub Daily: Day 3. Source for the Lori Hylan-Cho interview, in which the Senior Engineering Manager for Swift Intelligence Frameworks describes Dynamic Profiles as “kind of a foundational technology for sort of higher order things like skills, which we’re also releasing as a package, so that people can use those or build their own abstractions like skills.” ↩↩↩
-
Apple Developer Documentation:
LanguageModelSession.Response.usage(iOS 27.0 beta). “Information about how many tokens were used by this response.” A property onLanguageModelSession.Response, new in iOS 27 (beta). ↩ -
Anthropic,
ClaudeForFoundationModels. Apache-2.0, described as “Claude support for Apple Foundation Models.” The package conforms Claude to the Foundation Models framework’s language model protocol, so aLanguageModelSessiondrives it the same way it drives Apple’s on-device model. A live third-party backend implementing the framework’s language model protocol. ↩ -
Apple, WWDC 2026 lab 8121, Coding Intelligence, Machine Learning & AI Group Lab. Paraphrased from a locally transcribed recording of the WWDC 2026 Coding Intelligence, Machine Learning & AI Group Lab; Apple published no captions for the labs, so the wording here is a paraphrase, not a quotation. Source for the panel’s description of
response.usagereporting input and output tokens, cached tokens, and the reasoning-versus-answer split for reasoning models; the characterization of token accounting as a highly requested feature; the note that token-counting and context-size symbols arrived in iOS 26.4; the on-device model’s unchanged 4096-token shared input-plus-output window (roughly 4,000 tokens in leaving about 96 for the response) and the 32K shared budget on Private Cloud Compute; the summarization modifier collapsing older history into a single entry past a developer-set threshold and working with any backend; and the design principle that any prompt baked into the package must be overwritable by the developer. ↩↩↩↩↩↩↩