UIDocumentInteractionControllerは、ドキュメントのプレビューやアプリ間でのファイル共有を行うためのiOSコントローラーです。Open In機能を実装しており、ユーザーは互換性のある任意のアプリでファイルを開いたり、メールで送信したり、クラウドストレージに保存したりできます。Apple Developer Documentation(2025)によると、このコントローラーはPDF、画像、オフィスドキュメントを表示するための組み込みPreviewもサポートしています。
重要なポイント
UIDocumentInteractionControllerは、ドキュメントを扱うためのシステムインターフェースを提供するUIKitクラスです。ファイルを選択するUIDocumentPickerViewControllerとは異なり、このコントローラーはアプリの既存のファイルを操作し、プレビュー、他のアプリで開く、印刷、送信といったアクションをユーザーに提供します。
このコントローラーはViewControllerではありません — presentを使って呼び出すことはできません。代わりに、presentOptionsMenuまたはpresentPreviewメソッドを通じてシステムアクションメニューを表示します。メニューには、指定されたファイルタイプを処理するよう登録されたすべてのアプリが表示されます。
UIDocumentInteractionControllerはiOS 2.0から利用可能で、ドキュメントを扱うための最古のAPIの1つです。古さにもかかわらず、サードパーティライブラリなしでOpen In機能と組み込みプレビューを実装するために今でも重要です。
Previewは、UIDocumentInteractionControllerが提供する組み込みドキュメントビューアです。PDF、画像、テキストファイル、オフィスドキュメント(.doc、.xls、.pptを含む)をサポートしています。Previewは標準のQuick Lookと同様のトランジションアニメーションで表示されます。
Previewを起動するには、presentPreviewメソッドを呼び出します。コントローラーには、ドキュメントを表示するためのUIViewControllerを返すpreviewControllerForDocumentInteractionControllerメソッドを実装するデリゲートが必要です。通常はselfまたはナビゲーションコントローラーを返します。
組み込みPreviewは追加のフレームワークやライセンスを必要としません。urlプロパティにURLが渡された任意のファイルで動作します。ユーザーはPDFページをスクロールしたり、画像を拡大したり、ドキュメントからテキストをコピーしたりできます。
Open InはUIDocumentInteractionControllerの主要機能です。指定されたファイルタイプを開くことができるアプリのリストを表示します。ユーザーがターゲットアプリを選択すると、iOSはファイルをそのサンドボックスにコピーし、アプリを起動してドキュメントを扱います。
アプリリストは、他のアプリのInfo.plistに登録されたDocument Typeエントリに基づいて自動的に生成されます。アプリがPDFサポートを登録している場合、PDFファイルのOpen Inメニューに表示されます。システムは標準アクション(印刷、メール送信、ファイルに保存)も表示します。
Open Inはファイルをコピーします — ターゲットアプリは独自のコピーを受け取るため、変更は元のアプリに保存されません。保存を伴う編集が必要な場合は、セキュリティスコープ付きURLを使用してエクスポートモードでUIDocumentPickerViewControllerを使用してください。
iOS 6以降、UIActivityViewControllerが利用可能になり、ファイル共有もサポートしています。UIDocumentInteractionControllerとは異なり、UIActivityViewControllerはAirDrop、メール、メッセージ、カスタムUIActivityをサポートするシステムアクティビティシートを表示します。単純なファイル共有には、より近代的なAPIとしてUIActivityViewControllerが推奨されます。
UIDocumentInteractionControllerを介したOpen Inの実装は、インスタンスを作成し、URLとデリゲートを設定し、presentOptionsMenuを呼び出すだけの数行のコードで済みます。コントローラーはファイルタイプに基づいて利用可能なアプリのリストを自動的に収集します。
class DocumentViewController: UIViewController {
lazy var interactionController = UIDocumentInteractionController()
func shareFile(url: URL) {
interactionController.url = url
interactionController.uti = url.utiType()
interactionController.delegate = self
interactionController.presentOptionsMenu(
from: self.view.bounds,
in: self.view,
animated: true
)
}
}
Open Inメニューの代わりに組み込みビューアを表示するには、presentPreviewメソッドを使用します。コントローラーはスクロール可能な全画面でドキュメントを表示します。デリゲートはpreviewControllerForDocumentInteractionControllerメソッドを実装し、表示用のUIViewControllerを返す必要があります。
UIDocumentInteractionControllerDelegateは、メニューとPreviewの表示と非表示を管理します。デリゲートはオプショナルメソッドを実装します:表示アニメーション用のdocumentInteractionControllerWillPresentOpenInMenu、メニュー非表示後のリソースクリーンアップ用のdocumentInteractionControllerDidDismissOpenInMenu。
Previewの重要なメソッドはpreviewControllerForDocumentInteractionControllerで、ドキュメント表示用のUIViewControllerを返す必要があります。メソッドが実装されていないかnilを返す場合、Previewは起動しません。通常はselfまたはselfを含むUINavigationControllerを返します。
コントローラーはdocumentInteractionController:didEndSendingToApplicationメソッドもサポートしており、ファイルが別のアプリに正常に送信された後に呼び出されます。これにより、一時ファイルのクリーンアップやアプリに戻った後のインターフェース更新が可能になります。
UIDocumentInteractionControllerとUIDocumentPickerViewControllerは、どちらもドキュメントを扱いますが、異なるタスクを解決します。主な違い:UIDocumentInteractionControllerは既存のファイルを別のアプリに転送するのに対し、UIDocumentPickerViewControllerは現在のアプリ用に外部ソースからファイルを選択します。
| パラメータ | UIDocumentInteractionController | UIDocumentPickerViewController |
|---|---|---|
| 目的 | 別のアプリにファイルを送信 | 別のソースからファイルを選択 |
| ソース | アプリ自身のファイル | 任意のストレージ(iCloud、ファイル、サードパーティ) |
| モード | 受信者へのファイルのコピー | 現在のアプリ用のインポートまたはエクスポート |
| インターフェース | システムメニュー(Action Sheet) | 完全なファイルブラウザ |
| 戻り値 | 結果を返さない | デリゲート経由で選択したファイルのURL |
UIDocumentInteractionControllerは基本的な操作にデリゲートを必要としません — メソッドを実装しなくてもメニューは表示されます。デリゲートなしのUIDocumentPickerViewControllerは役に立ちません — 選択結果が処理されません。APIの選択はシナリオに依存します:ファイル送信 → UIDocumentInteractionController、ファイル受信 → UIDocumentPickerViewController。
よくある質問
UIDocumentInteractionControllerは、Open In機能と組み込みPreviewを通じてドキュメントのプレビューとアプリ間のファイル転送を行うUIKitコントローラーです。
インスタンスを作成し、ターゲットファイルにurlプロパティを設定し、デリゲートを指定してpresentOptionsMenuを呼び出します。システムは指定されたファイルタイプをサポートするアプリのリストを表示します。
UIDocumentInteractionController Previewは、基本的な機能を持つ単一ドキュメント用の組み込みビューアです。Quick Look(QLPreviewController)は、バッチ表示、拡張機能、追加のファイル形式をサポートする独立したフレームワークです。
デリゲートは基本的な操作にはオプショナルです — メニューはデリゲートなしでも表示されます。デリゲートはPreview(previewControllerForDocumentInteractionControllerメソッド)とファイル送信の完了追跡にのみ必須です。
UIDocumentInteractionControllerはアプリから別のアプリに既存のファイルを送信します。UIDocumentPickerViewControllerは外部ソースから現在のアプリにファイルを選択します。前者は送信用、後者は受信用です。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。