UIDocumentPickerViewController — 概要、iOSでのドキュメント操作

著者: IT Sectr 公開日: 2026-07-11 読了時間: 6 分

UIDocumentPickerViewController は、ファイルシステム、iCloud Drive、サードパーティのクラウドストレージからドキュメントを選択するためのiOSシステムコントローラーです。このコントローラーは、画像、PDF、テキスト、オーディオなど、あらゆるタイプのファイルを開いてインポートするための統一インターフェースを提供します。Apple Developer Documentation (2025) によると、UIDocumentPickerViewController は import モードと export モードをサポートし、選択されたファイルをデリゲートを介してURL参照として返します。

主要ポイント

  • UIDocumentPickerViewController は、あらゆるソースからファイルを選択するためのiOSのシステムドキュメントピッカーです。
  • Import mode はファイルをアプリのサンドボックスにコピーし、export mode は読み取り用のURLを提供します。
  • UTIフィルター は表示されるドキュメントの種類を制限します:PDF、画像、テキストなど。
  • UIDocumentPickerDelegate は選択結果とファイルアクセスエラーを処理します。
  • Multiple selection は allowsMultipleSelection フラグを通じて複数ファイルの選択をサポートします。

UIDocumentPickerViewController とは?

UIDocumentPickerViewController は、ドキュメントを選択するためのシステムインターフェースを提供するUIKitコントローラーです。UIKit フレームワークの一部であり、iOS 8 から利用可能です。このコントローラーは、ローカルストレージ、iCloud Drive、および登録されたサードパーティのクラウドサービスを含むファイルブラウザを表示します。

コントローラーは非同期で動作します:present を呼び出すと、ユーザーはシステムダイアログを表示し、ファイルを選択し、結果がデリゲートを通じて返されます。アプリは選択したファイルにアクセスするための特別な権限を必要としません — システムピッカーが自動的にURIへの一時的なアクセスを提供します。

UIDocumentPickerViewController はUIPopoverPresentationControllerを介して iPad をサポートし、iPhone用のアダプティブインターフェースを提供します。iOS 14 以降、コントローラーは更新されたデザインとiPadOSでのサイドバーナビゲーションのサポートを受けています。

動作モード:import と export

UIDocumentPickerViewController は2つの主要モードで動作し、それぞれアプリがファイルにアクセスする方法を決定します。モードはタスクに応じて forOpeningContentTypes または forExporting パラメータを通じて設定されます。

Import mode (forOpeningContentTypes) は選択したファイルをアプリのサンドボックスにコピーします。アプリはファイルの自身のコピーへのURLを受け取り、そのコピーはアプリのみがアクセスできます。これは安全なモードです:他のアプリのファイルは変更されず、コピーは現在のアプリによって完全に制御されます。

Export mode (forExporting) はコピーせずに元のファイルへのURLを提供します。アプリはリンクを介してファイルを読み取れますが、変更は保存されません。このモードは、ファイルを別のアプリに転送するか、メールで送信する必要がある場合に使用されます。変更を書き込むには、scoped security-scoped URL とともに open モードが使用されます。

ピッカーの設定とUTIフィルタリング

UTI(Uniform Type Identifier) はAppleエコシステムにおけるコンテンツタイプ識別システムです。UIDocumentPickerViewController は forOpeningContentTypes を通じて渡されたUTI配列に従って表示されるファイルをフィルタリングします。UTIが指定されていない場合、ピッカーはすべてのファイルタイプを表示します。

  • PDF — com.adobe.pdf。ピッカーはPDFドキュメントのみを表示します。
  • 画像 — public.image。JPEG、PNG、HEICおよびその他の形式を含みます。
  • テキスト — public.plain-text。.txt、.csvおよびその他のテキストファイルを表示します。
  • オーディオ — public.audio。MP3、AAC、WAVおよびLossless形式を含みます。
  • ビデオ — public.movie。MP4、MOV、AVIおよびその他のビデオ形式を表示します。

複数のタイプを選択するには、配列 [UTType.pdf, UTType.image] を渡します。iOS 14 以降、Appleは文字列定数の代わりに UTType を使用することを推奨しています。UIDocumentPickerViewController は、選択されたプロバイダーが変更されると、表示されるタイプのリストを自動的に更新します。

コード例:Swiftでのドキュメント選択

実装 SwiftでのUIDocumentPickerViewController は最小限です:UTIタイプでコントローラインスタンスを作成し、デリゲートを設定してpresentを呼び出します。ファイルが選択されると、デリゲートは didPickDocumentsAt メソッドでURLの配列を受け取ります。各URLはセキュリティスコープの参照であり、startAccessingSecurityScopedResource を呼び出す必要があります。

swift
let picker = UIDocumentPickerViewController(
    forOpeningContentTypes: [.pdf, .image],
    asCopy: true
)
picker.delegate = self
picker.allowsMultipleSelection = false
present(picker, animated: true)

// MARK: - UIDocumentPickerDelegate
func documentPicker(
    _ controller: UIDocumentPickerViewController,
    didPickDocumentsAt urls: [URL]
) {
    guard let url = urls.first else { return }
    url.startAccessingSecurityScopedResource()
    defer { url.stopAccessingSecurityScopedResource() }
    // urlからファイルを読み取る
}

Security-Scoped リソース

セキュリティスコープのURLは、読み取り前に startAccessingSecurityScopedResource を呼び出す必要があります。このメソッドは、アプリがサンドボックス外のファイルに一時的なアクセスを取得していることをシステムに通知します。終了後は必ず stopAccessingSecurityScopedResource を呼び出してください。そうしないと、システムがアクセスをブロックする可能性があります。

UIDocumentPickerDelegate と結果の処理

UIDocumentPickerDelegate は、2つのメソッドを通じてファイル選択結果を受け取ります:成功時の didPickDocumentsAt とキャンセル時の didPickDocumentsAt です。ユーザーが選択せずにピッカーを閉じた場合、iOSは自動的にキャンセルメソッドを呼び出します。

エラー処理にはURLの利用可能性の確認が含まれます。ユーザーがiCloud Driveからファイルを選択したがデバイスがオフラインの場合、URLが利用できない可能性があります。読み取り前に FileManager.default.isReadableFile を確認し、ユーザーに明確なエラーメッセージを表示することをお勧めします。

iOS 14+ では、URLの配列を持つ新しいメソッド documentPicker:didPickDocumentsAt が利用可能です。古いメソッド didPickDocumentAt(単一)は非推奨です。allowsMultipleSelection が無効でも常に配列を処理してください — Appleは単一のハンドラーを使用することを推奨しています。

iPadでのUIDocumentPickerViewController

iPad ではUIDocumentPickerViewController の特別な設定が必要です。iPadでは、ピッカーはポップオーバーとして表示され、正しい配置のためにsourceViewを指定する必要があります。sourceViewがないと、コントローラーはiPadOSで例外によりクラッシュする可能性があります。

ポップオーバーには、popoverPresentationController プロパティが使用されます。sourceViewとsourceRectを指定して、ボタンやテーブルセルにアンカーします。iPhoneでは、このコードは効果がありません — iOSは自動的にピッカーを全画面表示します。iPadOS 16 以降、コントローラーは改善されたナビゲーションのためにサイドバーと分割ビューをサポートしています。

UIDocumentPickerViewController のアダプティブデザインは、全画面(iPhone)とポップオーバー(iPad)を自動的に切り替えます。開発者は異なるデバイス用に個別のコントローラーを実装する必要はありません — iPad用にpopoverPresentationControllerを正しく設定するだけで十分です。

よくある質問

iOSにおけるUIDocumentPickerViewControllerとは?

UIDocumentPickerViewController は、iCloud Drive、ローカルストレージ、サードパーティのクラウドサービスからドキュメントを選択するためのシステムUIKitコントローラーです。コントローラーはデリゲートを介して選択されたファイルのURLを返します。

UIDocumentPickerViewControllerでPDFを選択するには?

forOpeningContentTypes: [.pdf] でコントローラーを作成します。これにより表示がPDFファイルのみに制限されます。デリゲートを設定し、presentを呼び出してシステムピッカーを表示します。

import mode と export mode の違いは?

Import mode はファイルをアプリのサンドボックスにコピーします — 変更はオリジナルに影響しません。Export mode はコピーせずに読み取り専用で元のファイルへのURLを提供します。

iOSのsecurity-scoped URLとは?

Security-scoped URL は、アプリのサンドボックス外のファイルへの参照です。読み取り前に startAccessingSecurityScopedResource を呼び出し、終了後に stopAccessingSecurityScopedResource を呼び出します。

iPad用にUIDocumentPickerViewControllerを設定するには?

sourceViewとsourceRectを指定して popoverPresentationController を設定します。これがないと、コントローラーはiPadで例外をスローする可能性があります。iPhoneでは、ポップオーバー設定は無視されます — ピッカーは全画面表示になります。

まとめ

  • UIDocumentPickerViewController はiOS 8から利用可能なドキュメント選択用のiOSシステムコントローラーです。
  • Import mode はファイルをアプリのサンドボックスにコピーし、export mode はオリジナルへの読み取り専用アクセスを提供します。
  • UTIフィルタリング はファイルタイプを制限します:PDF、画像、テキスト、オーディオ、ビデオなど。
  • UIDocumentPickerDelegate はURLの配列を持つ didPickDocumentsAt メソッドで選択結果を処理します。
  • Security-scoped URL はファイル読み取り前に startAccessingSecurityScopedResource の呼び出しが必要です。
  • iPad設定 には、正しい表示のために sourceView を持つ popoverPresentationController の設定が含まれます。
  • iOS 14+ は更新されたデザイン、サイドバー、文字列UTIの代わりにUTTypeのサポートを追加しました。

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください