View in English

  • メニューを開く メニューを閉じる
  • Apple Developer
検索
検索を終了
  • Apple Developer
  • ニュース
  • 見つける
  • デザイン
  • 開発
  • 配信
  • サポート
  • アカウント
次の内容に検索結果を絞り込む

クイックリンク

5 クイックリンク

ビデオ

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

WWDC23に戻る

ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。

  • 概要
  • トランスクリプト
  • 写真ピッカーのアプリへの組み込み

    アプリから簡単かつ安全で確実に写真ライブラリにアクセスする方法を紹介します。組み込みPickerの利用開始方法や、オプションメニュー、HDR静止画像サポートについて説明します。また、Pickerが既存のインターフェイスに馴染むようUIのカスタマイズオプションの活用方法についても紹介します。

    リソース

    • Implementing an inline Photos picker
    • Selecting Photos and Videos in iOS
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC23

    • プライバシーの新機能

    WWDC22

    • 写真ピッカーの最新情報
    • PhotoKitの変更履歴について

    WWDC20

    • 新しいPhotosピッカーの紹介
  • このビデオを検索

    ♪ ♪

    こんにちは Justinです Photosチームのメンバーです 今日はシステムPhotoPickerの 改善点とアプリで使用できる 新APIについてお話しします iOS 14でPickerのインターフェイスが リデザインされました 検索やズームグリッドなど 素晴らしい機能がたくさんあります 何よりも写真ライブラリへの アクセス承諾が不要です カスタムPickerを システムPickerに 取り替えることをお勧めします APIも非常に使用が簡単です わずか数行のコードで Pickerを提供でき ユーザーが選択した写真を受け取れます 昨年の 「What's new in the Photos picker」で 新APIの詳細をご覧ください ここではアプリに システムPickerを組み込むための 新APIに焦点を当て 写真を選ぶ体験をシームレスにします また新オプションメニューと HDR写真及びHDRビデオ シネマティックモードをサポートする際の ベストプラクティスについてお話しします

    まずその前に Pickerのアクセスモデルについてです

    これは先程お見せしたPickerです アプリ内で動作しているようですが 実際はアプリ上にレンダーした 別のプロセスを動作しています アプリは直接Pickerにはアクセスできず スクリーンショットも撮れません

    ユーザーが選んだものだけが アプリに返されます 今年からアウトオブプロセスPickerに さらなる設定オプションが加わります 新しい変更子 .photosPickerDisabledCapabilitiesは 一部のPicker機能を無効にでき 独自のものを実行できます 例えばselection actionsを無効にすれば CancelボタンやAddボタンを 隠すことができます .photosPickerAccessoryVisibility 変更子はナビゲーションバーやツールバーなど Pickerコンテンツ周辺の アクセサリインターフェイスを隠せます

    また.frameや.paddingなどの 基本SwiftUI変更子で Pickerのサイズや位置を 特定することもできます でももしAddボタンが隠れていたら multiple selection modeで どうアセットを受け取るのでしょう? Selection behaviorを .continuousに設定し live selection updatesを受け取ります そして .photosPickerStyle(.inline)変更子で Pickerをアプリに組み込んで 別のシートで提供する必要がなくなります

    Pickerが組み込まれるものの まだレンダーは別プロセスです ライブラリアクセスの承諾がなく 写真が表示されるのを 不安に思うユーザーもいるでしょう ユーザーがアプリを 安心して使用できるように 組み込み型Pickerが 初めて表示された時自動的に 選択した写真のみ アクセスできる由を説明します PrivacyバッジがPickerはプライベートで プロセス外にあることを示します 既にフルサイズPickerを使用しているなら ユーザーがiOS 17に最新化すると バナーが表示されます プライバシー設定画面も更新され さらなる詳細が説明されています さらにライブラリアクセス承諾プロンプトも 変更されました これらの詳細は 「What's new in privacy」 をご覧ください それではAPIに戻りましょう ユースケースをご紹介し それぞれのAPIの詳細をご説明します アウトオブプロセスPickerを組み込む場合 .photosPickerStyle変更子を使います 独自のインターフェイスを使うなら .photosPickerAccessoryVisibility を使用します また特定の縁の周りの アクセサリをコントロールできる 引数もあります デフォルト値はすべての縁です Picker機能を独自のもので 実行したいなら .photosPickerDisabledCapabilities 変更子を使います 最後にselection updatesに リアルタイムで変更及び反応するなら selectionBehaviorを .continuousに設定します では何がアクセサリと考えられるでしょう? iOSではトップアクセサリは ナビゲーションバーで ボトムアクセサリはツールバーです iPadOSとmacOSでは メインアクセサリはサイドバーです トップとボトムアクセサリは iOSと似ています 次に無効にできるPicker機能と それがどうインターフェイスに 影響するかについてです

    検索機能が無効だと検索バーは隠されます Collection navigationが無効だと アルバムtabsは隠されます iPadOSとmacOSでは サイドバーも隠されます Staging areaが無効になると ツールバーはステータスラベルに 置き換えられます Continuous selectionなしで selection actionsを無効にすると Cancelボタンだけが隠され Addボタンはまだ表示されます そうでなければアプリは ユーザーの選択したものを受け取れません Selection behaviorを .continuousに設定した場合 両ボタンとも隠されます 新しいPickerスタイルを見てみましょう .presentationスタイルと .inlineスタイルに加え Pickerは.compactスタイルも サポートします これはデフォルトの .presentationスタイルです これはアクセサリが隠された状態の .inlineスタイルです これが.compactスタイルです 上下のスペースが 非常に限られている時に 一列のPickerを より多くの位置に配置できます ではデモですべてをつないでみましょう 既にテキストで写真に注釈を付ける 簡単なアプリを作ってあります では今何ができるかお見せしましょう Pickerをmodel sheetとして表示し 写真を選び 記述を足します このデモではSelect Photosボタンを 組み込み型Pickerと入れ替えます .photosPickerStyle(.inline)変更子を足し 試してみます

    (タイプ音)

    うまくいきましたが 見かけがよくありません まだリストの更新に Addボタンを押さねばならず Pickerがリサイズすると ツールバーはデバイスの下端まで 拡張されていません

    ご心配なく 少し手を加えるだけでよくなります まずPickerはセーフエリアの挿入を 優美に処理できるため .ignoresSafeArea変更子を使って Pickerを画面の下端まで拡張します 次にPickerで写真を選び次第 リストが更新されるようにします この変更は非常に簡単です Selection behaviorを .continuousに設定するだけです

    リストがライブ更新されるようになり ナビゲーションバーボタンは 必要がなくなりました ですので .photosPickerDisabledCapabilities 変更子で除去します

    これでPickerが機能しますが ルックスもよくしたいと思います

    ナビゲーションバーと ツールバーを隠しましょう またPickerの高さを固定します .photosPickerAccessoryVisibility 変更子で バーを隠し ほかのSwiftUI views同様 Pickerの高さを調整します

    (タイプ音)

    よくなりました ほんの数分で 組み込み型Pickerを表示できるよう アプリを最新化しました デバイスでテストするためビルドします ズーム可能なグリッドで 写真を簡単にナビゲートできます 写真を選ぶと自動的にアプリに現れます この組み込み型Pickerで写真の選択が 非常に簡単になりました

    デモは以上です

    iPhoneをデモに使いましたが 同じAPIをiOSでも iPadOSでもmacOSでも使用できます SwiftUIに加えUIKitとAppKitアプリでも 同じAPIが使用できます ではUIKitとAppKit APIを見てみましょう 同じPHPickerConfiguration APIで 組み込み型Pickerを使用できます Selectionを.continuousに設定し continuous selection behaviorを オプトインします またmodeを.compactに設定し Pickerを一行レイアウトに設定します edgesWithoutContentMarginsで ナビゲーションバーなどアクセサリを隠し disabledCapabilitiesで 幾つかのPicker機能を無効にします SwiftUI APIでは .photosPickerStyle(.inline)変更子で Pickerを組み込めますが child view controllerとして container controllerに 足さねばなりません Pickerのフレームは手動で選ぶか Auto Layout制約で Picker viewのサイズと位置を決めます Subviewを追加した後 Pickerに足したことを伝えるだけです

    PHPickerConfiguration.Update APIは ユーザーに表示したまま Pickerを更新できます また選んだものの選択解除や再整理は 既存のdeselectAssetや moveAsset APIsを使用します 次は新しいオプションメニューと それがどうアプリに影響するかについてです 新しいオプションメニューで ユーザーは何を共有できるか さらに管理できます デフォルトでは すべてのメタデータが含まれますが 位置情報のような繊細なメタデータを 選んだ写真から取り除くことができます

    PhotosPickerとTransferable APIを 使用しているなら 新しいオプションメニューの適用に 何もする必要はありません PHPickerViewController APIを 使用している場合も 何もする必要はありません UIImagePickerController APIを 使用していたり フルライブラリアクセスがある場合は オプションメニューはサポートしません オプションメニューについては以上です 次はシステムPickerを使用する上での HDR写真や動画 そしてシネマティックモードの サポートについてです デフォルトとしてPickerは JPEGなどの互換性ある形式に アセットを自動的に変換します しかし変換されたアセットには オリジナルの情報が 含まれていないかもしれません ですのでHDRコンテンツを受けたいなら 自動変換は避けるべきです オリジナルの形式で 写真と動画を受け取るには .current encoding policyを使用し .imageや.movieなどの 一般的なコンテンツタイプを リクエストします .jpegなどの特定タイプをリクエストすると encoding policyが― .currentの場合でも 変換される可能性があります HDRサポートに関する詳細は 「Support HDR images in your app」 をご覧ください これはオリジナル形式の写真を 受け取るコードの例です preferredItemEncodingが.currentに importedContentTypeが .imageに設定されています シネマティックモードビデオの場合 奥行き効果を焼き込んだ レンダー版をPickerから与えられます もしdecision pointsが必要なら 写真ライブラリアクセスをリクエストし PhotoKitでビデオを フェッチしてください シネマティックモードの詳細は 「Support Cinematic mode videos in your app」をご覧ください 組み込み型Pickerは柔軟性があり いろんな可能性が広がります オプションメニューで 更なる情報の管理方法が得られるため ライブラリアクセス許可のリクエストは 必要がない場合はできる限り避けてください

    ご視聴ありがとうございました ♪ ♪

Developer Footer

  • ビデオ
  • WWDC23
  • 写真ピッカーのアプリへの組み込み
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習
    • オープンソース(英語)
    • セキュリティ
    • 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(英語)
    • 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 © 2025 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン