RORK LABEN
FUNDING — RorkがLeft Lane Capital主導で$15Mのシードを調達。Peak XV・True Ventures・Goodwater・a16z Speedrunが参加しましたENGINE — Rork MaxはClaude CodeとClaude Opus 4.6で駆動。X で800万超のビューを集め、2週間で年間売上を倍増させましたSWIFT — Rork MaxはWebで初めてSwiftアプリを生成できるビルダーで、Apple伝統のXcodeを置き換える位置づけですPRODUCT — Rork MaxはiPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageまでApple全域に対応しますCLASSIC — 通常のRorkはReact Native(Expo)で、英語の説明だけからiOS/Androidアプリを生成しストア配信できますPRICING — 無料で始められ、有料は月25ドル〜。Rork Maxは月200ドルですFUNDING — RorkがLeft Lane Capital主導で$15Mのシードを調達。Peak XV・True Ventures・Goodwater・a16z Speedrunが参加しましたENGINE — Rork MaxはClaude CodeとClaude Opus 4.6で駆動。X で800万超のビューを集め、2週間で年間売上を倍増させましたSWIFT — Rork MaxはWebで初めてSwiftアプリを生成できるビルダーで、Apple伝統のXcodeを置き換える位置づけですPRODUCT — Rork MaxはiPhone・iPad・Apple Watch・Apple TV・Vision Pro・iMessageまでApple全域に対応しますCLASSIC — 通常のRorkはReact Native(Expo)で、英語の説明だけからiOS/Androidアプリを生成しストア配信できますPRICING — 無料で始められ、有料は月25ドル〜。Rork Maxは月200ドルです
記事一覧/AIモデル
AIモデル/2026-06-24上級

Foundation Models の Guided Generation で、オンデバイスAIの出力を型で受け取る

オンデバイスのFoundation Modelsで、AIの返答を自由文ではなく型付きの構造体として受け取る方法を、Guided GenerationとTool Callingの実装コードとともに整理します。

Foundation Models4オンデバイスAI8Rork Max182SwiftUI51Guided Generation

プレミアム記事

オンデバイスのAIにアプリの機能を任せるとき、私が個人開発でいちばん神経を使ってきたのは、モデルの「自由文の返答」をアプリ側で構造化データに整形する部分でした。プロンプトで「JSONで返して」とお願いしても、前後に説明文が混じったり、キー名が微妙に揺れたり、配列が空のときだけ形が変わったりします。そのたびに正規表現やtry?で受け止める処理が増えていき、いちばん壊れやすい場所になっていきました。

iOS 26 の Foundation Models フレームワークには、この問題を根本から消すための仕組みが二つ用意されています。出力を Swift の型に縛る Guided Generation と、モデルにアプリ側の関数を呼ばせる Tool Calling です。Rork Max はネイティブ Swift を生成するため、これらの API をそのまま生成コードに組み込めます。自由文パースをやめて型でAIの出力を受け取るところまでを、ここから実際に動くコードで追っていきます。

なぜ自由文の返答をパースする実装は壊れやすいのか

従来のクラウドLLM連携では、こういう形のコードを書きがちでした。

// 壊れやすい例:自由文を受け取って自前でJSONに整形する
let text = try await callCloudLLM(prompt: "おすすめの瞑想テーマを3つ、JSON配列で返して")
 
// text には「はい、こちらがおすすめです:[...]」のような前置きが混じることがある
guard let jsonStart = text.firstIndex(of: "["),
      let data = String(text[jsonStart...]).data(using: .utf8),
      let themes = try? JSONDecoder().decode([String].self, from: data) else {
    // ここに来る頻度が想像以上に高い
    return fallbackThemes
}

問題は、text が「人間向けの文章」である以上、フォーマットが保証されないことです。私が運用中のアプリにAI機能を足したときも、テスト中は安定していたのに、リリース後に特定の入力でだけ前置きが付いてパースが失敗する、という報告が出ました。fallbackThemes に逃げる回数が増えるほど、AI機能の価値は薄れていきます。

Guided Generation は、この「文章を整形する」工程そのものを不要にします。モデルに最初から型を渡し、その型に適合した値だけを生成させるからです。

@Generable で出力を型に縛る

まず、AIに返してほしいデータを Swift の構造体として宣言し、@Generable を付けます。

import FoundationModels
 
@Generable
struct MeditationTheme {
    @Guide(description: "瞑想セッションのタイトル。15文字以内の日本語")
    var title: String
 
    @Guide(description: "そのテーマで意識すること。1文の説明")
    var focus: String
 
    @Guide(description: "推奨する時間(分)", .range(3...30))
    var durationMinutes: Int
}

@Generable を付けた型は、モデルにとって「この形で出力せよ」という設計図になります。あとはセッションに型を渡して生成を依頼するだけです。

let session = LanguageModelSession()
 
let response = try await session.respond(
    to: "初心者向けの瞑想テーマを1つ提案してください",
    generating: MeditationTheme.self
)
 
// response.content は MeditationTheme 型。パース処理は一切ない
let theme = response.content
print(theme.title)          // 例:「呼吸に還る」
print(theme.durationMinutes) // 例:5

ここがこの仕組みの核心です。response.content は文字列ではなく MeditationTheme そのものです。JSONDecoder も正規表現も登場しません。モデルが制約を満たせない値(たとえばdurationMinutesに40を入れる)を生成しようとしても、フレームワーク側が型と@Guideの制約に沿うように生成を誘導するため、アプリに届く時点で3...30の範囲に収まっています。

なぜ正規表現でのパースより信頼できるのか、という点が大事です。自前パースは「生成された後の文字列を検査する」後追いの防御ですが、Guided Generation は「生成の段階で型に沿わせる」前向きの制約です。壊れたものを直すのではなく、壊れたものを作らせない、という違いです。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
モデルの自由文を毎回パースして壊れていた処理を、@Generable で型付きの構造体として安全に受け取れるようになる
Tool Calling でモデルにアプリ側の関数を呼ばせ、ネットワークなしでも動くアシスタント機能を実装できる
部分生成のストリーミング表示と、生成失敗時のフォールバック設計まで含めて、本番アプリに耐える on-device AI を組める
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

AI モデル2026-06-14
Rork Max の Swift アプリに Foundation Models の画像入力でオンデバイス・タグ付けを実装する
WWDC26 で Foundation Models のオンデバイスモデルに画像入力が加わりました。Rork Max が生成する Swift アプリに、画像のタグ付け・説明生成をクラウドに出さず実装する具体的な手順を、可用性ゲートとVision併用まで含めて解説します。
AI モデル2026-06-23
Rork Max のアプリで iOS 18 のオンデバイス翻訳を使う — 無料・オフラインで多言語ユーザーに応える
iOS 18 の Translation フレームワークを使い、Rork Max が生成した Swift アプリに無料・オフラインのリアルタイム翻訳を組み込む手順です。言語モデルの在庫確認、一括翻訳、空応答の回避まで実コードでまとめました。
AI モデル2026-06-14
Rork(Expo)製アプリから Apple Foundation Models を呼ぶ — オンデバイスAIをネイティブモジュールで橋渡しする
Rork が生成する Expo(React Native)アプリから iOS のオンデバイスAI、Apple Foundation Models を呼ぶには、Swift 側のネイティブモジュールを挟む必要があります。Expo Modules API で橋渡しを書き、未対応端末ではクラウドへ逃がす構成を実装します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →