View in English

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

クイックリンク

5 クイックリンク

ビデオ

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

その他のビデオ

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

  • 概要
  • トランスクリプト
  • コード
  • UICollectionView 上級編

    強力な新機能を使いやすくする、UICollectionViewの新しい機能について学習します。diffableデータソースでセクションスナップショットを使用して展開、折りたたみできるアウトラインを作成する方法を説明します。また、コレクションビューでUITableViewのようなインターフェイスを作成するコンポジションレイアウトでリストを構築する方法も紹介します。セルをデキューしたりコンテンツとスタイルを構成する最新の技術についても学習します。 本セッションの前に、コンポジションレイアウトについて理解しておくことをお勧めします。詳細な情報については、WWDC19の “Advances in Collection View Layout” を視聴してください。

    リソース

    • Implementing modern collection views
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC21

    • 超高速なリストとコレクションビューの構築

    WWDC20

    • モダンなセルの構成
    • iPad用ビルド
    • UI Collection Viewにおけるリスト

    WWDC19

    • コレクションビューレイアウトの最新情報
    • UIデータソースの最新情報
  • ダウンロード

    こんにちは WWDCへようこそ “UICollectionViewの利点” ようこそ スティーブ・ブリーンです UIKitチームのエンジニアをしています この動画では iOS 14のUICollectionViewの進歩について 少しお話したいと思います 話を始める前に この動画のコンパニオンサンプルプロジェクトの 一部をご紹介します 絵文字エクスプローラーといいます このサンプルには そのデザインに多くの 興味深いコンポーネントが組み込まれています 最初のセクションには 絵文字を水平方向に スクロールするグリッドがあります これは今日のアプリケーションでは かなり一般的なデザイン要素です さて 絵文字エクスプローラーの 中央のセクションは特に斬新です 拡張可能な折りたたみ式のアウトラインです これはiOS 14で新しくなりました 最後に 最後のセクションには UITableViewのような 怪しげなデザインがありますね UICollectionViewの中央に 配置されています これが絵文字エクスプローラーです この動画全体を通して このサンプルプロジェクトを参照します UICollectionViewを構成するAPIは 3つの異なるカテゴリに 分類することができます データ レイアウト プレゼンテーションです UICollectionViewの 斬新なコンセプトの1つは コンテンツの“内容”であるデータと レンダリングする“場所”であるレイアウトとの の懸念を分離することでした この区別は UICollectionViewの 柔軟性を高めるために不可欠なものです UICollectionViewがiOS 6で 初めてリリースされたとき データはUICollectionViewDataSourceという index Pathベースのプロトコルで― 管理されていました レイアウトについては UICollectionViewLayoutという抽象クラスと UICollectionViewFlowLayoutという 具体的なサブクラスを公開していましました

    そして プレゼンテーション側では 2つのビュータイプを公開しました UICollectionViewCellと UICollectionReusableViewです iOS 13では データとレイアウトにそれぞれ Diffable Data SourceとCompositional Layoutの 2つの新しいコンポーネントを導入しました これらは現在 UICollectionViewを用いて アプリケーションを構築する際に使うAPIです

    iOS 14では これらの 最新のAPIをベースに構築し この3つのAPIカテゴリ全てに渡って 強化された新機能を Diffable Data SourceとCompositional Layout そしてCellに導入しました

    まずは Diffable Data Sourceの 機能強化についてお話しましょう iOS 13で導入されたDiffable Data Sourceは 新しいスナップショットデータ型の追加により UI Stateの管理を大幅に簡素化します スナップショットは 一意のセクションと アイテム識別子を使用してUI State全体を カプセル化します UICollectionViewを更新する際には まず新しいスナップショットを作成し 現在のUI Stateを入力してから データソースに適用します Diffable Data Sourceは差分を計算し アニメーションを自動的に生成します 追加の作業は必要ありません このAPIの詳細については WWDC 2019の動画 WWDC2019の動画“Advances in UI Data Sources”で取り上げました この動画をチェックすることを お勧めします

    iOS 14では セクションスナップショットという 新しいスナップショット型を追加しています そして その名の通り セクションスナップショットは UICollectionView内の単一セクションの データをカプセル化します この強化には2つの理由があります 第一に データソースを セクションサイズの― データの塊に構成しやすくするため

    そして第二に 階層データの モデリングを可能にするためです これはiOS 14全体で見られる一般的な ビジュアルデザインである― アウトラインスタイルのUIのレンダリングを サポートするために必要となります それでは 絵文字エクスプローラーに戻り セクションスナップショットを使用して― サンプルアプリケーションの 構築方法を見てみましょう まず 水平方向にスクロールするセクションでは 単一のセクションスナップショットを使用して ここにあるコンテンツを完全にモデル化します 次に 2番目のセクションです この拡張可能で折りたたみ可能な アウトラインスタイルでは 2番目のセクションスナップショットを使用し この階層データをモデル化しています そして最後に リストのセクションでは 3番目のセクションスナップショットで この セクションのコンテンツを再びモデル化します そこで 絵文字エクスプローラーでは Diffable Data Sourceを3つの異なる セクションスナップショットに構成し それぞれが1つのセクションの コンテンツを表しています 以上が iOS 14のUICollectionViewの Diffable Data Sourceに追加された― 新しいセクションスナップショットの概要です しかし それだけではありません また 新たに並び替えAPIも追加しました これらの新しいAPIをより深く掘り下げるには “Advances in Diffable Data Sources”の動画を ご覧ください 次に iOS 14のCompositional Layoutの 進歩についてお話します Compositional Layoutは iOS 13で導入されましたが より小さくて論理のわかりやすい 少量のレイアウトを一緒に構成することで リッチで複雑なレイアウトを 構築できるようになりました Compositional Layoutが高速なのは レイアウトがどのように 動作すべきかではなく レイアウトをどのように 見せたいかを記述するからです Compositional Layoutには より洗練されたUIを構築するのに役立つ― セクション固有のレイアウト機能も 含まれています 直交にスクロールするセクションにも 対応しています Compositional Layoutの詳細については WWDC2019の動画“Advances in Collection View Layout”をご覧ください

    iOS 14ではCompositional Layoutの基礎に Listsと呼ばれる新機能を加えて構築しました

    Listsを使用すると UITableViewのようなセクションを 任意のUICollectionViewに追加できます そして これらのリストには スワイプアクションや 多くの一般的なセルレイアウトなど UITableViewに求めていた機能が 豊富に含まれています リストスタイルのレイアウトを 作成するのは簡単です ListsはCompositional Layout上に 構築されているので セクションごとに 他の種類のレイアウトとListsを 簡単に混在させ 一致させることができます Compositional Layoutを使って リストスタイルのレイアウトを― 簡単に作成する方法を コードスニペットで確認してみましょう

    ご覧のように これはたった2行のコードで 非常にシンプルです この例では UICollectionViewレイアウトを 作成しています CollectionViewの各セクションは insetGroupedの外観を持つ リストになっています そして そのレイアウトは このような感じになります

    Compositional Layoutリストの 簡単な紹介は以上です でも Listsには 他にも たくさんのことがあります 新しい具体的なUICollectionViewListCell ヘッダーとフッターのサポート そして多くのiPadOSシステムアプリケーションで 見られる新しいSidebarの外観があります 深く掘り下げたい方は 動画“Lists in UICollectionView”をご覧ください

    最後にUICollectionViewと 最新のセルについて少しお話しましょう

    iOS 14では セル登録という 新しいAPIを使用して セルを構成するための 真新しい方法があります セル登録は ビューモデルから セルを設定するための― シンプルで再利用可能な方法です セル登録では セルクラスやニブを登録して 再利用識別子と関連付けるという 余分な手順を省くことができます 代わりに 汎用的な登録型を使用します これは ビューモデルから 新しいセルを設定するための 設定クロージャを組み込んでいます このAPIの動作を見てみましょう まず セル登録を作成します これはセルクラス この場合は MyCellですが それとViewModelクラスにまたがる 汎用的なものです 登録でクロージャが使用されることに 注意してください これは新しいセルが構築されるたびに 呼び出されます ここでは ViewModelから セルのコンテンツを構成します セル登録を使用することで 登録を呼び出す 余分な手順が不要になりました 登録を使用して 新しいAPIの dequeueConfiguredReusableCellで Diffable Data Sourceの セルプロバイダーから セル登録を使用するだけです セル登録については以上です 次は セルコンテンツの構成です セルコンテンツの構成は― UITableViewの標準的なセル型で 見られるのと同じような セルの標準レイアウトを提供します これらの構成は任意のセル または 汎用的なUIViewで使用することができます とても柔軟性があります これらがどのように機能するか知るために いくつか視覚的な例をチェックしてみましょう ここでは とても標準的な見た目の セルレイアウトで画像とテキストを配置した― 簡単な例を見ることができます これはvalueCell変数です 2番目のテキストがセルの末尾にあります

    最後に subtitleCellです この場合は2番目のテキストが メインテキストの下に表示されます

    ここで注目すべきは これらの コンテンツ構成の型が非常に軽量であり コンテンツがどのように表示されるか 簡単に記述することです このフレームワークは レイアウトに関する 全ての考慮事項を処理して 自動的に最適化し パフォーマンスを向上します そして最後に背景の構成です これらはコンテンツの設定に 非常に似ていますが 色や境界線スタイルなどのプロパティを 調整する機能によって 任意のセルの背景に適用されます ここまで 最新のセル構成について ほんの少しだけ説明しました より深く掘り下げるには 動画“Modern Cell Configuration”を参照してください 以上で iOS 14のCollection Viewの 進歩に関する概要を終わります サンプルアプリケーションをダウンロードし これらのAPIの動作を見てみてください そして 私たちのコードを基礎として用い アプリケーションに機能を追加してください さらに詳しく知りたい方は 関連動画をチェックしてみてください ご視聴 ありがとうございました

    • 6:15 - UICollectionViewCompositionalLayout Lists

      let configuration = UICollectionLayoutListConfiguration(appearance: .insetGrouped)
      let layout = UICollectionViewCompositionalLayout.list(using: configuration)
    • 7:33 - Cell Registration

      // Example of using new iOS 14 cell registration
      
      let reg = UICollectionView.CellRegistration<MyCell, ViewModel> { cell, indexPath, model in
         // configure cell content 
      }
      
      let dataSource = UICollectionViewDiffableDataSource<S,I>(collectionView: collectionView) {
                           collectionView, indexPath, item -> UICollectionViewCell in
         return collectionView.dequeueConfiguredReusableCell(using: reg, for: indexPath, item: item)
      }
    • 8:32 - .cell Content Configuration

      var contentConfiguration = UIListContentConfiguration.cell()
      contentConfiguration.image = UIImage(systemName:"hammer")
      contentConfiguration.text = "Ready. Set. Code"
      cell.contentConfiguration = contentConfiguration
    • 8:38 - .valueCell Content Configuration

      var contentConfiguration = UIListContentConfiguration.valueCell()
      contentConfiguration.image = UIImage(systemName:"hammer")
      contentConfiguration.text = "Ready. Set. Code."
      contentConfiguration.secondaryText = "#WWDC20"
      cell.contentConfiguration = contentConfiguration
    • 8:44 - .subtitleCell Content Configuration

      var contentConfiguration = UIListContentConfiguration.subtitleCell()
      contentConfiguration.image = UIImage(systemName:"hammer")
      contentConfiguration.text = "Ready. Set. Code."
      contentConfiguration.secondaryText = "#WWDC20"
      cell.contentConfiguration = contentConfiguration
  • 特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。

    クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。

Developer Footer

  • ビデオ
  • WWDC20
  • UICollectionView 上級編
  • メニューを開く メニューを閉じる
    • 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.
    利用規約 プライバシーポリシー 契約とガイドライン