iPhone OSにおいて、アプリケーション間でデータを共有する、最も簡単な方法は、ペーストボードを使用することです。
典型的なパターンをあげてみましょう。
ユーザがメモアプリケーションで文字列を選んで「コピー」の操作をし、メール送信画面で「ペースト」操作を行うと、その文字列がメールに貼り付けられます。これは、コピー操作で、メモアプリケーションが文字列をペーストボードに格納し、メールアプリケーションが、ペースト操作の時にそこから文字列を取り出すことで実現されています。それと同じ方法で、どんなアプリケーションでも、ペーストボードを介してデータを受け渡すことが可能です。
ペーストボードには、文字列だけでなく、さまざまな種類のデータを格納することができます。例えば、弊社のExport for Google Documentsというアプリケーションでは、Googleドキュメントからエクスポートしたドキュメントデータを、ペーストボードに格納する機能を持っています。
ここでは、どのような形でペーストボードにデータを格納すればいいのか及び、弊社製Copy & Sendアプリでそのデータを活用する例について簡単に説明したいと思います。
UIPasteboardクラス
iPhone SDKの中では、UIPasteboardクラスがペーストボードを表現するオブジェクトになります。システム内には、複数のペーストボードが存在していますが、それぞれが、UIPasteboardのインスタンスに対応します。
システム標準で用意されているものには、以下の2種類があります。
上記以外に、各アプリケーションで固有なものを、自由に作成することができます。標準のペーストボードは、予期しない場面で勝手に上書きされてしまうことがあるので、アプリケーション固有のデータは、固有のペーストボードを使用することをお奨めします。
また、各ペーストボードには、一意に識別するための名称が付与されており、名称が不明なペーストボードにはアクセスできないようになっています。
ペーストボード内のデータ構造
ペーストボード内のデータは、アイテムと呼ばれるNSDictionryの集合として管理されています。
アイテムのNSDictionryのキーは、データの種類を表すUTI(Uniform Type Identifier)と呼ばれる文字列であり、値としてデータのオブジェクトが格納されています。したがって、アイテムの中には、異なる種類のデータを複数格納することができます。
以下に、データ構造の概念図を示します。

これは、少し複雑な組合せの例になっています。
1つ目のアイテムは、URLとテキストのペアで構成されています。例えば、Safariでハイパーリンクを長押ししてコピーした場合は、この形になります。
2つ目のアイテムは、Excelのスプレッドシートを、単独で格納したアイテムの例です。
3つ目のアイテムは、JPEG画像とテキストのペアで構成されています。カメラロールの写真をコピーした場合には、この形になります。
Copy & Send及び、Copy & Send Liteで、ペーストボードの内容をブラウズすると、これらのデータ構造を確認することができます。興味がある方は、お試しください。
UIPasteboardのAPIについて
アイテムを操作するためのAPIは、以下の種類に分かれます。
(詳細は、UIPasteboardのリファレンスを参照してください)
ペーストボードの活用例
一部、冒頭で述べたことの繰り返しになりますが、弊社製の以下のアプリ間で、ペーストボードを使ったデータ連携を実現しています。
みなさんが作成したアプリケーションでも、Copy & Send / Copy & Send Liteを有効に活用していただければ幸いです。
開発者の方のために、具体的な連携機能の実装方法について、アプリの中からアクセスできるヘルプドキュメントにて説明しています。よろしければ、そちらをご参照いただければと思います。
よろしくお願いいたします。
典型的なパターンをあげてみましょう。
ユーザがメモアプリケーションで文字列を選んで「コピー」の操作をし、メール送信画面で「ペースト」操作を行うと、その文字列がメールに貼り付けられます。これは、コピー操作で、メモアプリケーションが文字列をペーストボードに格納し、メールアプリケーションが、ペースト操作の時にそこから文字列を取り出すことで実現されています。それと同じ方法で、どんなアプリケーションでも、ペーストボードを介してデータを受け渡すことが可能です。
ペーストボードには、文字列だけでなく、さまざまな種類のデータを格納することができます。例えば、弊社のExport for Google Documentsというアプリケーションでは、Googleドキュメントからエクスポートしたドキュメントデータを、ペーストボードに格納する機能を持っています。
ここでは、どのような形でペーストボードにデータを格納すればいいのか及び、弊社製Copy & Sendアプリでそのデータを活用する例について簡単に説明したいと思います。
UIPasteboardクラス
iPhone SDKの中では、UIPasteboardクラスがペーストボードを表現するオブジェクトになります。システム内には、複数のペーストボードが存在していますが、それぞれが、UIPasteboardのインスタンスに対応します。
システム標準で用意されているものには、以下の2種類があります。
- General pasteboard
- システム標準のペーストボードであり、通常のコピー/ペースト操作で使用されます。
- Find pasteboard
- 検索バーに入力されたテキストが保存されるペーストボード
上記以外に、各アプリケーションで固有なものを、自由に作成することができます。標準のペーストボードは、予期しない場面で勝手に上書きされてしまうことがあるので、アプリケーション固有のデータは、固有のペーストボードを使用することをお奨めします。
また、各ペーストボードには、一意に識別するための名称が付与されており、名称が不明なペーストボードにはアクセスできないようになっています。
ペーストボード内のデータ構造
ペーストボード内のデータは、アイテムと呼ばれるNSDictionryの集合として管理されています。
アイテムのNSDictionryのキーは、データの種類を表すUTI(Uniform Type Identifier)と呼ばれる文字列であり、値としてデータのオブジェクトが格納されています。したがって、アイテムの中には、異なる種類のデータを複数格納することができます。
以下に、データ構造の概念図を示します。
これは、少し複雑な組合せの例になっています。
1つ目のアイテムは、URLとテキストのペアで構成されています。例えば、Safariでハイパーリンクを長押ししてコピーした場合は、この形になります。
2つ目のアイテムは、Excelのスプレッドシートを、単独で格納したアイテムの例です。
3つ目のアイテムは、JPEG画像とテキストのペアで構成されています。カメラロールの写真をコピーした場合には、この形になります。
Copy & Send及び、Copy & Send Liteで、ペーストボードの内容をブラウズすると、これらのデータ構造を確認することができます。興味がある方は、お試しください。
UIPasteboardのAPIについて
アイテムを操作するためのAPIは、以下の種類に分かれます。
(詳細は、UIPasteboardのリファレンスを参照してください)
- 標準的な単一タイプのデータを扱うためのもの
- データにアクセスするためのプロパティとして定義されています。
- string/strings
- image/images
- URL/URLs
- color/colors
- 任意のデータタイプを扱うためのもの
- 上記以外に、UTIを明示的に指定してデータを操作するメソッドが用意されています。
ペーストボードの活用例
一部、冒頭で述べたことの繰り返しになりますが、弊社製の以下のアプリ間で、ペーストボードを使ったデータ連携を実現しています。
- Export for Google Documents
- Googleドキュメントからエクスポートしたドキュメントデータを、ペーストボードに格納する。
- Copy & Send / Copy & Send Lite
- ペーストボードに格納されているアイテムを活用する機能を実装している。
これによって、Export for Google Documentsのドキュメントデータを、他のデバイスに送信するといったことができるようになっています。
- 他のデバイスへの送信
- 永続領域への保存
- 内容のブラウズ
みなさんが作成したアプリケーションでも、Copy & Send / Copy & Send Liteを有効に活用していただければ幸いです。
開発者の方のために、具体的な連携機能の実装方法について、アプリの中からアクセスできるヘルプドキュメントにて説明しています。よろしければ、そちらをご参照いただければと思います。
よろしくお願いいたします。