WWDC Quick Look 💓 By SwiftGGTeam
プラットフォーム State of the Union

プラットフォーム State of the Union

元の動画を見る

ハイライト

Apple は Foundation Models framework を統一されたマルチモデル API へ拡張し、新しい Core AI フレームワークと強化された App Intents を追加しました。さらに Xcode 27 の agentic coding と組み合わせることで、開発者はコストを抑えて AI 機能を構築し、システムレベルの流入経路も得られます。

主要内容

大規模モデルをアプリに入れるとき、最大の壁はコスト

アプリで AI を使いたい開発者は、典型的なジレンマに直面します。OpenAI につなぐと費用がかかり、自前でデプロイすると運用が必要になり、オンデバイスモデルだけでは能力が足りません。中小規模のチームは最初の段階で止まりがちです。費用の見通しが立たず、プロジェクト自体が棚上げになります。

Apple は今年、その請求書を開発者の代わりに引き受けたような形です。Foundation Models framework に server models のサポートが追加され、Claude や Gemini などのサードパーティクラウドモデルを呼び出せます。さらに重要なのは、初回ダウンロード数が 200 万未満のアプリの開発者は、Private Cloud Compute 上で Apple Foundation Model を呼び出しても API 料金が完全に無料になることです。

つまり独立開発者でも、複雑な推論を必要とする AI 機能を今日から作り始められ、月末に高額請求が来る心配をしなくてよくなります。

アプリが見つからなければ、機能が良くても届かない

3 か月かけて AI 機能を作っても、ユーザーがその存在を知らないかもしれません。Siri はあなたのアプリで何ができるかを理解できず、Spotlight はコンテンツを検索できず、システム AI からは見えません。

今年、App Intents はシステムレベル AI の「ルーター」になりました。entity schemas と intent schemas を通じて、アプリのコンテンツは Spotlight semantic index に組み込まれ、Siri は機能を直接理解して呼び出せます。新しい View Annotations API と組み合わせると、ユーザーは画面上の内容を指して「これを Kevin に送って」と言うだけで、システムが正確に対象を特定して実行できます。

アプリは孤立した島ではなく、システムの知能ネットワークの 1 つのノードになります。

コードを書くところからテストまで、AI エージェントが一連の流れを担う

コードを書くことは開発の一部にすぎません。設計、テスト、ローカライズ、バグ修正には多くの時間がかかります。

Xcode 27 の agentic coding は、AI エージェントを開発フロー全体に参加させます。要件を説明すると、エージェントが計画を立て、コードを書き、プレビューを動かし、機能をテストし、クラッシュを修正します。Device Hub はシミュレータと実機を統一管理し、Previews は任意のプロパティのバリエーション表示に対応します。Xcode Cloud のビルド速度は 2 倍になり、App Store Connect の設定も不要になります。

開発者の役割は、「すべての行を手で書く」から「問題を説明し、方針をレビューし、結果を検証する」へ変わります。

詳細

Foundation Models framework: どのモデルも 1 つの API で呼び出す

(02:56) 今年の Foundation Models framework は、単一のオンデバイスモデルから、統一されたマルチモデル API へ拡張されました。中核となる変化は 3 つあります。

1 つ目はマルチモーダル入力です。 prompt に画像を直接添付でき、モデルはテキストと画像の内容を同時に理解します。

import FoundationModels

let session = LanguageModelSession()

func brainstormProject(image: Image, theme: String) async throws -> String {
    let prompt = Prompt(
        "この画像とテーマをもとに、折り紙プロジェクトのアイデアを3つ出してください。",
        images: [image]
    )
    let response = try await session.generateText(for: prompt)
    return response.text
}

ポイント:

  • LanguageModelSession() はモデルとやり取りするセッションを作成します
  • Prompt はテキストと画像を同時に受け取り、マルチモーダル理解を実現します
  • generateText(for:) はリクエストを送信し、生成結果を取得します

Vision framework も統合され、OCR による精密な文字抽出やバーコードスキャンなどのツールをすべてオンデバイスで提供します。

2 つ目は server models のサポートです。 複雑なタスクでは Claude や Gemini などのクラウドモデルへシームレスに切り替えられます。どのモデルプロバイダでも、Swift package を通じて Language Model protocol を実装できます。

import FoundationModels
import ClaudeProvider // サードパーティの Swift パッケージ

let profile = DynamicProfile {
    Profile("創作生成") {
        LanguageModel.claude
        Temperature(0.8)
    }
    Profile("深い推論") {
        LanguageModel.appleFoundationModel
        ReasoningLevel(.deep)
    }
}

ポイント:

  • Swift package を通じてサードパーティモデルプロバイダを導入します
  • DynamicProfile により、同じ session の中でモデルを動的に切り替えられます
  • Temperature(0.8) は生成結果の創造性を制御します

3 つ目は Dynamic Profiles です。 これは新しい宣言型 API で、同じ会話の中で場面に応じてモデル、ツール、指示を切り替えられます。

import FoundationModels

let session = LanguageModelSession(profile: origamiProfile)

var origamiProfile: DynamicProfile {
    DynamicProfile {
        Profile("創作生成") {
            LanguageModel.appleFoundationModel
            Temperature(0.8)
        }
        Profile("チュートリアル生成") {
            LanguageModel.appleFoundationModel
            ReasoningLevel(.deep)
        }
        Profile("用語解説") {
            LanguageModel.systemLanguageModel // オンデバイスモデル
        }
    }
}

ポイント:

  • 3 つの Profile は同じ連続した transcript を共有するため、コンテキストが失われません
  • 簡単なタスクはオンデバイスの systemLanguageModel を使い、複雑なタスクはクラウドを使います
  • Profile はモデルの各ターンで再計算され、常に最新状態を保ちます

(12:17) 周辺ツールも全面的に強化されました。Evaluations framework は prompt の信頼性をテストし、FM instrument はモデルの挙動を可視化してデバッグし、fm CLI はターミナルから直接モデルを呼び出せます。さらに Core Spotlight ベースのプライベート RAG ツールと、近日オープンソース化される Foundation Models Swift package も用意されます。同じ API がアプリ内でもサーバー上でも動きます。

Core AI: どんなモデルでもデバイスへ持ち込む

(13:15) 自分のモデルをデバイス上にデプロイしたいなら、Core AI が最適です。メモリ安全な Swift API、細かな量子化管理とモデル特化、カスタム GPU kernel の作成をサポートします。

付属の Python ツールは PyTorch モデルの変換と最適化に対応します。コンパイラは ahead-of-time コンパイルをサポートし、Instruments とビジュアルデバッガはテンソル値を追跡して元の Python ソースコードへ直接対応付けられます。

iPhone 上のリアルタイムビジョンモデルから、Mac 上の数十億パラメータ級 LLM agent まで、Core AI は対応できます。サーバー依存も token コストもありません。

App Intents: システム AI にアプリを発見し、使ってもらう

(14:45) App Intents の中核は schemas です。これはシステムが事前定義した構造化テンプレートで、Siri は長年の言語モデル訓練によって深く理解しています。

import AppIntents

@EntitySchema
struct MessageEntity: IndexedEntity {
    let id: UUID
    let content: String
    let sender: ContactEntity
}

@IntentSchema
struct SendMessageIntent: AppIntent {
    static var title: LocalizedStringResource = "メッセージを送信"

    @Parameter(title: "宛先")
    var recipient: ContactEntity

    @Parameter(title: "本文")
    var message: String

    func perform() async throws -> some IntentResult {
        try await MessageService.send(to: recipient, content: message)
        return .result()
    }
}

ポイント:

  • @EntitySchema@IntentSchema は、Siri がコンテンツと操作を理解できるようにします
  • IndexedEntity プロトコルはコンテンツを Spotlight semantic index に自動的に組み込みます
  • システム定義 schemas はタスク管理、写真編集、コミュニケーションなどのカテゴリをカバーします

(16:27) View Annotations API は画面上の内容と entity を関連付けます。ユーザーが「これを Kevin に送って」と言うと、システムは「これ」が画面上のどの画像を指すのか識別できます。

import SwiftUI
import AppIntents

struct MessageListView: View {
    var messages: [MessageEntity]

    var body: some View {
        List(messages) { message in
            MessageRow(message: message)
                .entityAnnotation(message)
        }
    }
}

ポイント:

  • .entityAnnotation(message) はリスト行と対応する MessageEntity を関連付けます
  • ユーザーが自然言語で画面内容を参照したとき、システムは正確に対象を特定できます
  • App Intents と組み合わせれば、ユーザーは特定のコマンドを覚える必要がありません

SwiftUI: コードは少なく、できることは多く

(29:12) SwiftUI は今年、インタラクション、速度、機能の面で実質的に改善されました。

ドラッグによる並べ替えは 1 行で実現できます。

Grid {
    ForEach(origamiModels) { model in
        OrigamiCard(model: model)
            .reorderable()
    }
}
.reorderContainer()

Swipe actions は List だけに限定されなくなりました。

ScrollView {
    ForEach(projects) { project in
        ProjectRow(project: project)
            .swipeActions {
                Button("削除", role: .destructive) { delete(project) }
            }
    }
}
.swipeActionsContainer()

(32:40) Toolbar には visibilityPriorityoverflowMenu が追加され、ウインドウが小さくなると重要なボタンは残り、二次的なボタンはメニューへ折りたたまれます。

(33:53) Document-based App には新しい基盤が用意され、ファイル URL の直接読み書き、部分更新、Observable 構成、Swift concurrency との深い統合をサポートします。

(34:25) Spatial Preview フレームワークにより、Mac App は 3D モデルを Apple Vision Pro へリアルタイムにストリーミングし、空間プレビューと編集ができます。

Swift 6.4: 日常のコーディングをより滑らかに

(38:41) Swift 6.4 は日常的な摩擦の解消に重点を置いています。

// クロスプラットフォームのバージョン宣言を短く書ける
@available(anyAppleOS, introduced: 27.0)
func newFeature() { }

// defer の中で直接 await できる
defer {
    await cleanupResources()
}

// 局所的な警告制御
#warning("一時的に旧バージョンと互換にする", as: .warning)
#warning("新しいコードではエラー処理が必須", as: .error)

ポイント:

  • anyAppleOS は各プラットフォームのバージョン番号を列挙する書き方を置き換えます
  • defer の中で直接 await を使えます
  • 警告のレベルを領域ごとに制御でき、移行期には特に役立ちます

(39:55) よく問題になる “The compiler is unable to type check this expression in reasonable time” エラーは、一般的な場面で大幅に減ります。直接コンパイルが通るか、より対応しやすいエラーメッセージが出ます。

Xcode 27: Agentic Coding の全工程

(42:47) Xcode 27 はサイズが 30% 小さくなり、Apple silicon 専用になり、コンポーネントはバックグラウンドで自動更新されます。設定は iCloud で同期されるため、新しい Mac でもワンクリックで開発環境を復元できます。新規プロジェクトでは bundle ID の入力が不要になり、テンプレートを選ぶだけでエディタに入れます。

(45:46) テーマシステムは全面的にパーソナライズされ、IDE 全体の配色をカスタマイズできます。プロジェクトごとに異なるテーマも設定できます。

(47:54) Device Hub は Simulator に代わり、シミュレータと実機を統一管理します。iOS App のサイズを動的に調整したり、システム設定を切り替えたり、Mac から実機を直接起動して操作したりできます。

(50:12) 最大の見どころは agentic coding です。/plan コマンドを使うと、エージェントが先に方針を出し、確認後に実装します。エージェントはプロジェクト構造を探索し、確認質問をし、コードを生成し、プレビューを作成します。

(53:18) エージェントは自動テストも行えます。Device Hub の中でクリック、スワイプ、入力を行い、テストレポートとスクリーンショットを生成します。ローカライズも可能で、文字列を単語単位で置き換えるのではなく、文脈を見て翻訳します。

(55:13) Organizer のクラッシュレポートはそのままエージェントに渡せます。分析、特定、再現、修正、検証まで、全工程が自動化されます。

重要な示唆

  • 「写真でカスタマイズ」するローカル EC アプリを作る: ユーザーが家の一角を撮影すると、アプリが Foundation Models のマルチモーダル能力を使って、その場面に合う家具を推薦します。オンデバイスモデルが画像理解を行い、クラウドモデルが詳しい推薦文を生成します。200 万ダウンロード未満なら無料です。

  • 自然言語で操作できるノートアプリを作る: App Intents で「ノート作成」「ノート検索」「ノート共有」などの操作を公開します。ユーザーが Siri に「さっき撮った会議のホワイトボードをノートに整理してチームに共有して」と言うと、システムが画面内容を自動認識して実行します。

  • 完全ローカルで動くプライバシー重視の AI ツールを作る: Core AI でローカル文書分析モデルをデプロイします。契約書やカルテのような機密ファイルは完全にデバイスから出ず、サーバー依存もサブスクリプション費用もありません。

  • Xcode agent で多言語ソーシャルアプリを 3 日でプロトタイプする: 要件説明から始め、エージェントに SwiftUI 画面、Foundation Models 統合、多言語対応を生成させます。エージェントは言語ごとの UI 適応をテストし、開発者はレビューと調整に集中します。

  • ユーザーが AI agent をカスタマイズできる創作ツールを作る: Dynamic Profiles を使い、ユーザーが「創作アシスタント」「校正者」「翻訳者」など複数の役割を設定できるようにします。それぞれが異なるモデルとパラメータを使い、同じプロジェクト内で協調します。

関連 Session

コメント

GitHub Issues · utterances