関連情報 翻訳.
Copyright © 2023 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
この仕様は、テキスト、リンク、その他のコンテンツをユーザーが選択した任意の送信先に共有するためのAPIを定義します。
利用可能な共有先はこの仕様では指定されていません。ユーザーエージェントが提供します。例えば、アプリ、ウェブサイト、連絡先などが考えられます。
このセクションは、本書が公開された時点での文書のステータスについて説明します。現行の W3C 公開文書の一覧と、この技術レポートの最新版は W3C 技術レポート一覧 https://www.w3.org/TR/ で確認できます。
本書は Web Applications Working Group により 勧告プロセスに則って 勧告として公開されました。
W3C は本仕様のWeb標準としての広範な展開を推奨します。
W3C 勧告は、十分な合意形成の後に W3C およびそのメンバーによって支持され、 ワーキンググループのメンバーが ロイヤリティフリーライセンス へのコミットメントを行った仕様です。 今後の勧告の更新には 新機能 が組み込まれる可能性があります。
本書は W3C 特許ポリシーの下で活動するグループにより作成されています。 W3C は グループ関連公開特許情報リスト を管理しており、そのページには特許の公開方法も記載されています。特許の実質的な請求項が含まれると考えられる特許を知っている場合は、 W3C特許ポリシー第6節に従って情報を開示する必要があります。
この文書は 2021年11月2日 W3C プロセス文書によって管理されています。
このセクションは規範的ではありません。
コンテンツ共有機能は、基盤となるオペレーティングシステムが「共有」機能を提供していること、およびOSのUI慣習に依存することが多いです。例えば、一部のOSでは「共有シート」が表示され、他のOSではポップアップメニューが使われます。これらの依存性により、Web Share APIをすべてのOSで利用可能にするために実装者による継続的な取り組みが行われています。この進行中の取り組みは、限られたOSでテストを実行して生成される実装報告に失敗として反映されています。ただし、ワーキンググループはWeb Share APIが今後さらに多くのOSで利用できるようになり、すでに幅広いデバイスの主要なOSで広く利用可能になっていることに楽観的です。
このセクションは規範的ではありません。
WebIDL辞書の仕様により、share
()
にユーザーエージェントが認識しないメンバーを渡した場合、それらは無視されます。
複数のメンバーを共有する際、ユーザーエージェントが一部のメンバーをサポートしない場合は問題となることがあります。すべてのメンバーがサポートされていることを確認したい場合は、canShare
()
に個別に渡してサポートされているか確認できます。
または、サポートされていないメンバーのUIコンポーネントを表示しないようにアプリケーションのUIを調整することもできます。
const data = {
title: "Example Page",
url: "https://example.com",
text: "This is a text to share",
someFutureThing: "some future thing",
};
// サポートされていないもの...
const unsupported = Object.entries(data).filter(([key, value]) => {
return !navigator.canShare({ [key]: value });
});
デフォルトの許可リストである 'self' により、Web Share APIはデフォルトでファーストパーティコンテキストでのみ利用可能です。
サードパーティは、iframe
の
allow
属性を使って、このAPIの利用を許可できます:
また、ファーストパーティコンテキストでAPIを無効化するには、HTTPレスポンスヘッダーを指定します:
詳細やオリジンごとのパーミッションポリシーの制御方法については Permissions Policy 仕様をご参照ください。
この仕様は、文字列
"web-share"
によって識別されるポリシー制御パーミッションを定義します。
その
デフォルト許可リストは
'self'
です。つまり、サードパーティコンテキストではデフォルトでAPIの利用が
許可されません。
ユーザーエージェントが Permissions Policy の
Permissions-Policy
HTTPヘッダーをサポートするかどうかは 任意 です。
開発者は、Permissions Policy 仕様で定義された手段を使って、サードパーティコンテキストがこのAPIを 利用可能かどうかを制御できます。
このセクションは規範的ではありません。
この仕様を使ってユーザーインターフェースで情報を表示する場合、実装者はプラットフォームのOSレベルのアクセシビリティガイドラインに従うことが望まれます。また、共有はエンドユーザーに対してセキュリティ上の影響を及ぼす可能性があるため、share
()
メソッドの説明にあるように、共有UIはアクセシブルかつプラットフォームのセキュリティガイドラインも考慮して設計する必要があります。主な考慮点は以下の通りです:
これらの要素は、視覚・運動・認知障害を持つユーザーがウェブページで共有されるコンテンツの性質をより理解できるようにします。
share
()
からどの共有先を選択したかを知ることはできません。これは、フィンガープリント用途やユーザーのデバイスや好みの共有先に関する情報漏洩を防ぐためです。
share
()
を プライベートブラウジングモードから利用した場合、プライバシー設定を尊重しないサードパーティアプリに個人情報が漏れる可能性があります。ユーザーエージェントは追加警告を表示したり、プライベートモード時にこの機能を無効化することも
可能 ですが、選択UIが十分な警告になると考えることもできますので必須ではありません。
非規範的と明記されたセクション以外にも、この仕様書中の著作ガイドライン、図、例、注記はすべて非規範的です。それ以外の内容はすべて規範的です。
本書の MAY、MUST、OPTIONAL、SHOULD というキーワードは、 BCP 14 [RFC2119] [RFC8174] に記載された通り、ここに示すようにすべて大文字で現れる場合に限り、その意味で解釈されます。
WebIDLpartial interface Navigator {
[SecureContext] Promise<undefined> share
(optional ShareData
data = {});
[SecureContext] boolean canShare
(optional ShareData
data = {});
};
dictionary ShareData
{
sequence<File> files
;
USVString title
;
USVString text
;
USVString url
;
};
このセクションは規範的ではありません。
勧告案フェーズで、仕様に以下の規範的変更が加えられました。完全な変更リストはコミットログをご覧ください。
最初の公開ワーキングドラフトから勧告候補までに仕様に加えられた規範的変更は以下の通りです。完全な変更リストはコミットログをご覧ください。
編集者は、下記の W3C グループの貴重なフィードバックに感謝します。これにより本仕様は大きく改善されました: Accessible Platform Architectures Working Group、Internationalization Working Group、Privacy Interest Group、Technical Architecture Group。
Web Intents チームにも感謝します。彼らはウェブアプリの相互運用ユースケースの基礎を築きました。特に Paul Kinlan 氏はWeb Shareの初期の普及活動に大きく貢献しました。