WWDC21:iOS、iPadOS用Safari機能拡張について解説
※本サイトは、アフィリエイト広告および広告による収益を得て運営しています。購入により売上の一部が本サイトに還元されることがあります。
Appleが、WWDC21において、iOS、iPadOS用Safari機能拡張について説明するセッション「Meet Safari Web Extensions on iOS」を公開しています。
Web拡張機能は、ユーザーがさまざまな方法でブラウジングを拡張およびカスタマイズできるようにする強力なタイプのブラウザー拡張機能で、これらは、HTML、CSS、JavaScriptなどの標準的なWebテクノロジーで構築されています。
MacのSafariと同様に、iOSに同じWeb拡張機能のアクセス許可モデルが導入されます。
つまり、ユーザーとして、ブラウジング拡張機能のどれだけにアクセスできるかを完全に制御できます。
Safari Web拡張機能を備えたアプリは、App Storeを通じて提供されます。
Xcodeのコマンドラインツール「Safari Web Extension Converter」を利用して、その既存の拡張機能からXcode プロジェクトを自動的に作成できます。
すでにMac用Safari拡張機能を開発している場合は、アップグレードすることでiOS版を作る事は容易です。
拡張機能は現在、任意のクリックとドラッグに対するマウスイベントの処理に依存している場合、ユーザーがiOSをタップしたときに同じイベントが送信されず、代わりに、Pointer EventsAPIを採用する必要があります。これはMouseEvents APIに似ており、マウス入力でも同じように機能しますが、Pointer EventsAPIはタッチとApplePencil入力も報告します。
デスクトップブラウザでは、ユーザーが複数のウィンドウを開いている場合があり、Web拡張機能はbrowser.windowsAPIを使用してこれらのウィンドウを操作できます。
そして同じことがiPadにも当てはまり、Safariの複数のウィンドウを開くこともできます。
各Safariウィンドウは全画面表示の場合もあれば、別のアプリ、場合によっては別のSafariと並べて分割表示される場合もあります。
ただし、内部では、これらの各ウィンドウは実際にはiOSではシーンと呼ばれています。
iOS では、ウィンドウの配置は、アプリや拡張機能ではなく、ユーザーによって完全に制御されます。ユーザーがアプリスイッチャーからSafariを閉じたときに予想されるように、windows.onRemovedイベントは発生しません。それは本当にウィンドウを閉じたり削除したりするわけではありません。ユーザーが後で中断したところから再開できるようにするだけです。
将来追加される新しい APIを採用するときにも、このパターンを使用する必要があります。これは、一部のユーザーがまだ使用している可能性のあるすべてのブラウザーまたは以前のバージョンのブラウザーですぐに利用できるとは限らないためです。
Web拡張機能は途方もない量を得ることができ、ユーザーのブラウジングへのアクセスの可能性があるため、それを許可するかどうか、およびどのWebサイトでユーザーに任せるかを決定します。
Safariでは、ユーザーは自分の拡張機能がどのWebサイトで作業できるかを常に制御できます。
したがって、拡張機能は、ユーザーがアクセスするすべてのページで自動的に機能するようになるわけではありません。
多くの拡張機能では、activeTab権限は、ユーザーが拡張機能を使用しているページだけにアクセスするための優れた方法であり、それ以外のアクセスについてバグを報告することはありません。
これらの概念はすべて、SafariWeb拡張機能をサポートするすべてのプラットフォームで同じです。