View in English

  • Apple Developer
    • 今すぐ始める

    「今すぐ始める」を詳しく見る

    • 概要
    • 学ぶ
    • Apple Developer Program

    最新情報

    • 最新ニュース
    • Hello Developer
    • プラットフォーム

    プラットフォームを詳しく見る

    • Appleプラットフォーム
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    特集

    • デザイン
    • 配信
    • ゲーム
    • アクセサリ
    • Web
    • Home
    • CarPlay
    • テクノロジー

    テクノロジーを詳しく見る

    • 概要
    • Xcode
    • Swift
    • SwiftUI

    特集

    • アクセシビリティ
    • App Intent
    • Apple Intelligence
    • ゲーム
    • 機械学習とAI
    • セキュリティ
    • Xcode Cloud
    • コミュニティ

    コミュニティを詳しく見る

    • 概要
    • 「Appleに相談」イベント
    • コミュニティによるイベント
    • デベロッパフォーラム
    • オープンソース

    特集

    • WWDC
    • Swift Student Challenge
    • デベロッパストーリー
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Center
    • ドキュメント

    ドキュメントを詳しく見る

    • ドキュメントライブラリ
    • テクノロジー概要
    • サンプルコード
    • ヒューマンインターフェイスガイドライン
    • ビデオ

    リリースノート

    • 注目のアップデート
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • ダウンロード

    ダウンロードを詳しく見る

    • すべてのダウンロード
    • オペレーティングシステム
    • アプリ
    • デザインリソース

    特集

    • Xcode
    • TestFlight
    • フォント
    • SF Symbols
    • Icon Composer
    • サポート

    サポートを詳しく見る

    • 概要
    • ヘルプガイド
    • デベロッパフォーラム
    • フィードバックアシスタント
    • お問い合わせ

    特集

    • アカウントヘルプ
    • App Reviewガイドライン
    • App Store Connectヘルプ
    • 近日導入予定の要件
    • 契約およびガイドライン
    • システムステータス
  • クイックリンク

    • イベント
    • ニュース
    • Forum
    • サンプルコード
    • ビデオ
 

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • すべてのビデオ
  • 利用方法

その他のビデオ

  • 概要
  • Summary
  • トランスクリプト
  • コード
  • Image Playgroundによる高品質な画像の生成

    Image Playgroundを使用した高品質な画像生成をアプリに実装しましょう。プライベートクラウドコンピューティング上で実行される新しい生成モデルにより、写真のようにリアルなスタイルを含むほぼあらゆるスタイルの画像を、ユーザーがアプリ上で生成できます。サイズを指定してより多くの場所に配置できるようにしたり、自然言語による説明やタッチ操作で画像を変更したりもできます。Image Playgroundの導入方法、テキストや写真から画像を生成する方法、アプリ内での機能の利用可否を管理する方法を解説します。

    関連する章

    • 0:00 - Introduction
    • 2:03 - Capabilities
    • 5:02 - Adopt Image Playground
    • 8:29 - Options
    • 12:15 - Availability

    リソース

      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC26

    • プライベートクラウドコンピューティングによるApple Foundation Model の活用
    • PencilKitによるストロークの微細な情報の認識

    WWDC24

    • ジェン文字でアプリに表情を追加
  • このビデオを検索

    こんにちは、Antonioです。 Image Playgroundチームのエンジニアです。

    今日は、Image Playgroundを アプリに組み込む方法をご紹介します。

    ユーザーはMessagesの Image Playgroundで画像を作成し、 FreeformやさまざまなアプリでもImage Playgroundを活用してきました。 シーンを組み合わせ、 さまざまなスタイルを試しながら 個性的な表現を楽しんできました。 強力な画像モデルを核に 体験を一新します。 そして今、大きな飛躍を遂げました。 あらゆるスタイルで 高品質な画像を生成できます。 フォトリアルな画像も 本物さながらの仕上がりになりました。

    ImagePlaygroundフレームワークが その体験全体をもたらします。 同じ強力なモデル、 同じスタイル、 同じクオリティを アプリに直接組み込めます。 Image PlaygroundアプリはiOS、iPadOS、 macOS、visionOSで利用できます。 Apple Intelligenceに対応した デバイスで動作し、 生成モデルのフルパワーを アプリにもたらします。

    Image Playgroundアプリと同様に、 ImagePlayground.framework APIを活用できます。 同じプラットフォームで利用可能です。 では、Image Playgroundを アプリに追加する方法を見ていきましょう。 まず機能について説明します。 画像生成モデルが 何を作れるかを見ていきます。

    次にImage Playgroundの 採用方法を説明します。 シートを表示してアプリの コンテキストでシードする方法です。

    その後、オプションとして サイズ、アスペクト比、スタイルの設定。 最後に利用可能性について。 アプリが対応デバイスと 非対応デバイスの両方を 正しく処理する方法です。

    コードを書く前に、 Image Playgroundが アプリで何を実現できるかを見てみましょう。 テキストで説明を与えると、 それに合った画像を生成します。 具体的にも漠然とも 指定できます。 「犬と風船と紙吹雪の 誕生日パーティー」のように。 または「お祝い」の一言でも。 残りはモデルが処理します。 モデルは人物を含む画像を 作成でき、 1つのシーンに 複数の人物も描けます。 パーソナライズを有効にすると、 ユーザーはPhotosライブラリから 人物を追加できます。 またはテキストで外見を 説明することもできます。 個人的な雰囲気の 画像が生成されます。 さまざまなスタイルが 利用できます。 スタイルを指定せずに 画像を作成することもできます。 テキストで希望のスタイルを 指定することも可能です。 油絵スタイルを 指定するといった具合に。

    またはプリセットを使うこともできます。 Animationは遊び心のある 雰囲気を加えます。 Illustrationは洗練された エディトリアルな印象を与えます。

    Sketchは手描きの 質感を演出します。

    Genmojiは表情豊かな テキストに直接埋め込める 絵文字サイズのキャラクター向けスタイルです。

    Image Playgroundは複数のサイズと アスペクト比に対応しています。 バナー用の 横長画像をリクエストできます。 iPhoneでフルスクリーン表示用の 縦長画像も作れます。 またはサムネイル用の 正方形画像も可能です。 モデルはリクエストしたサイズに 最も近い 対応解像度を選択します。 これらはすべて Private Cloud Compute上で動作します。 Appleのプライバシーを保護する クラウドインフラです。 データはAppleも含め 保存も共有もされません。 詳しい仕組みについては、 「Build with the new Apple Foundation Model on Private Cloud Compute」をご覧ください。

    Image Playgroundには 利用制限があります。 強力なサーバーモデルに 依存しているためです。 ほとんどのiCloud+プランで より多くのアクセスが利用できます。 デベロッパには 解決すべき問題ではありません。 プロビジョニングするサーバーも、 維持するインフラも不要です。 システムがユーザーに代わって 利用制限を管理するので、 利用状況に関するUIを 構築する必要はありません。 フレームワークを呼び出すだけで、 あとはAppleが処理します。 モデルをPrivate Cloud Computeに移行したことで APIも再設計しました。 コードから直接画像を生成する 非UI APIのImageCreatorは 非推奨になりました。

    すべての機能が 新しいAPIで利用できます。 より高い画像品質と 組み込みのプライバシー、 ユーザーが使い慣れた 完全な体験を提供します。 今日アプリでImageCreatorを 使用している場合はご覧ください。

    では、Image Playgroundを アプリに追加する方法を見ていきましょう。 コードの実装方法を示すために、 Postcardsというグリーティングカード 作成アプリを開発しました。 Postcardsでは カスタムカードをデザインし、 個人的なメッセージを書いて レイアウトを選べます。 最後のピースはカードの表面に使う カスタムアートワークです。 そこでImage Playgroundの 出番です。 Image Playgroundの採用は 1つのビューモディファイアから始まります。 SDKの初期化もAPIキーも エンドポイントも不要、モディファイアだけです。 .imagePlaygroundSheetをボタンに追加し @Stateブール値にバインドします。 バインドがtrueになると シートが表示されます。 Image Playgroundが すべてを処理します。 UI、モデルとのやり取り、 スタイルピッカーも含めてです。

    ユーザーが画像を承認すると、 クロージャは生成ファイルへの URLを受け取ります。 そのURLはアプリコンテナ内の 一時的な場所を指しており、 セッション終了前に 別の場所に保存してください。 シートは完成された一貫した体験として アプリに組み込まれます。 ユーザーは説明を入力し スタイルオプションを閲覧し、 ライブラリから 人物を追加でき、 確認前に結果を プレビューできます。 アプリは表示可能な 最終URLを受け取ります。 シートは空のプロンプトで開くか アプリのコンテキストをシードとして使えます。 より豊かな初期体験のためです。

    ImagePlaygroundConceptには 2つのファクトリーメソッドがあります。 textは直接の説明を ラップします。 桜などカードのテーマを 渡す例です。 extractedはより長いテキストを受け取り システムが最も関連するアイデアを抽出します。 カードのメッセージを渡すことで、 カードの内容を モデルが把握します。 コンセプトを設定すれば、 このカード専用にプライムされた状態で シートが開きます。 ユーザーは一から始める 必要がありません。 シートに画像をシードすることもできます。 任意のSwiftUI ImageをsourceImageパラメータに渡します。 ライブラリから選んだ写真や、 カードにすでにある 画像でも構いません。 Image Playgroundはコンセプトと並んで 視覚的なインスピレーションとして使います。 ユーザーはシート内で 変更や調整ができます。 出発点であり 制約ではありません。 iPadでは、Postcardsはカード表面の下に 小さなキャンバスを表示します。 ImagePlaygroundConcept.drawingはPencilKitから PKDrawingを受け取り、 テキストと並んでコンセプトとして 追加します。 モデルはストロークを 視覚的な提案として扱い、 構図を誘導しますが 固定はしません。 PencilKitの描画について詳しくは、 「Read between the strokes with PencilKit」 をご覧ください。

    UIKitやAppKitアプリを 構築している場合は、 ImagePlaygroundViewControllerで同じ体験を ビューコントローラーとして使えます。 プレゼンテーション前に コンセプトとオプションをプロパティに設定し、 その後 imagePlaygroundViewController didCreateImageAtを デリゲートに実装して 結果を受け取ります。 APIはSwiftUIを反映しています。

    では、Postcardsに合わせて シートを設定しましょう。 サイズ、スタイル、パーソナライズなどの オプションを設定します。 ImagePlaygroundOptionsと ImagePlaygroundStyleで Playgroundの設定を 管理できます。 サイズとアスペクト比、 利用可能なスタイル、デフォルトのスタイル、 パーソナライズです。 カードのアートワークや ロック画面の壁紙、 バナーやGenmojiアイコンなど 同じAPIで対応できます。 Postcardsは横長、縦長、正方形の 3つのカード形式に対応しています。 各形式はCGSizeを保持します。 それを.closest(to:に 直接渡すと、 システムが最も近い対応アスペクト比と 解像度にマッピングします。 形式はカードのプロパティのため サイズリクエストは自動的に適応します。 横長カードには幅広の画像、縦長カードには 縦長の画像をリクエストします。 .imagePlaygroundOptionsを使って オプションをシートに渡します。

    ImagePlaygroundStyleには illustrationなど複数の値があります。 sketch、animation、emojiなどです。 imagePlaygroundGenerationStyleは 2つの引数を取ります。 ピッカーが最初に開く デフォルトスタイルと、 表示されるスタイルを制限する 許可リストです。 許可リストに1つのスタイルのみを渡すと ピッカーはそのスタイルに固定されます。

    Postcardsでは 各カードにStylePresetがあり、 これらの値に 直接対応します。 クラシックカードはillustrationがデフォルトで、 illustrationとsketchのみ使用できます。 エクスプレッシブカードは animationがデフォルトで、 illustrationとemojiも使用できます。 スタイルピッカーは開いているカードに 自動的に対応します。

    externalProviderは オプトインのスタイルで、 ユーザーがSettingsで設定した サードパーティプロバイダを使えます。 ChatGPTなどです。 提供するには .allowedStylesリストに追加します。 ユーザーがプロバイダを設定していれば ピッカーにタブが表示されます。 設定していない場合は システムがセットアップを処理し、 確認の必要はありません。 デフォルトスタイルとしても渡せます。 アプリのコンテキストで それが適切な場合は。 いずれにしても、ピッカーは実際に 利用可能なものに適応します。 ImagePlaygroundStyle.emojiは 表情豊かな絵文字サイズのキャラクター向けです。 アクティブ時には 別のクロージャが呼ばれます。 onAdaptiveImageGlyphCreationで、 URLの代わりに NSAdaptiveImageGlyphを受け取ります。 アダプティブ画像グリフは特別で、 テキストにインラインで 直接埋め込めます。 絵文字と同じように、 カードサムネイルに ぴったりの機能です。 受信者名の横に表示されるものに。

    アダプティブ画像グリフで テキスト内でできることすべてについては、 レンダリング、保存、 カスタムテキストエンジンなど、 「Bring expression to your app with Genmoji」 をご覧ください。

    パーソナライズは デフォルトで有効です。 Photosライブラリの 人物を含めることができます。 グリーティングカードを本当に個人的に 感じさせる強力な方法です。 アプリのコンテキストで 不要な場合は、 たとえば商品画像ジェネレーターを 構築しているなら、 options.personalizationを disabledに設定できます。 人物ピッカーと名前検出が シートから完全に消えます。

    最後は、Postcardsがすべてのデバイスで 正しく動作するようにします。 Image PlaygroundはApple Intelligenceを サポートするデバイスで利用できます。 対応言語や地域は 増加しつつあります。 ユーザーがSettingsで画像生成を 有効にしている場合に利用可能です。 supportsImageGenerationという 環境値だけが必要です。 画像生成が完全に利用可能な場合に trueを返します。 デバイスが対応しており、 現在の言語と地域が サポートされており、 ユーザーが有効にしている場合です。 trueのときは CardEditorViewに遷移します。 Image Playgroundの フル体験を提供します。 falseのときは CardPickerViewに遷移します。 シンプルなPhotosピッカーの フォールバックです。 エンタイトルメントも追加の 機能チェックもセットアップも不要です。 環境値と条件分岐だけです。 両方のパスをきれいに サポートするのはこれだけです。

    Image Playgroundを使えば、 アプリに高品質な画像生成体験を 簡単に提供できます。

    デザインの中で 画像が どこに位置するかを考えてください。 友達に送るカード。 自分を表すプロフィール。 言葉にしようとしていた メッセージ。 適切な形と雰囲気が すべてを変えます。 次に、あなたのアプリだけが 知っていることを考えてください。 どんな関係、どんな思い出、 どんなコンテキストを 画像に持ち込めますか。 その結果が作られたかのように 感じさせるために。 その特定の人のために。 それが本当のチャンスです。 Image Playgroundがモデルを提供し、 あなたがストーリーを加えます。 ご視聴ありがとうございました。 では、誰かの冷蔵庫に貼るものを 作ってみましょう!

    • 5:28 - Adopt Image Playground in SwiftUI

      // Adopt Image Playground in SwiftUI
      
      func imagePlaygroundSheet(
          isPresented: Binding<Bool>,
          concepts: [ImagePlaygroundConcept] = [],
          sourceImage: Image? = nil,
          onCompletion: @escaping (URL) -> Void,
          onCancellation: (() -> Void)? = nil
      ) -> some View
    • 5:39 - Add Image Playground sheet with binding to @State

      // Adopt Image Playground
      
      @State private var showingPlayground = false
      
      var body: some View {
          Button("Create image") {
              showingPlayground = true
          }
          .imagePlaygroundSheet(
              isPresented: $showingPlayground,
              onCompletion: { url in
                  var updated = currentCard
                  store.saveImage(url, for: &updated)
              }
          )
      }
    • 6:29 - Seeding the sheet with context from your card

      // Seeding the sheet with context from your card
      
      var concepts: [ImagePlaygroundConcept] {
          [
              .text(card.theme),
              .extracted(from: card.message, title: card.theme),
          ]
      }
      
      var body: some View {
          Button("Create image") {
              showingPlayground = true
          }
          .imagePlaygroundSheet(
              isPresented: $showingPlayground,
              concepts: concepts,
              onCompletion: { url in
                  var updated = card
                  store.saveImage(url, for: &updated)
              }
          )
      }
    • 7:11 - Starting from a reference photo

      // Starting from a reference photo
      
      @State private var sourceImage: Image?
      
      var body: some View {
          Button("Create image") {
              showingPlayground = true
          }
          .imagePlaygroundSheet(
              isPresented: $showingPlayground,
              concepts: concepts,
              sourceImage: sourceImage,
              onCompletion: { url in
                  var updated = card
                  store.saveImage(url, for: &updated)
              }
          )
      }
    • 7:42 - Providing a visual suggestion using a drawing

      // Providing a visual suggestion using a drawing
      
      @State private var drawing = PKDrawing()
      
      var concepts: [ImagePlaygroundConcept] {
          var result: [ImagePlaygroundConcept] = [
              .text(card.theme),
              .extracted(from: card.message)
          ]
          if !drawing.strokes.isEmpty {
              result.append(.drawing(drawing))
          }
          return result
      }
    • 8:06 - Adopt Image Playground in UIKit or AppKit

      // Adopt Image Playground in UIKit or AppKit
      
      func presentViewController() {
          let viewController = ImagePlaygroundViewController()
          viewController.concepts = [
              .text(card.theme),
              .extracted(from: card.message)
          ]
          viewController.delegate = self
          present(viewController, animated: true)
      }
      
      func imagePlaygroundViewController(
          _ viewController: ImagePlaygroundViewController,
          didCreateImageAt url: URL
      ) {
          var updated = card
          store.saveImage(url, for: &updated)
          dismiss(animated: true)
      }
    • 9:02 - Size Specification

      // Size Specification
      
      var options: ImagePlaygroundOptions {
          var options = ImagePlaygroundOptions()
          options.sizeSpecification = .closest(to: card.format.size)
          return options
      }
      
      var body: some View {
          Button("Create image") { showingPlayground = true }
              .imagePlaygroundSheet(
                  isPresented: $showingPlayground,
                  concepts: concepts,
                  onCompletion: { url in
                      var updated = card
                      store.saveImage(url, for: &updated)
                  }
              )
              .imagePlaygroundOptions(options)
      }
    • 9:39 - Styles

      // Styles
      
      var options: ImagePlaygroundOptions {
          var options = ImagePlaygroundOptions()
          options.sizeSpecification = .closest(to: card.format.size)
          return options
      }
      
      var body: some View {
          Button("Create image") { showingPlayground = true }
              .imagePlaygroundSheet(
                  isPresented: $showingPlayground,
                  concepts: concepts,
                  onCompletion: { url in
                      var updated = card
                      store.saveImage(url, for: &updated)
                  }
              )
              .imagePlaygroundOptions(options)
              .imagePlaygroundGenerationStyle(
                  pendingStylePreset.defaultStyle,
                  in: pendingStylePreset.allowedStyles
              )
      }
    • 10:27 - External Provider Style

      // External Provider Style
      
      var options: ImagePlaygroundOptions {
          var options = ImagePlaygroundOptions()
          options.sizeSpecification = .closest(to: card.format.size)
          return options
      }
      
      var body: some View {
          Button("Create image") { showingPlayground = true }
              .imagePlaygroundSheet(
                  isPresented: $showingPlayground,
                  concepts: concepts,
                  onCompletion: { url in
                      var updated = card
                      store.saveImage(url, for: &updated)
                  }
              )
              .imagePlaygroundOptions(options)
              .imagePlaygroundGenerationStyle(
                  pendingStylePreset.defaultStyle,
                  in: pendingStylePreset.allowedStyles + [.externalProvider]
              )
      }
    • 11:02 - Generating an expressive icon for the card thumbnail

      // Generating an expressive icon for the card thumbnail
      
      @State private var showingIconPlayground = false
      
      var body: some View {
          Button("Create icon") {
              showingIconPlayground = true
          }
          Color.clear
              .imagePlaygroundSheet(
                  isPresented: $showingIconPlayground,
                  concepts: concepts,
                  onCompletion: { _ in
                  } ,
                  onAdaptiveImageGlyphCreation: { glyph in
                      var updatedCard = card
                      store.saveIcon(glyph, for: &updatedCard)
                  }
              )
              .imagePlaygroundGenerationStyle(.emoji, in: [.emoji])
      }
    • 12:01 - Disabling personalization when it doesn't fit your context

      // Disabling personalization when it doesn't fit your context
      
      var options: ImagePlaygroundOptions {
          var options = ImagePlaygroundOptions()
          options.sizeSpecification = .closest(to: card.format.size)
          options.personalization = .disabled
          return options
      }
    • 12:32 - Supports image generation

      // Supports image generation
      
      @Environment(\.supportsImageGeneration)
      private var supportsImageGeneration
      
      var body: some View {
          NavigationLink(card.recipient) {
              if supportsImageGeneration {
                  CardEditorView(card: card)
              }γelse {
                  CardPickerView(card: card)
              }
          }
      }
    • 0:00 - Introduction
    • The ImagePlayground framework brings high-quality, true-to-life image creation into your app, on devices with Apple Intelligence support.

    • 2:03 - Capabilities
    • Image Playground enables the creation of high-quality images with people, styles, and different aspect ratios.

    • 5:02 - Adopt Image Playground
    • Present the Image Playground sheet and seed it with context from your app.

    • 8:29 - Options
    • Configure the Image Playground sheet with options like size, style, and personalization.

    • 12:15 - Availability
    • Ensure your app gracefully handles both supported and unsupported devices, presenting the full Image Playground experience when available.

Developer Footer

  • ビデオ
  • WWDC26
  • Image Playgroundによる高品質な画像の生成
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • Apple Intelligence
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • Mini Apps Partner Program
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    最新ニュースを読む。
    Apple Developerアプリを入手する。
    Copyright © 2026 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン