Drafts

@cm3 の草稿置場 / 少々Wikiっぽく使っているので中身は適宜追記修正されます。

ブラウザプラグインの死

ブラウザにおいて特権的なプログラミング言語であるJavaScriptの周辺環境が整ってきたことがプラグイン*1の死を招いている。

かつてプラグインは、貧相なウェブでリッチな体験を提供するために用いられていた。Flashしかり、Javaしかり、Google Earthしかり。しかしそれらは次々と代替されor使いにくくor使えなくなっている。急先鋒はセキュリティを重視している*2 Google Chrome だ。

f:id:cm3ak:20150310184239p:plain

Chrome による Netscape Plugin API (NPAPI)の打ち切り*3は、Flash*4,Java*5,Google Earth*6といった Chrome のブラウザプラグインに大きな影響を及ぼした。Javaに至っては「Javaユーザーの皆様にはChromeに代わる選択肢を早急に検討していただくことを強くお薦めします」と喧嘩腰に書かれてしまうほどだ。一方で、そのJavaはセキュリティ企業から「もし使っていないのならば、Javaはもう削除してもいいんじゃないか」と名指しで言われるほどの存在になっている*7

今まで、ブラウザプラグインというのは、利便性によるメリットがセキュリティのリスクのデメリットを上回っていたため強い地位にあった。それが Ajax, html5 などの潮流によってウェブの標準技術でリッチなことができるようになり、利便性によるメリットが相対的に下がり、もう虫の息といった状況なのだと思う。

Unityのようにプラグインならではのスピードを活かし、製作者コミュニティも活性化させ、と工夫すれば当分生き残れるかもしれないが、それも当分なのではないか*8

NPAPIの代わりに、よりセキュアなPepper Plugin API (PPAPI)を作ったくらいなんだから、Chromeプラグインがすぐに滅ぶとは思っていないだろうが、Mozillaプラグインを滅ぼすべきと思っているようだ。もっとも、Chrome とは異なり、「オープン」というミッションからブラックボックスを作ることを嫌い、Emscriptenあるからパフォーマンスも問題ないというロジックなので、動機は少し異なるように思えるが*9。要は、パフォーマンスと開発の容易さこそ解決されればブラウザプラグインに生き残る余地はないし、ブラウザプラグインは死に向かうだろう。

f:id:cm3ak:20150311113910p:plain

また、リッチなウェブ標準技術の進化は、ウェブアプリケーションからブラウザプラグインを取り除いただけではなく、HTMLを出力するサーバ側スクリプトをも取り除きつつある。これに応じてセキュリティ対策が変容を迫られている。

その他参考

*1:拡張機能とは違う。参考:プラグイン - Chrome ヘルプ 何が違うかと言われれば定義は難しいが、この文書の文脈からは2つの側面を指摘しておきたい。1つ目は、相互運用性(interoperability)のために特定のフォーマットの動画・文書・プログラムをレンダリングするためのプログラムであるということ。どのユーザにも同じ体験をという相互運用性とは逆の方向で、つまり個々人の好みにカスタマイズする意味での拡張機能は今後も滅びないだろう。2つ目は、ネイティブコードを直接ブラウザに組み込むものということ。セキュリティやブラックボックスといった後述の問題はこの点についての問題である。

*2:Simple, Speed, Securityを重要な指針として位置付けている。参考:ついに日本でChromebookが提供開始 - 「現時点では企業・教育機関向け。コンシューマ提供は検討中」 | マイナビニュース

*3:

Chrome安定版では2014年1月から、Webページでインスタンス化されたNPAPIプラグインをデフォルトでブロックする。ただし、Chromeのユーザーデータから推計したところ、5%以上のユーザーが使っているNPAPIプラグインは8月の時点で6件あり、この6件についてはユーザーの混乱を避けるため、一時的にホワイトリスト化する。

 ホワイトリスト化の対象となるのは、Silverlight、Unity、Google EarthJavaGoogle TalkFacebook Videoの6件。ただし、Javaについてはセキュリティ上の理由から、既にデフォルトでブロックしている。

from Google Chrome、NetscapeプラグインAPIのサポート打ち切りへ - ITmedia ニュース

*4:Ubuntu - Chromium で Flash Player が使えなくなる件の対処法 - Qiita

*5:JavaとGoogle Chromeブラウザ

*6:Google Earth API、NPAPI対応廃止のため2015年12月に終了へ | スラッシュドット・ジャパン IT

*7:参考:半径300メートルのIT:セキュリティ専門家が語るWindowsに「入れるべきツール」と「消すべきツール」 - Business Media 誠

*8:2015/11/28追記: Unite Japan 2014 では Unity も Mozilla と共同で WebGL対応、つまりプラグインに頼らない実行環境の提供を発表したし、NPAPI は Unity 自身によって非推奨とされるようになった。

*9:

But Eich doubted whether Native Client would get support from browser vendors Apple, Microsoft, or Mozilla, and he touted JavaScript as sufficient.

JavaScript is accessible and offers benefits like memory safety, said Eich, who is CTO at Mozilla. "Java can sandbox, too. We don't need Native Client," Eich said. He also cited the Low Level JavaScript project, which offers a C-like type system with manual memory management and memory safety, as negating the need for Native Client. Low Level JavaScript compiles to JavaScript.

from JavaScript founder dismisses Google Native Client, pushes ECMAScript 6 | Apps | Techworld

"These native apps are just little black boxes in a webpage. That's not something we're pursuing. We really believe in HTML, and this is where we want to focus."

from Mozilla: Our browser will not run native code • The Register