【ぽりふぃる】

ポリフィル とは?

最終更新:
💡 古いブラウザの穴を埋める、互換性のスペーサー
📌 このページのポイント
ポリフィルの役割 新しいブラウザ Promise ✓ fetch ✓ includes ✓ Array.from ✓ 古いブラウザ Promise ✗ fetch ✗ includes ✗ Array.from ✗ ポリフィルで穴を埋める 古いブラウザ + ポリフィル Promise ✓ fetch ✓ includes ✓ ネイティブ対応済み → ポリフィル不要 core-js / Babel preset-env で必要なものだけ自動選択
ポリフィルのイメージ
ひよこ ひよこ
ポリフィルって何を埋めてるの?
ペンギン先生 ペンギン先生
古いブラウザが対応していない新しいJavaScript機能の穴を埋めてるんだよ。たとえばIE11にはPromiseがないけど、ポリフィルを入れれば使えるようになるんだ
ひよこ ひよこ
トランスパイラとは違うの?
ペンギン先生 ペンギン先生
トランスパイラアロー関数async/awaitみたいな構文を古い書き方に変換するもの。ポリフィルはAPIそのものを追加するもの。両方セットで使うことが多いよ
ひよこ ひよこ
全部のポリフィルを入れたら重くならないかな?
ペンギン先生 ペンギン先生
そこが大事なポイントだね。Babelのpreset-envではtargetsを指定すると、必要なポリフィルだけを自動選択してくれる。最近はusage指定で実際にコード中で使っているAPIだけを含める方法が主流だよ
ひよこ ひよこ
最近はポリフィルってあまり聞かない気がするけど…
ペンギン先生 ペンギン先生
IE11のサポート終了でかなり減ったね。でもSafariやモバイルブラウザの差異はまだあるし、Node.jsの古いバージョン対応でも使われるよ。ポリフィルのサービスとして有名だったpolyfill.ioがサプライチェーン攻撃に遭った事件もあって、自前でバンドルする方が安全だね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ポリフィル」って出てきたら「古い環境でも新しい機能を使えるようにする補完コード」と思えればだいたいOK!
📖 おまけ:英語の意味
「Polyfill」 = 穴埋め材
💬 壁の穴を埋めるパテ(Polyfilla)が語源で、ブラウザの機能の穴を埋めるイメージだよ
← 用語集にもどる