Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Foundation Models触ってみた - iPhone Dev Sapporo — W...
Search
Shuhei Shitamori
June 27, 2025
Programming
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Foundation Models触ってみた - iPhone Dev Sapporo — WWDC25 Recap
Shuhei Shitamori
June 27, 2025
More Decks by Shuhei Shitamori
See All by Shuhei Shitamori
その画像、 誰が‧いつ‧どこで‧どう作った? モバイルアプリで扱うC2PAとコンテンツの来歴
shitamori1272
0
45
Photography is Dead?
shitamori1272
1
100
Vision Proで実現する 『ながら運動』健康促進術
shitamori1272
0
160
時差×英語×リモートでの コミュニケーション術
shitamori1272
0
93
写真はもう信用できない?フェイク検出から来歴証明へ
shitamori1272
1
95
Apple SharePlayで 非対称クロスプレイ チャレンジ (SharePlay使ってみた編)
shitamori1272
0
200
Vision Proで広告フリーな世界を実現したい
shitamori1272
0
260
Wallet API, Verifier APIで実現するIDカード on iPhoneの世界
shitamori1272
1
3.7k
Other Decks in Programming
See All in Programming
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
290
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
420
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
110
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
240
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
410
速習iPhone Duo対応
yuukiw00w
1
510
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
230
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
4.6k
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
170
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
140
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.4k
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
270
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.9k
Navigating Weather and Climate Data
rabernat
0
520
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
300
For a Future-Friendly Web
brad_frost
183
10k
Docker and Python
trallard
47
4.2k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Transcript
Apple Foundation Models 触ってみた WWDC 2025 - Foundation Models Framework
1
自己紹介 カナダのデジタルID スタートアップで働くiOS エンジニア 個人でVison Pro を購入、仕事に活かせないか模索中 経歴 北海道大学院 HCI
研: iPad 向けの透明なキーボードの提案 ヤフー株式会社( 現LY): 地図アプリ開発, R&D カナダへ移住してデジタルID スタートアップへ転職 帰国しフリーランスとして活動中 2
アジェンダ 1. Foundation Models フレームワーク概要 2. 主要機能と特徴 3. Guided Generation
(構造化生成) 4. Tool Calling (ツール呼び出し) 5. 実装例の紹介 6. まとめ 3
NotebookLM を作成しました Foundation Models に関する公式ドキュメントを詰め込みました。 不明瞭な点や疑問があった際に活用してください。 4
Foundation Models Framework とは アプリから利用できるオンデバイス大規模言語モデル 完全にプライベート - 第三者サーバーへの送信なし 無料 -
API コストなし オフライン動作 - ネット接続不要 import FoundationModels let session = LanguageModelSession(model: .default) let response = try await session.respond(to: "Swift でファイルを読み込む方法を教えて") print(response.content) // "Swift でファイルを読み込むには、FileManager を使用します。" 5
最低限の利用に必要なクラスは2 つのみ SystemLanguageModel 30 億パラメータの2 ビット量子化モデル (ChatGPT3.5 は3550 億) 現在提供されているモデルはgeneral
とcontentTagging の2 つ LanguageModelSession モデルとの対話セッションを管理 プロンプトの送信、応答の受信 6
基本的な使用方法 import FoundationModels // フレームワークのインポート let model = SystemLanguageModel.default //
指示を与えてセッションを作成 let session = LanguageModelSession( model: model, instructions: Instructions(" あなたは親切なSwift プログラミングの先生です。質問には1 行以内に簡潔に答えてください。") ) // プロンプトを送信して応答を受け取る let response = try await session.respond(to: "Swift でファイルを読み込む方法を教えて") print(response.content) // `FileManager` を使用してファイルを読み込むことができます。 // 過去の会話を再利用して質問に答えられる let response2 = try await session.respond(to: " もういっかい教えて。") print(response2.content) // `FileManager` を使用してファイルを読み込む方法です: ... 複数行のコード例が返される 誤動作を抑えるためInstructions はユーザーには触らせない 7
Foundation Models を拡張する機能 パラメータが少ないからか出力の質が低く知識も乏しい 以下の機能を活用して出力を改善する必要がある Guided Generation (構造化生成) @Generable @Guide
マクロで出力結果形式の定義・安定化 Tool Calling (ツール呼び出し) WebAPI やローカルデータにアクセスする方法を定義できる 知識の拡張やアクションを実行可能に 8
Guided Generation (構造化生成) @Generable マクロでレスポンス形式を定義 @Guide マクロで出力のガイドラインを設定 @Generable struct Recipe
{ @Guide(description: " レシピの名前を入力してください") let name: String @Guide(description: " 各手順を簡潔に説明して", .range(1...5)) let instructions: [String] @Guide(description: " 調理時間は分単位で指定して") let cookingTime: Int } // 構造化データとして直接取得 let recipe = try await session.respond(to: " パスタのレシピを作成して", generating: Recipe.self) print(recipe.name) // " ペペロンチーノ" print(recipe.instructions) // ["1. ニンニクを炒める", "2. パスタを茹でる", ...] print(recipe.cookingTime) // 20 9
Tool Calling (ツール呼び出し) API 等にアクセスできるカスタムツール定義してモデルの機能を拡張 struct WeatherTool: Tool { static
let name = "getWeather" static let description = " 指定した都市の天気情報を取得" @Generable struct Arguments { @Guide(description: " 天気を調べる都市名") var city: String } func call(arguments: Arguments) async throws -> ToolOutput { // WeatherKit 等を使用して実際の天気データを取得 let weather = await getWeatherData(for: arguments.city) return ToolOutput(weather) } 10
Tool Calling を利用したセッション let session = LanguageModelSession( model: .default, tools:
[WeatherTool()], instructions: Instructions(""" あなたは天気予報のアシスタントです。 ユーザーの質問に対して、必要に応じて天気ツールを使用してください。 """) ) // モデルが自動的にツールを呼び出して応答を生成 let response = try await session.respond( to: " 東京の今日の天気はどうですか?" ) 11
ユースケースを考える 多くのケースではサーバAI の方が質の高い応答 Foundation Models の特徴を活かす利用が求められる プライベート利用OK 完全無料 オフライン実行 (
間違ってもOK) 12
Apple のデモ-1 日記アシスタント 入力中の内容から 話を広げるための質問生成 (Private + Free) 13
Apple のデモ-2 Coffe Shop Game NPC との会話を自動生成 (Guided Generation,
Free) 連絡先内の知人がNPC として登場 (Tool Calling + Private) カレンダーイベントに基づく会話 (Tool Calling + Private) 14
自分でも考えてみる ひらがな埋めるフォームアプリ ユーザーが入力した氏名住所のひらがな蘭を自動で埋める (Private, Free, 間違ってもOK) LINE トーク履歴を元に相性診断アプリ 二人のトークから相性を診断 (Guided
Generation, Private) 連絡先から関係性を抽出 (Tool Calling, Private) 15
デモ 16
ひらがな埋めるフォームアプリの実装 Instructions let instructions = Instructions(""" あなたは日本語の漢字をひらがなに変換するアシスタントです。 入力された漢字や地名を正確にひらがなで読み方を返してください。 一般的な読み方を使用し、簡潔に答えてください。 ひらがなのみで回答し、他の文字は含めないでください。
""") 17
ひらがな埋めるフォームアプリの実装 Prompt 姓: 「田中」という姓の読み方をひらがなで教えてください。 名: 「太郎」という名前の読み方をひらがなで教えてください。 住所: 「東京都渋谷区」という地名の読み方をひらがなで教えてくだ さい。 18
LINE トーク履歴を元に相性診断アプリ の実装 Instructions let instructions = Instructions(""" あなたは恋愛関係や友人関係の相性分析の専門家です。 LINE
チャット履歴を分析して、二人の相性を客観的かつ建設的に評価してください。 分析観点:コミュニケーションの頻度とバランス、感情的な調和とサポート、 会話の深さと多様性、レスポンス傾向と相互理解、共通点と補完性 """) 19
LINE トーク履歴を元に相性診断アプリ の実装 Guided Generation @Generable struct AnalyzeResult { @Guide(description:
" 相性スコア(0-100 点)") let compatibilityScore: Int @Guide(description: " 相性分析のサマリー(4 行程度)") let compatibilitySummary: String @Guide(description: "person1 の感情を漢字1 文字で3 つ表現", .count(3)) let feelingsToPerson2: [KanjiFeeling] } 20
漢字の感情を表現する構造体 @Generable struct KanjiFeeling { @Guide(description: " 感情を表す漢字, 絶対に1 文字分の漢字を指定すること")
let kanji: String @Guide(description: " 感情の度合いを0-100 の整数で表現", .range(0...100)) let score: Int @Guide(description: " 漢字の感情に適したRGB 色値") let color: RGB } 21
Tool Calling struct ContactSearchTool: Tool { static let name =
"searchContact" static let description = " 指定された名前の連絡先情報を検索" @Generable struct Arguments { @Guide(description: " 検索する人の名前") var name: String } func call(arguments: Arguments) async throws -> ToolOutput { // 連絡先から年齢、職業、誕生日等の情報を取得 let contact = searchContactInfo(name: arguments.name) return ToolOutput(contact) } } 22
触ってみて プライベート情報から価値を作れるおもしろい機能 ただし、質の高い応答を得るためには工夫が必要 要考慮のエラーケースが多い デバイス・OS がFoundation Models 非対応 → Fallback
UI 必要 生成中に生成を依頼してエラー → 生成中状態の適切な管理 利用ガイドラインに違反 → ユーザーへ適切なフィードバック コンテキストサイズを超えた入力 → Session の再作成の自前実装 オフラインのふりをしたプライベート情報収集アプリ出てきそう... 23
まとめ Foundation Models の価値 プライバシー第一 - オンデバイス処理 完全無料 - API
料金なし 高性能 - 低遅延、オフライン動作 柔軟性 - Guided Generation + Tool Calling 24