Safari 10はmacOSブラウザ、ウェブコンテンツに高速でネイティブなApp Extensionsを導入します

Safari 10はmacOSブラウザ、ウェブコンテンツに高速でネイティブなApp Extensionsを導入します

Apple の新しい Safari 10 では、Web コンテンツ ブロッカーを有効にするために昨年完了した作業を基に、ユーザーが Mac App Store を通じて自動的に取得および更新できる幅広いネイティブ コード App Extensions が有効になっており、パフォーマンスの高速化、セキュリティの強化、信頼性の向上に貢献しています。

オリジナルのSafari 5.0拡張機能からの大きなアップデート

2010 年に、Apple は Safari 5.0 用の Safari Extensions Gallery を導入し、開発者が CSS や JavaScript などの Web 標準を使用して Safari 用の拡張プラグインを構築できるようにしました。


Safari 5.0 機能拡張ギャラリー

Safari 5.0の拡張機能により、サードパーティはSafariツールバーにボタンを追加したり、新しい拡張機能バーを作成したり、Webコンテンツの表示形式を変更したり、Webページにコントロールを追加したりできるようになりました。また、このアーキテクチャはデジタル署名をサポートしているため、開発者は特定の拡張機能の出所を確認し、改ざんされていないことを証明できます。

Appleは、サードパーティがSafari拡張機能をギャラリーで配布できるように支援しました。ギャラリーは、新しい拡張機能の閲覧とアップデートの入手の両方を行うことができる、Web専用のApp Storeのような機能を備えていました。これらの拡張機能をWeb標準で構築することで、プラットフォームを問わず動作できるようになりました。当時、SafariはOS XとWindowsの両方で開発されていました。

しかし、数年後、Appleは2012年のSafari 6でWindowsサポートを放棄し、WebKitブラウザの保守作業をGoogleのChromeなどのプロジェクトに事実上委譲しました。これにより、パフォーマンス上の理由から、ネイティブのObjective-CまたはSwiftコードを使用してSafari Extensionsを構築するというアイデアが生まれました。

2014 年に Apple は、アプリと共に配布できるアプリ コンポーネントを構築するための新しいアーキテクチャである App Extensions を導入しました。これは、iOS と macOS の両方のコア OS 機能に新しい機能を追加するために特別に設計されています。

App Extensionを作成するには、開発者が開発に利用できるOS内の拡張ポイントを作成するためのAppleのサポートが必要です。Appleが2014年に導入した最初の拡張ポイントには、システム全体にわたる共有拡張機能(新しいソーシャルネットワーク共有オプションの追加)、写真編集拡張機能(写真アプリの機能を拡張)、Today拡張機能(ウィジェットのサポート)、そしてiOS固有のカスタムキーボードが含まれていました。

翌年、Apple は Safari に特化した新しいクラスのアプリ拡張機能としてコンテンツ ブロッカーを導入し、ディスプレイ広告、画像、ナビゲーション要素、ポップアップ、スクリプト、フォント、スタイル シート、メディア ファイル、Cookie、または基本的に Web ページ上のあらゆるものを含む、定義されたコンテンツのダウンロードを阻止する機能をサポートしました。

Safari 10では、あらゆる拡張機能がネイティブアプリ拡張機能になることができます。

macOS Sierra 10.12とEl Capitan 10.11.5(Safari 10がインストールされている場合)の両方で、SafariはJavaScript、CSS、Objective-CまたはSwiftで記述されたネイティブコードの組み合わせで構築されたApp Extensionsをサポートします。SafariはJavaScript、CSS、Objective-CまたはSwiftで記述されたネイティブコードの組み合わせで構築されたApp Extensionsをサポートします。

以前の App Extensions と同様に、新しいアーキテクチャは Safari の広範な拡張ポイントを定義します。これにより、サードパーティの開発者は Safari に新しい機能を追加できます。Web ページのコンテンツを読み取って変更する (テキストを別の言語に翻訳するなど) だけでなく、ネイティブ アプリと通信してアプリ データを Safari に統合したり、Web データをアプリに取り込んだりすることもできます。

開発者は、コマンドを実行したりポップオーバーウィンドウを表示したりするためのツールバーボタンを追加したり、コンテキストメニュー項目を追加したり、Web ページの表示方法を変更するスタイルシートを挿入したり (使用するフォントやテキストサイズの変更など)、ページの動作を変更したりアプリ拡張機能との通信を可能にしたりする JavaScript を挿入したりすることで、Safari ユーザーインターフェイスを拡張できます。

以前の Safari 拡張機能とは異なり、新しい App Extensions は、Apple の開発者向けドキュメント (以下に図示) に示されているように、共有リソースを使用して開発者のアプリと安全に通信できます。

さらに重要なのは、新しいApp Extensionsアーキテクチャにより、開発者はSafari ExtensionsをApp Storeを通じてアプリの一部として配布できるようになったことです。つまり、ユーザーはWeb上の独立した「ギャラリー」からプラグインを探す必要がなくなります。開発者にとって、既存のSafari ExtensionsをネイティブのApp Extensionsに移行するのは、Xcodeで簡単に行えるように設計されています。

macOS Sierraの「Safari Extensions...」メニューからMac App Storeを起動できるようになりました。Safariで使用できるApp Extensionsを含むアプリが表示されます。開発者向けには、既存のSafari ExtensionsをネイティブのApp Extensionsに移行する作業がXcodeで簡単に行えるように設計されています。

この変更により、ユーザー向けApp Extensionsを開発者向けアプリと並行してアップデートできるようになり、拡張機能とアプリ間のコンポーネントバージョンの違いに起因する互換性の問題を回避できます。Safari App Extensionsはネイティブコードで記述できるため、パフォーマンスが向上し、メモリ使用量も削減されます。

App Extensions 以外にも、Safari 10 では、Web 上の Apple Pay トランザクション (下記)、iPad の Split View による 2 つの Web サイトの同時表示、Mac での埋め込み HTML5 ビデオのピクチャ イン ピクチャ表示 (昨年 iPad で導入された機能など)、Adobe Flash や Microsoft Silverlight を使用するサイトからの HTML5 ビデオの自動使用もサポートされます。

Safari 10でウェブ上のApple Payが利用可能に

iOS 10とmacOS Sierraのその他の新しいアプリ拡張機能

全体として、Apple の App Extension アーキテクチャは、開発者が OS レベルの機能を拡張するための安全な方法を提供すると同時に、開発者の作業の有用性をシステム全体で拡張します。

iOS 10とmacOS Sierraでは、他にも様々な新しいApp Extensionが導入されており、サードパーティはSiri、メッセージ、マップ、通知、通話履歴といった様々な拡張ポイントに同様に新機能を追加できるようになります。AppleInsiderでは、これらの新しい拡張ポイントによって開発者がAppleプラットフォームに新機能をどのように追加できるかを検証します。