[WWDC18] Safari Extensionsのdeprecatedについて #WWDC18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本記事は Apple からベータ版として公開されているドキュメントを情報源としています。 そのため、正式版と異なる情報になる可能性があります。ご留意の上、お読みください。

なぜかdeprecatedものばかり書いていますが気になったトピックですので気にせず書いていきます。

今回は What’s New in Safari and WebKit - WWDC 2018 - Videos - Apple Developer で語られていたSafari Extensionsがdeprecatedになる件について整理したいと思います。

Safariの機能を拡張する歴史

Safariの機能を拡張することについてはいくつかの変遷がありました。

  • 2010: Safari Extensions
  • 2014: macOSと iOSに App Extensionが登場
  • 2015: macOSと iOSに コンテンツブロッカーが登場
    • コンテンツブロッカーは1つのジャンルとなり多くのプロダクトを生み出したのではないでしょうか
  • 2016: macOSに Safari App Extensionが登場
    • Safari Extensionsとの2本柱になりました
  • 2018: Safari 12のリリースに合わせて Safari Extensionsがdeprecatedに

Safari Extensionsのこれから

となっています。

いわゆる野良Safari Extensionsでも良作のものがあると思うのですが徐々に使用しづらくなるのでしょう。

Safari App Extensionとは

Safari App ExtensionとはSafari App Extensions | Apple Developer Documentationで述べられているように、ネイティブアプリに同梱される拡張になります。 その構成が示す通り、Safari上のWebコンテンツとネイティブアプリのやりとりをすることが主目的となります。 この拡張は JavaScript, CSS および Objective-Cまたは Swiftで実装可能で、従来同様のInjection Scriptがネイティブコード側のExtensionとメッセージパッシングでやりとりすることで機能拡張を実現することになります。

最後に

推奨されているSafari App ExtensionやContent Blockerですが、(最新の) Xcode 9には(残念ながら)プロジェクトテンプレートが用意されていません。 以前はあったのですが、無くなったところをみると Safariの機能を拡張する事に対する Appleのプライオリティが低くなったと感じます。 今後はWPAなど別の方向性に注力するのかもしれません。