created_at
updated_at
tags
toc

Web Share API

Intro

Web Share API が Origin Trials を卒業したという知らせが届いた。

コンテンツを他のサービスなどと連携するこの API について紹介する。

Web Share

ブラウザで開いている Web コンテンツを、他のサービスやアプリと連携するための方法は、以前から検討されていた。

主だったものとしては、すでに策定は止まっているが Android の Intent を参考にした Web Intents が挙げられる。

Web Share API は、 Web コンテンツと SNS やメールなどとの連携を主目的とした、より簡素で軽量な API となっている。

DEMO

動作するデモを以下に用意した。

(まだ Origin Trials のトークンはそのままになっている)

API

API は非常に簡素だ。

現状設定可能なパラメータは、 title, text, url のみである。

if (navigator.share !== undefined) {
  document.getElementById("support").textContent = "supported";
}

const shareButton = document.getElementById("share");
navigator
  .share({
    title: "Web Share DEMO",
    text: "DEMO of Web Share API enabled by Origin Trials",
    url: window.location.href
  })
  .then(console.log.bind(console))
  .catch(console.log.bind(console));

こうした API であるため、 navigator.share を見ることで、サポートの有無を判別できる。

結果は Promise を返し、 Share の成功可否によって変わる。

また、 Web Share は Share の発信だけで無く、受信についても視野に入れいている。

現状その API は議論中だが、同様に navigator を基本に拡張されていくと思われる。

簡素な Share の送信だけであれば、以下のような URI Scheme の策定も可能かもしれない。

<a href="share:?title=Example%20Page&amp;url=https://example.com/page">Share this</a>

しかし、上述のような サポート判別/成功判別/受信側の拡張 などを考えると JS API としての策定が妥当であるとし、今回の API が策定された。

Web Share を標準化する上での方針などについては以下にまとまっている。

Web Share API Explained

Origin Trials の卒業

Web Share は Origin Trials を卒業したため、しばらくするとトークンなしでも機能が使えるようになる予定とのことだ。

しかし、これは仕様の策定が終わったことも、ブラウザの普及が進んだことも意味しない。

あくまで、仕様策定作業を開始するにあたっての WIP リクエストが、最低限のフィードバックを集めマージされたようなものだと考えるのが近いかもしれない。