foundation-models について
Apple Foundation Models フレームワークを使い、限定的なテキスト処理をデバイス上で行うための開発スキルです。ネットワーク接続なしで要約、抽出、分類、生成を扱います。
主な機能
- 01デバイス上のテキスト処理
- 02要約と情報抽出
- 03分類とコンテンツタグ付け
- 04構造化出力のガイダンス
- 05ストリーミング生成のガイダンス
活用シーン
- 01ユーザー提供コンテンツの要約
- 02テキストからの重要情報の抽出
- 03コンテンツの分類やタグ付け
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ johnrogers/ claude-swift-engineering --skill foundation-modelsインストール後、Claude Code で/foundation-modelsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/getting-started.mdstreaming.mdstructured-output.mdtool-calling.mdtroubleshooting.md詳細
Foundation Models
Apple のオンデバイス AI フレームワークです。要約、抽出、分類、コンテンツ生成に利用できる、30 億パラメーターの言語モデルにアクセスできます。ネットワーク接続は不要で、すべてオンデバイスで動作します。
概要
Foundation Models を使うと、サーバーとの通信、ユーザーデータの共有、ネットワークへの依存なしに、デバイス上で直接、インテリジェントなテキスト処理を行えます。基本方針は、一般知識ではなく、範囲の限定された特定のタスクにオンデバイス AI を活用することです。
リファレンス読み込みガイド
コンテンツが必要になる可能性が少しでもある場合は、必ずリファレンスファイルを読み込んでください。 パターンを見落としたり、誤りを犯したりするよりも、必要なコンテキストを把握しておく方が適切です。
| リファレンス | 読み込むタイミング |
|---|---|
| Getting Started | LanguageModelSession の設定、利用可能状況の確認、基本的なプロンプト |
| Structured Output | 型安全な応答に @Generable を使う場合、@Guide の制約 |
| Tool Calling | Tool プロトコルを介して外部データ(天気、連絡先、MapKit)を統合する場合 |
| Streaming | UI を段階的に更新する AsyncSequence、PartiallyGenerated 型 |
| Troubleshooting | コンテキストのあふれ、ガードレール、エラー、アンチパターン |
基本的なワークフロー
SystemLanguageModel.default.availabilityで利用可能状況を確認します- 必要に応じて指示を指定し、
LanguageModelSessionを作成します - 出力の型を選択します。通常の String または @Generable 構造体
- 生成に時間がかかる場合(1 秒超)はストリーミングを使用します
- エラー(コンテキストのあふれ、ガードレール、非対応言語)を処理します
モデルの機能
| ユースケース | Foundation Models? | 代替手段 |
|---|---|---|
| 要約 | はい | - |
| 抽出(重要な情報) | はい | - |
| 分類 | はい | - |
| コンテンツのタグ付け | はい(組み込みアダプター) | - |
| 世界に関する知識 | いいえ | ChatGPT、Claude、Gemini |
| 複雑な推論 | いいえ | サーバー上の LLM |
プラットフォーム要件
- iOS 26+、macOS 26+、iPadOS 26+、visionOS 26+
- Apple Intelligence 対応デバイス(iPhone 15 Pro+、M1+ の iPad/Mac)
- ユーザーが Apple Intelligence の利用にオプトインしていること
よくある間違い
-
Foundation Models を世界に関する知識に使う — 30 億パラメーターのモデルは、オンデバイスのタスク専用にトレーニングされています。時事問題、特定の事実、「X とは誰か」といった質問には答えられません。その用途には ChatGPT/Claude を使用してください。プロンプトは、ユーザー自身のコンテンツの要約、情報の抽出、テキストの分類に限定してください。
-
メインスレッドをブロックする — LanguageModelSession の呼び出しは、バックグラウンドスレッドまたは非同期コンテキストで実行する必要があります。メインスレッドをブロックすると UI が停止します。必ず
Task { }またはバックグラウンドキューを使用してください。 -
コンテキストのあふれを無視する — モデルが扱えるコンテキストには上限があります。ユーザーが 50KB のドキュメントを貼り付けると、エラーが通知されないまま失敗したり、内容が切り詰められたりします。入力の長さを確認し、事前に整理または切り詰めてください。
-
利用可能状況の確認を忘れる — Foundation Models に対応していないデバイスもあります。使用前に
SystemLanguageModel.default.availabilityを確認してください。適切なフォールバックが必要です。 -
ガードレールを無視する — モデルは有害なクエリには回答しません。無理に回答させるのではなく、安全ガイドラインに沿ったプロンプトを設計してください。通常、依頼の言い換えで対応できます。