社内勉強会向けにまとめた資料から社内特有なところを削除したものです。
ゴール
- JavaScript と Web API の違いが分かる
- Internet Explorer のサポート終了によって何が変わるのかが分かる
Internet Explorerとは
- マイクロソフトのブラウザ
- Windows 95向けの機能拡張で追加された
- Internet Explorer 11をもって開発終了
- 現在は Microsoft Edge へ
Chakraとは
- マイクロソフトのJavaScriptエンジン (
JScript9.dll
)- JScriptに代わる新しいエンジンとして Internet Explorer から搭載
- Edge用のChakraはフォークされたもの (
Chakra.dll
)
JavaScriptエンジンとは
- JavaScriptの実行環境
- ECMAScriptの実装
- 代表的なエンジン
- V8
- SpiderMonkey
- Chakra
- Internet Explorer
- Edge (-2020)
- JavaScriptCore
ECMAScriptとは
- JavaScriptの仕様
- 策定プロセスの歴史
- 全ての仕様の合意が取れたらリリースしていた
- リリースまでに膨大なリソースが必要で大変
- 合意出来たプロポーザルからリリースする
- 常に最新が公開されている
- 全ての仕様の合意が取れたらリリースしていた
- ES2015とかって?
- 年に一回リリースされる仕様のスナップショット
- ES6(2015)以降の仕様書のバージョン名
Web APIとは
- ブラウザがJavaScriptエンジンの上に実装しているAPI
- ブラウザベンダ毎に実装している
- Web標準として標準化されている
- 具体例
- DOM (Document Object Model)
- HTMLを操作するためのAPI群
- History API
- ブラウザのセッション履歴を扱うAPI
- DOM (Document Object Model)
Web標準とは
(おさらい) JavaScriptとWeb API
- JavaScript
- ECMAScriptとして仕様策定されているプログラミング言語
- 実行環境であるJavaScriptエンジンをブラウザが組み込んでいる
- Web API
- ブラウザがJavaScriptエンジン上に実装しているAPI
- Web標準として標準化されている
(余談) ES2015以降のECMAScriptの歩み
クラス | 追加された機能の代表例 |
---|---|
ES2015 | クラス、let / const 、Arrow Function |
ES2016 | Array.prototype.includes |
ES2017 | async/await |
ES2018 | オブジェクトのスプレッド構文 |
ES2019 | Array.prototype.flatMap |
ES2020 | オプショナルチェイニング演算子 ?. 、Null合体演算子 ?? |
ES2021 | String.prototype.replaceAll 、Logical Assignment Operators |
(余談) トランスパイル / Polyfill
- トランスパイル
- 特定の機能を(古い)ブラウザでも動くように変換すること
- Polyfill
- 特定の機能を(古い)ブラウザでも動くように実装したコード
ところで
- Internet Explorer のサポート終了によって何が変わるのか
互換性をどうやって調べるのか
一部を紹介します
- 2021/10/27時点で Internet Explorer 11 以外が対応している機能
- なんか分かりやすいのを挙げています
JavaScript
ECMAScript 2015
Web API
Fetch API
URL API
Intersection Observer API
Resize Observer API
まとめ
JavaScript と Web API の違いが分かる
- 違い、分かるようになってますか?
- JavaScript
- ECMAScriptとして仕様策定されているプログラミング言語
- 実行環境であるJavaScriptエンジンをブラウザが組み込んでいる
- Web API
- ブラウザがJavaScriptエンジン上に実装しているAPI
- Web標準として標準化されている
Internet Explorer のサポート終了によって何が変わるのかが分かる
- ある機能が特定のブラウザで動くのか調べられるようになりましたか?
- Internet Explorer のサポートを切ると出来ること
- ECMAScript 2015 で策定された機能が使える
- 最近のWeb APIが使える
(おまけ) TypeScript
- JavaScriptのスーパーセット
- 新しい仕様もどんどん取り入れている
- TS4.5はES2022の一部を実装している
- 出力対象のECMAScriptのバージョン
- ECMAScript 3 以降、プロポーザルを含むES Nextまでを選択できる
- 提供する対象によって適切なバージョンを選べる
- 今なら何を設定すべきか