Angularチームは先頃、シングルページアプリケーション用フレームワークの最新メジャーリリースとなる、Angular 8をリリースした。今回のリリースには、多数のバグ修正、差分ロードを含むいくつかの段階的な改善、IvyレンダリングエンジンとBazelビルドシステムのプレビュー版などが含まれる。
差分読み込みは、Angularのコード生成および配信方法の大きな変更であり、最新のブラウザの初期バンドルサイズを最大20%削減することができる。これを実現するため、Angular CLIは、ES6をサポートするブラウザをターゲットとする最新バンドルと、旧式ブラウザ用のレガシーバンドルという、独立した2つのバンドルを生成するようになった。ロードするバンドルの決定は、nomodule HTMLタグを使用することで、ブラウザがロード時に行なう。これにより、最新のブラウザによるタグ付きスクリプトの実行を防止する。
最新バンドルの正確な構成は、Browserlistのコンフィギュレーションによって判断されるが、レガシブラウザはより大きく、より完全なポリフィルセットを取得するようになる。このような差分ロードはAngular固有のテクノロジではなく、Dojoなどの一部のフレームワークですでに実装されている点には注意が必要だ。
Angular 8ではAngular CLIも、使いやすさの向上を中心として、いくつかの点で改善されている。Builder API(Architect APIとも呼ばれる)を使用することで、開発者は、クラウド展開やリンティング(linting)、テストなどのカスタム操作を、CLIビルドプロセスに追加することができる。Workspace APIは、Schematicsで使用されるangular.jsonファイルとインタラクトする手段を提供することで、開発者によるCLIのカスタムワークフローの作成を可能にする。バージョン8のAngular CLIでは、Webワーカの作成とバンドル手順も簡略化されている。
最後に、Angular 8では、作業を合理化し、最新のテクノロジでAngularを最新の状態に保つ上で有効な、いくつかの小さな変更が行われている。
具体的には次のようなものだ。
- Typescript 3.4へのアップデート。これは同時に、Typescriptの最低限必要なバージョンにもなる。
- ルータモジュールの遅延読み込み構文のアップデート(ES2020のダイナミックインポート標準に準拠)。
ngUpgrade
によるURL処理の改善。
最後に紹介する2つの重要な改善点は、まだ運用段階には達していないため、オプトインプレビューフラグによって隠蔽されているものだ。次世代のAngularパイプラインおよびレンダリングエンジンであるIvyは、多くの面でフレームワークを大きく改善する。Angular 8では、Ivyエンジンのオプトインプレビューが提供されている。このプレビューは、Ivyオプトインガイドに従って有効にすることができる。BazelはGoogleの社内向けビルドシステムで、2015年にオープンソース化された。現在はAngularと統合されていて、インクリメンタルなビルドとテスト、リモートビルドのサポートなどを含む、いくつかの改善を提供する。Bazelは、Bazelオプトインガイドに従うことで有効にできる。Angularチームは、IvyとBazelに関するフィードバックを求めている。ただし、これらの機能は、現時点では実稼働で使用するのに十分な安定性があるとは見なされていない点に注意が必要だ。
Angularは、MITライセンス下で利用可能なオープンソースソフトウェアである。コントリビューションは、Angular Githubリポジトリ経由で受け入れられている。Angular 8の変更点の全リストは、Angularフレームワークのchangelog、Angularのマテリアルのchangelog、Angular-CLIのchangelogで確認できる。