Mac業界の最新動向はもちろん、読者の皆様にいち早くお伝えしたい重要な情報、
日々の取材活動や編集作業を通して感じた雑感などを読みやすいスタイルで提供します。

Mac Fan メールマガジン

掲載日:

Safariに追加された「新しい拡張機能」って いったい何?

著者: 千種菊理

Safariに追加された「新しい拡張機能」って いったい何?

サファリの何かが変わった

9月20日、Macユーザ待望の新OS、「macOSシエラ(Sierra)」がリリースされました。ということで、本連載も「OS Xのシンソウ」から「macOSのシンソウ」にアップグレードしてお届けしていきます。

さて、感度が高い読者の皆さんなら、すでにシエラをインストールして楽しまれている方も多いことでしょう。特にシエラに搭載されたサファリ(Safari)10では、セキュリティ面でのアップデートはもちろん、ピクチャ・イン・ピクチャのサポート、ブックマークや履歴の表示を一新するなど、ユーザエクスペリエンスの改善が行われています。

そしてもう1つ、ひょっとしたらサファリ 10の最大のアップデートと呼べるのが、今回説明する「アップ・エクステンション(App Extension)による新たな機能拡張です。

プラグインで拡張の功罪

そもそもWEBブラウザは、「HTTP」というプロトコルで、「HTML」というマークアップ言語で書かれた文書を表示する機能しか持たないソフトウェアでした。そこから、よりインタラクティブに、より便利に、さまざまなデータをWEBページに表示していきたいという要望が出てきたのです。

1990年代末のWEBの隆盛期、当時メジャーなブラウザであった「ネットスケープ(Netscape)」とインターネットエクスプローラ(Internet Explorer)は、それぞれ「プラグイン」という形でそうした要望に応えてきました。代表的なプラグインは、ご存じ 「フラッシュ(Flash)」で、著名ブラウザ向けにフラッシュを稼働させるプログラムを追加で組み込み、WEBページ上で動的なコンテンツを表示させています。

ブラウザにいちいち新機能を組み込んでリリースするのではなく、あとからプログラムを追加して機能を拡張できるプラグインは便利な仕組みだったのですが、一方で安定性や安全性の問題を抱えることになりました。プラグインのプログラムはブラウザと同じメモリ空間内で動作しており、プラグインにバグがあればブラウザ本体を道連れにクラッシュすることになります。また、悪意あるプラグインがブラウザのメモリを漁って、入力されたパスワードやページに表示されている秘密の情報を抜き取る恐れすらありました。

そうした理由から、プラグインによる拡張は2000年代には下火になっていき、昨今のブラウザではプラグインをサポート外にするようになってきています。

エクステンションの登場

2000年代初頭、ネットスケープの後継としてリリースされたオープンソースの「モジラ・ファイアフォックス(Mozilla Firefox)」は、軽量かつ柔軟性の高いWEBブラウザとして一気にメジャーになりました。ファイアフォックスでは、プラグインによるプログラムの追加だけではなく、「テーマ」という形でUIを自由に定義したり、「エクステンション」という形で機能を追加できるようになっていました。

独立したプログラムを実行するプラグインと異なり、エクステンションは「ジャバスクリプト(JavaScript)」、「CSS」、「HTML」といったWEBのテクノロジーで構成されています。ただし、WEBサーバに都度アクセスしてプログラムを読み込むのではなく、WEBブラウザと同じローカルディスクの中にあらかじめインストールしておき、指定のタイミングで実行されます。また、ブラウザはエクステンションのジャバスクリプト向けにAPIを通じてさまざまな機能を提供し、普通のWEBページ上のジャバスクリプトではできないことも実行可能にしています。

また、エクステンションは「どういった機能を使うか」をエクステンションの定義ファイルの中で宣言しなければならないので、利用者はエクステンションのインストール時にこの「どういった機能を使うか」を確認できます。危険な機能を使いそうなエクステンションなら、インストールを取り止めることができるのです。

何でもできるネイティブのプログラムではなく、一定の機能内のジャバスクリプト+HTMLで、特定の機能は宣言なしに使えないことから、エクステンションはプラグインに比べ安全性が高くなります。そうしたファイアフォックスでのエクステンションの成功を受けて、グーグルのWEBブラウザ「グーグル・クローム(Google Chrome)」でもエクステンションのサポートが追加され、サファリでもサファリ5から「機能拡張」という形でエクステンションがサポートされています。

エクステンションの良いところは、先述のように安全性が高く、またジャバスクリプト+HTMLで記述するため、ネイティブコードのプログラムよりハードルが低いという点です。一方、エクステンションは プラグインに比べどうしても処理が遅いため、あまりたくさんの処理を行うとブラウザ自体が重くなる、表示が遅くなるなどの弱点があります。

それぞれのいいとこ取り

そこで、アップルが出した回答が、冒頭のアップ・エクステンションです。アップ・エクステンションは、macOSのソフトウェアにバンドルされて提供されます。アップ・エクステンション内のジャバスクリプトやCSSはサファリ側で実行されますが、同時にこのジャバスクリプトは、プロセス間通信を通じて提供元のソフトウェアの機能を利用することができます。

たとえば、「アドブロック(AdBlock)」のような広告フィルタを考えてみます。これまでは広告かどうかの判断から、WEBページからそのコンテンツを削除するところまで、すべてジャバスクリプトで処理しないといけないため、広告の検出条件が複雑になるにつれ、どうしてもページの表示が遅くなり、ブラウザが重たくなっていました。アップ・エクステンションの構造なら、広告の検出などの処理はソフトウェア側で実行し、WEBページの書き換えだけをジャバスクリプトが行えばいいので、高速化が期待できます。

ソフトウェアとサファリは別のプロセスで実行されており、プラグインのようにサファリに組み込まれることもありません。バグがあっても落ちるのはソフトウェアだけで、サファリに被害が及ぶこともないのです。サファリとはジャバスクリプトを通してか、一部の通信を通じてしかつながっていないので、メモリ内を読んで秘匿情報を奪い取る、なんて危険なことももちろんできないのです。

また、ソフトウェア側で追加のUIを用意しておき、WEBページと連携させることなども考えられます。ブログサイトのエディタやSNSの入力フォームなどをココア(Cocoa)アプリ化されたポップアップを使用してもっと入力しやすく、扱いやすく、という改良も可能になってきます。

アップ・エクステンションを含むネイティブソフトウェアはMacアップストアから配布することができます。アップルが確認した安全なソフトウェアなので安心できますし、ソフトウェアとWEBブラウザに組み込まれる部分のバージョンが異なってうまく動かない、なんてミスもなくなります。そして、ネイティブソフトウェアのUIや性能を利用しつつ、エクステンションの柔軟性や安全性でWEBページを拡張していけるなど、大きな可能性をも秘めているのです。アップ・エクステンションならではの面白いソフトウェアの登場が、今から楽しみです。

プラグイン、エクステンション、アップ・エクステンションの違い

プラグイン、エクステンション、そしてサファリのアップ・エクステンションの違いをまとめたのが右の図になります。プラグインはネイティブのプログラムをブラウザ本体に組み込み機能を拡張するため、安定性、安全性に懸念があります。エクステンションは、ジャバスクリプトを実行し、ブラウザからはエクステンション向けのAPIを提供し便宜を図る形なので、便利な分、処理速度が遅いのが目につきます。アップ・エクステンションは、外部ソフトウェアとサファリ上の機能拡張を連携して機能を拡張します。いわば、プラグインとエクステンションのいいこと取りといえるでしょう。

【 IEとMac 】

インターネットエクスプローラ(IE)はウィンドウズ標準のWEBブラウザで、説明の必要はないかと思います。しかし、このIEがMacでも一時期標準ブラウザだったのをご存じでしょうか? スティーブ・ジョブスがアップルに復帰した直後の1997年、マイクロソフトとアップルが業務提携を結んだことによるもので、Mac OS 8.1からデフォルトのWEBブラウザとなっていました。それまでMacではネットスケープが主に使われていましたが、よりよいブラウザが搭載されたせいで、その命脈も絶たれてしまったわけです。IEは、OS Xになっても10.3までは標準ブラウザとして搭載されていましたが、2003年にアップルがOS X向けの新しいWEBブラウザ・サファリをリリースし、IEの標準搭載を終了しました。その後もMac向けIEは配布されていましたが、バージョン5.2.3を最後にこれも終了しています。

【 Netscape 】

ネットスケープは、歴史的WEBブラウザ「モザイク(Mosaic)」を開発したマーク・アンドリーセン氏をはじめとするメンバーが創立したネットスケープコミュニケーションズ社がリリースしたブラウザです。初期は「ネットスケープ・ナビゲータ(Netscape Navigator)」と呼ばれるブラウザ単体のソフトウェアでしたが、メールソフトやHTMLエディタなどを組み込んだ「ネットスケープ・コミュニケータ(Netscape Communicator)」に移り変わっていきました。使い勝手が良く、一時期は世界でもっとも使われているWEBブラウザになっていましたが、マイクロソフトのインターネットエクスプローラの猛追や、さまざまな機能を組み込み肥大化したこと、不安定になり速度面の優勢もなくなったことから低迷。企業としてもAOLに買収され消えてしまいました。

【ファイアフォックス】

現在ファイアフォックスでは、プラグインによる機能追加が廃止され、フラッシュ以外のプラグインはサポートされなくなりました。また、オラクル(Oracle)はジャバ(Java)プラグインの利用を非推奨としています。

【旧OS】

サファリ10はヨセミテ、エルキャピタンにもアップデートの形でインストールされるため、これら最新ではないOSでも、アップ・エクステンションは利用できる見込みです。

文●千種菊理

本職はエンタープライズ系技術職だが、一応アップル系開発者でもあり、二足の草鞋。もっとも、近年は若手の育成や技術支援、調整ごとに追い回されコードを書く暇もなく、一体何が本業やら…。