2026年9月14日時点で、iOS 27 は秋の正式リリース窓に入っています。いわゆる「iOS 27 AI App」は、クラウドのチャット画面を一枚被せたものではありません。Apple が開発者に示している本線は二つです。Foundation Models で App 内の生成・計画・ツール呼び出しを行い、同じ能力を App Intents 経由で Siri AI、Spotlight、ショートカットに渡す。閉ループを先に決め、モデルは後から選ぶ——オンデバイス、Private Cloud Compute、サードパーティ LLM は同じ Swift API に乗りますが、App Store 審査、プライバシー表記、地域と言語の可用性は別物です。
まず揃える:iOS 27 の AI App が本当にやっていること
多くのチームはいまだに「AI 機能」を、入力欄を足してユーザーの一文を OpenAI や Gemini に転送し、返答を画面に貼るだけだと捉えています。iOS 27 でもその経路はコンパイルできます。ただしApple が今秋に向けて渡している形では、もうありません。WWDC 2026 の開発者向け物語ははっきりしていました。システムモデル、Siri AI、サードパーティモデルは、いずれも Foundation Models の統一セッションから App に入る。ロック画面、Siri、画面上の内容から始まる操作は App Intents を通す。残した SiriKit 拡張を二系統で保守する時代ではない、という整理です。
プロダクトの言葉に落とすと、Foundation Models は「考える側」です。自然言語を型付きの下書きにし、自前の Tool を呼び、オンデバイスとクラウドのモデルを切り替える。App Intents は「実行する側」です。タスクを作り、エンティティを開き、レコードを直し、Siri AI が画面を指して「3番目」と言えるようにする。チャット UI は皮膚の一種にすぎません。チャットだけだと Siri から見えません。Intent だけだと、App 内の計画・要約・複数ターンの直しがすぐ脆くなります。日本の To Do / 家計 / 業務系 App でも、この二本は同じです。
ここが、当サイトの消費者向け記事との境界です。機能一覧や料金の層はApple Intelligence の無料と有料を見てください。Mac 上の Siri の範囲はmacOS 27 の Siri AIです。以下は開発手順だけを書きます。Xcode のターゲットが空の状態から、デモでき、テストでき、App Store 日本に提出できる閉ループまでです。
着手前:Xcode 27、端末の階層、地域と言語
最初の import FoundationModels を書く前に、ツールチェーンを固定してください。iOS 27 SDK は Xcode 27 と同梱です。シミュレータはセッションの骨組みを通すには十分です。一方 Private Cloud Compute、実機での Tool 呼び出し回数、音声まわりは、実機と地域でよくずれます。Apple は iOS 27 リリースノートで、シミュレータ上の PCC 欠落と、オンデバイスで「Tool + ガイド付き生成」を混ぜたときの過剰呼び出しを既に書いています。スケジュールにバッファを残す項目であり、脚注ではありません。
AI 機能の計画を「iOS 27 が載る端末」で始めないでください。iPhone 11 以降は OS 自体は入ります。Apple Intelligence とオンデバイスの Foundation Models は、いまも iPhone 15 Pro / iPhone 16 からが起点です。より重いオンデバイス層(通称 AFM 3 Core Advanced。表現力のある音声と高精度のディクテーションに効く)は、主に iPhone 17 Pro / Air クラスです。iPad はおおむね M1 から Apple Intelligence、新しいオンデバイスモデルはメモリの多い M シリーズです。要件表は「最低 iOS 27」の一行ではなく、三行で書いてください。
| 階層 | 代表端末 | 開発として約束できること |
|---|---|---|
| OS のみ、Apple Intelligence なし | iPhone 11–15(非 Pro) | AI を主経路にしない。フォールバック文面か自前クラウド |
| 標準の Apple Intelligence | iPhone 15 Pro、iPhone 16 系列 | オンデバイスセッション、基本の Siri AI、大半の App Intents |
| フルのオンデバイスモデル | iPhone 17 Pro / Air クラス | 高度な音声と重いローカル推論はサンプル検証。全ユーザー到達と書かない |
二枚目のゲートは地域と言語です。Siri AI と一部のシステム機能は、Apple ID の地域、システム言語、規制の進捗で止まります。中国本土や EU(DMA 以降の制約)は分かりやすい例ですが、App Store 日本向けでも油断できません。作文ツールなど従来の Apple Intelligence は日本語対応が進んでいる一方、新しい Siri AI や Foundation Models の一部セッションは、対応言語表が英語先行のまま残ることがあります。日本のチームの定石は、業務の閉ループを自前モデルか既に審査を通したクラウドに置き、App Intents と Foundation Models セッションはスイッチ可能なモジュールにしておくことです。システム経路が日本語で開いたらルートを足す。App Store 日本のプレビューに「日本語の Siri AI で全部できる」と書き、撮影だけ米アカウント・英語ロケール、という組み合わせは審査で突かれます。スクショの言語、実機の言語、説明文の言語を揃えてください。
ビルド機も分けます。Xcode 27 と、App Store 提出用の安定版を、日常のノート一枚に同居させないでください。beta と GM が並走する秋は、回帰用と試し用を物理的に分けると、「昨日は通ったのに今日は証明書とシミュレータがパスを奪い合う」事故が半減します。分離の型はXcode beta と本番 Runner の分離と同じです。
Foundation Models:ひとつの API、3つの実行先
Foundation Models は iOS 26 で入り、iOS 27 でネイティブ Swift の単一 APIに広がっています。オンデバイスモデルは画像入力を受け、セッションはサーバーモデルを指せ、独自 Skills も載せられます。公式の整理は Apple Newsroom(2026年6月)です。エンジニアリング上の本当の選択は「AI を載せるか」ではなく、この一回の推論をどこで走らせるかです。
| 実行先 | 代表型 | 向いていること | 使ってはいけないこと |
|---|---|---|---|
| オンデバイス | SystemLanguageModel | 要約、書き換え、フォーム抽出、短い計画、オフライン下書き | 超長文、ネット検索が必要な開放型 Q&A |
| Apple クラウド | Private Cloud Compute モデル | 重い推論。サーバーモデルは要るが鍵は自前にしたくない | 自社 VPC で 100% 監査しなければならないデータ |
| サードパーティ / 自前 | LanguageModel + LanguageModelExecutor | Claude、Gemini、自前 MLX / Core AI | クライアント初期化子への API キー直書き |
iOS 27 で効く変化は、モデルを替えてもセッションの書き方を書き換えないことです。提供側は公開プロトコルを実装します。WWDC26 セッション Bring an LLM provider to the Foundation Models framework は、Swift Package で配布し、Executor で Transcript を自前のメッセージ形式へ写し、prewarm、ストリーミング、KV cache を扱うよう求めています。App 側は相変わらず LanguageModelSession です。
コストにも新しいレバーがあります。App Store Small Business Program に入り、累計の初回ダウンロードが 200 万未満の開発者は、Private Cloud Compute 上の次世代 Apple Foundation Models を使うとき、クラウド API 料金を免除される場合があります(当期の規約を確認)。無限の無料推論ではなく、「Apple のサーバーモデルを一度試す」敷居を下げた制度です。上限を超えるか、Claude / Gemini が必要なら、提供元の請求に従います。日本の個人・中小チームでも、まずオンデバイスと PCC の免除条件を見てから、外販 LLM の契約を足す順が安全です。
第1歩:LanguageModelSession と構造化出力
セッションが背骨です。文書は LanguageModelSession。一つのオブジェクトが Transcript を保持し、窓を超えると LanguageModelError.contextSizeExceeded が投げられます。送信のたびに new しない。無限に append もしない。計画は短いセッション、確定は別セッション、の方が「神セッション一つで最後まで」より安定します。
import FoundationModels
@Generable
struct TaskDraft {
@Guide(description: "20文字以内のタスクタイトル")
var title: String
@Guide(description: "ISO-8601 の期限。ユーザーが言っていなければ none")
var dueISO8601: String
var priority: Priority
}
@Generable
enum Priority {
case low, normal, high
}
let session = LanguageModelSession {
"""
あなたは To Do App 内の計画アシスタントです。
TaskDraft だけを出すこと。ユーザーが触れていないカレンダー予定は捏造しない。
"""
}
let response = try await session.respond(
generating: TaskDraft.self,
to: Prompt("明日の午後3時までに週報を提出。優先度は高")
)
let draft = response.content
ここでの勝ちは構文ではなく型です。@Generable は「雑談できるモデル」を「フォームを埋められるモデル」に変えます。 SwiftData に書く、App Intent に渡す、次の計画ターンに食わせる——いずれも値であり、もう一度パースする Markdown ではありません。リリースノートは、@Generable を enum に付けたとき消えない GenerationError 警告が出ることがある、とも書いています。ストアを疑う前にノートを見てください。
画像入力はレシート解析、棚の SKU、画面内の物体向けです。フォトライブラリごとコンテキストに詰め込まない。窓が埋まったら、今のユーザー発話ではなく、古い Tool の戻りと過去ターンから落とします。日本語の日付表現(「来週金曜」「月末」)は ISO-8601 に落とすガイドを厚くしてください。曖昧なまま Intent に渡すと、審査用の録画でもカレンダー誤書きが再現します。
第2歩:Tool、Skills、Dynamic Profiles
構造化出力だけでは足りません。モデルはあなたのドメインに手を伸ばす必要があります。Foundation Models の Tool は、自動では App Intent になりません。Tool はセッション用、Intent はシステム用です。Store は共有する。「Intent を出したからモデルが見える」とは思わないでください。
iOS 27 は多段階 Agent 向けに Dynamic Profiles を足しています。WWDC26 セッション Build agentic app experiences は、ブレスト / 計画 / レビューを同一セッションで切り替える例です。profile はモデル、温度、推論の深さを変えられます。計画は PCC + 深い reasoning、レビューはオンデバイスに戻して遅延と費用を抑える、といった使い方です。profile 本体はプロンプトのたびに再評価されるので、重い I/O を中に置かないでください。
enum PlanPhase { case brainstorm, plan, review }
func makeProfile(_ phase: PlanPhase) -> LanguageModelSession.DynamicProfile {
LanguageModelSession.DynamicProfile {
switch phase {
case .brainstorm, .plan:
return .init(model: .privateCloudCompute, tools: [SearchNotesTool(), ListCalendarTool()])
case .review:
return .init(model: SystemLanguageModel.default, tools: [ValidateDraftTool()])
}
}
}
性能で踏みやすい穴は二つです。履歴を書き換えると KV cache が壊れ、遅延が跳ねます。append できるなら Transcript を作り直さない。オンデバイスモデルは、ガイド付き生成と Tool を混ぜると連続呼び出ししがちです。回数上限と「同じ Tool が連続失敗したら止める」を入れてください。Foundation Models Instrument と評価フレームワークがあるので、キーノート同型のデモ一本ではなく、現場の言い回しを 20–30 本は回帰に入れてから GA 扱いしてください。日本語の「これ」「あれ」「さっきの」は、画面認識と Tool の読み取りが揃っていないとすぐ崩れます。
Skills(カスタム技能)は、社内の言い回し、禁止語、ドメイン辞書を prompt 文字列から外す場所です。運用が直せ、地域スイッチも切りやすい。第二のバックエンドではありません。セッション境界の内側に留まり、権限とログは Tool と同じ監査に載せます。日本語と英語のストアフロントを並行するなら、Skills をロケール単位で分け、禁止語リストを審査用の説明文と矛盾させないでください。
第3歩:App Intents を Siri AI に渡す
App Intents は「ショートカットのおまけ」ではありません。iOS 27 では、Siri がサードパーティ App に入る、サポートされた唯一の正門です。SiriKit は WWDC 2026 で非推奨になり、おおよそ二〜三年の互換窓が残ると見られています。動いている旧 Intent Extension の移行は、チャット文面の磨き込みより先です。プロトコルとパラメータ解決は AppIntent から始めてください。
この世代の Intents は、意図して使ってください。開く・作る・検索はシステムスキーマに寄せ、独自の可愛いタイトルで全部を始めない。画面認識で Siri が「これ」「3番目」を解決できるようにする。ストリーミングや長時間タスクの結果、複数ターンでのパラメータ補完。Spotlight に載せたいエンティティは IndexedEntity。ビジュアルインテリジェンスの画像検索は SemanticContentDescriptor と IntentValueQuery であり、LanguageModelSession に押し込むものではありません。日本語のショートカットギャラリーに出す title は、ユーザーが声に出す言い方に寄せてください。審査担当もギャラリーも、そこを見ます。
import AppIntents
struct CreateTaskIntent: AppIntent {
static var title: LocalizedStringResource = "タスクを作成"
static var description = IntentDescription("To Do を App に書き込む。")
@Parameter(title: "タイトル")
var title: String
@Parameter(title: "優先度")
var priority: String?
func perform() async throws -> some IntentResult & ProvidesDialog {
try await TaskStore.shared.create(title: title, priority: priority ?? "normal")
return .result(dialog: "作成しました:\(title)")
}
}
人向けの文面と機械の契約を分けます。title / description は Siri とショートカットギャラリー用。perform() は冪等で監査できる書き込みだけにする。破壊的な操作は明示の確認を取る。モデルセッションから黙って呼ばせない。パラメータが解決できないときは、システムにもう一度聞いてもらう方が、dialog にモデルの即興を載せてデータを書くより安全です。App Store 審査は「確認なしの書き込み」と「説明文と実装の不一致」をよく見ます。
モデルを Intent に繋ぐ:審査に出せる閉ループ
ここで二本を繋ぎます。既定の型はモデルは下書きまで、確定は Intentです。
- ユーザーが App 内で話す / 打つ。または Siri が自然文を一本連れて来る。
LanguageModelSessionが@Generableの下書きを出す。必要なら先に Tool でカレンダー、メモ、在庫を読む。- UI が下書きを見せ、ユーザーが確認する。低リスクな形だけ自動確認の閾値を置く。
- 対応する
AppIntentを組み立てperform()。同じ Store がショートカットと Spotlight も担う。 - 実行結果を Transcript にツール出力として戻し、次の直しをコールドスタートにしない。
func commit(_ draft: TaskDraft) async throws {
var intent = CreateTaskIntent()
intent.title = draft.title
intent.priority = String(describing: draft.priority)
_ = try await intent.perform()
}
なぜ Tool に行を挿させないのか。App Review、ショートカットギャラリー、Siri の提案、自前の取り消しスタックは、いずれも Intent 経路を理解します。幻覚で期限を間違えても、UI で止めれば安い。Tool がすでにリマインダーを十件黙って作っていたら、サポートコストは桁が違います。日本の審査でも、「AI が勝手にカレンダーへ書いた」再現は落ちやすいです。
モデル切替は profile / session 工場に閉じ、View に散らさない。地域スイッチもここに置きます。日本向けビルドはオンデバイス + PCC を優先し、中国本土や EU 向けは審査済みのサードパーティ LanguageModel を既定にする、といった分け方です。Intent はどちらでも CreateTaskIntent のまま。Siri から入っても同じ入口です。
テスト、プライバシー、提出チェックリスト
AI 機能は普通の CRUD より、審査とサポートで転びやすいです。GA にする前に、少なくとも次の表を一遍してください。
| 確認項目 | 検証方法 | 落ちたら GA にしない |
|---|---|---|
| Intelligence なし端末 | iPhone 15 非 Pro、または AI オフのシミュレータ構成 | 主経路が空白 / クラッシュ |
| PCC 不可 | シミュレータ、機内モード、未サインイン | 無限スピナー、フォールバックなし |
| 地域 / 言語 | 日本・米・中国本土の Apple ID、EU アカウント、日本語のみのシステム | 文面はシステム Siri を約束しているのに使えない |
| 幻覚書き込み | 曖昧な指示 + 期限の捏造を誘導 | 未確認でカレンダー / 決済に書き込む |
| Intent 移行 | 旧 SiriKit 経路がまだ通る | 「後で」警告だけ見て先送り |
| 秘密情報 | IPA 内を sk- / 提供元キーで検索 | サードパーティの鍵がクライアントに入っている |
プライバシーの文言は実装と一致させてください。オンデバイス推論は「既定では端末の外に出ない」と書けます。PCC やサードパーティに出たら、設定画面に名前を出す。提供元の文書はキーチェーン(多くは App Attest も)を求めます。セッション初期化子に裸のキーを置かない。分析基盤へは下書きの schema と Intent 識別子だけ残し、Transcript 全文を既定アップロードしないでください。App Store 日本の審査ノートに、データの行き先を一行で書いておくと、差戻しが減ります。
審査用に三点用意します。30秒の「話す → 下書き → 確認 → 一覧に行が現れる」画面収録。システム言語とスクショのストアフロントを揃える。Intelligence なし端末での劣化説明。実行先表(オンデバイス / PCC / サードパーティ)一枚。マーケティング文が実装の能力の前に走らないよう、消費者側の境界はWWDC 2026 Siri AI ガイドと突き合わせてください。
個人のノートが Xcode 27、実機行列、夜間回帰を兼ねると、編成コストはトークンより先に膨らみます。安定ビルドと Agent 評価は、スリープしない Apple Silicon 一台に置いた方が、全員の薄型を更新するより制御しやすいです。
クラウド Mac mini で iOS 27 の AI 閉ループを安定させる
Foundation Models のセッション、シミュレータ、実機プロキシ、Xcode 27 のツールチェーンは、メモリとディスクを食い、マシンが眠らないことを要求します。Nuvcloud のクラウド Mac mini は占有 Apple Silicon のベアメタルです。ユニファイドメモリは並列コンパイルとローカル評価に向き、SSH は常時つながり、iOS 27 SDK 専用機を日単位で開けます。デザインカンプや会議アプリと同じ蓋を奪い合いません。
LanguageModelSession と App Intents を日次回帰に載せようとしているなら、Nuvcloud のプランと拠点を見る。ビルド機と評価機を 24/7 オンラインにし、「ノートを閉じたらセッションが切れる」をクリティカルパスから外してください。
関連記事
よくある質問
Swift が書けなくても iOS 27 の AI App は作れる?
システム級の Foundation Models と App Intents の主経路は Swift です。Flutter / React Native で UI は続けられますが、セッション、Tool、Intent はネイティブモジュールに置いてください。そうしないと Siri AI とオンデバイスモデルはほぼ繋がりません。
Foundation Models と ChatGPT API 直呼びの違いは?
前者はシステムセッション API です。オンデバイス、PCC、プロトコル経由のサードパーティを選べ、Tool / 構造化出力 / システムのプライバシー提示と揃います。後者は自前の HTTPS です。柔軟ですが、オンデバイスモデルとシステム級の Siri 配信は取れず、鍵と審査リスクは自分で負います。
App Intents は自動でモデルの Tool になる?
なりません。Intent は Siri、ショートカット、システムの提案向け。Tool は LanguageModelSession 向けです。同じ Store を呼ぶ。フレームワークの自動ブリッジを待たないでください。
中国本土でもシステム Foundation Models は使える?
端末、システム言語、Apple ID 地域次第です。本土の iPhone ではシステム Apple Intelligence / Siri AI がまだ使えないことがあります。システムモデルはスイッチ可能にし、審査済みのサードパーティ LanguageModel を用意して、主経路を空白にしないでください。日本向けビルドと本土向けビルドを分けるのが安全です。
Private Cloud Compute は必須?
必須ではありません。短い要約、フォーム抽出、ローカル下書きはオンデバイス優先。品質が足りず、かつ Apple の PCC 境界を受け入れるときだけ上げます。Small Business Program の条件を満たせば PCC のクラウド API 料金が免除される場合があります。当期の規約を読み直してください。
SiriKit はあとどれくらい使える?
WWDC 2026 で非推奨。業界では二〜三年の互換窓で計画する人が多いです。新機能に SiriKit を足さない。残存経路は iOS 27 のイテレーションに入れ、コンパイル警告がハードエラーになる前に移してください。
シミュレータで通れば審査提出してよいか?
唯一の証拠にはできません。PCC、一部の Tool 呼び出し、音声まわりはシミュレータと実機で違います。標準 Intelligence の実機を少なくとも一台用意し、フル能力は別サンプル。17 Pro の収録を全ユーザーの代表にしないでください。App Store 日本向けなら、日本語ロケールの実機で撮ります。
Xcode 27 のために新しい Mac を買う必要がある?
新しい執務ノート必須ではありません。必要なのは、iOS 27 SDK を安定して回し、眠らない Apple Silicon です。多くのチームはクラウド Mac mini で beta ビルドと本番 CI を分け、全員の機種更新より安く済ませています。