コンテンツにスキップ

JavaScript/Polyfill

出典: フリー教科書『ウィキブックス(Wikibooks)』

Polyfill(ポリフィル)は、Web開発において、ブラウザがサポートしていない最新のWeb標準や機能を実現するためのコードやプラグインのことを指します。Polyfillは、特定の機能が存在しない場合に、その機能をエミュレート(模倣)して提供する役割を果たします。

例えば、あるブラウザが新しいJavaScriptの機能をサポートしていない場合、その機能を実装するPolyfillを追加することで、古いブラウザでもその新しい機能を利用できるようになります。これにより、開発者は最新のWeb技術を使ったコードを書きつつ、広範なブラウザ互換性を維持することができます。

主なPolyfillの例

[編集]
HTML5 Shim/Shiv
Internet Explorerの古いバージョンでHTML5要素を認識させるためのPolyfill。
ES5 Shim
ECMAScript 5の機能をサポートしていないブラウザのためのPolyfill。
Fetch API Polyfill
古いブラウザでFetch APIをサポートするためのPolyfill。
Promise Polyfill
Promiseオブジェクトをサポートしていないブラウザ向けのPolyfill。
core-js
広範囲なJavaScript機能のPolyfillを提供します。
Modernizr
機能検出とPolyfillの組み合わせを提供します。

使用方法の例

[編集]

例えば、PromiseをサポートしていないブラウザにPromise機能を追加するためのPolyfillは次のように使用されます:

<script src="https://cdn.jsdelivr.net/npm/promise-polyfill/dist/polyfill.min.js"></script>

上記のスクリプトをHTMLファイルに追加することで、古いブラウザでもPromiseを使用できるようになります。

Polyfillは、最新のWeb標準を活用しつつ、広範なブラウザ互換性を実現するための重要なツールです。

Polyfill.io 事件

[編集]

Polyfill.io事件は、広く使用されているJavaScriptライブラリが悪意のある第三者に買収され、マルウェアを注入された重大なセキュリティインシデントです。

主なポイント:

  1. 2024年2月、中国企業Funnullがpolyfill.ioを買収し、マルウェアを注入。
  2. 約10万のウェブサイトに影響し、ユーザーデータ盗難やリダイレクトの危険性。
  3. セキュリティ企業が問題を特定し、Googleは影響を受けたサイトへの広告をブロック。
  4. 開発者にcdn.polyfill.ioの使用停止と代替手段の利用を推奨。
  5. サードパーティライブラリ使用時のセキュリティ対策の重要性が浮き彫りに。

この事件は、ウェブ開発のサプライチェーンセキュリティの重要性を強調し、外部リソース利用時の慎重な対応の必要性を示しています。