Angular
Angular(アンギュラー)は、Googleと個人や企業のコミュニティによって開発されているTypeScriptベースのオープンソースのフロントエンドWebアプリケーションフレームワークである。
AngularJSにはパフォーマンス面と機能の分かり易さについて多くの欠点があったため、AngularJSを構築した開発チームが1年かけて1からコードを書き直した。一部の機能や名称は引き継がれているが、基本的に別のフレームワークである。
Angularはコンポーネントベースのアーキテクチャを採用している。すべてのAngularアプリケーションには、ルートコンポーネントと呼ばれる少なくとも1つのコンポーネントがある。各コンポーネントには、ビジネスロジックの処理を担当する関連クラスと、ビューレイヤを表すテンプレートがある。複数のコンポーネントを積み重ねてモジュールを作成することができ、各モジュールはそれ自体で機能単位を形成する。
Angularには、以下のような特徴がある。
シングルページアプリケーション(SPA)の開発に向いている。
フルスタックフレームワークであり、単独でフロントエンド開発に必要な機能が一通り揃っている。
コンポーネント指向アーキテクチャである。
AngularとAngularJSは、以下の点が異なる。
AngularにはScopeやコントローラーという概念が無い。代わりに、コンポーネントベースのアーキテクチャを使用する。
推奨される開発言語がJavaScriptからTypeScriptに変更された。
データバインド等の文法が変更できる。
フィルター(Filters)はパイプ(Pipes)に変更された。機能はほぼ同じである。
2012年6月にリリースされたバージョン1は「Angular 1」や「AngularJS」と呼ばれており、その後、2016年9月にリリースされたバージョン2は「Angular v2」または「Angular2+」と呼ばれていた。ただし、後述の通りバージョンリリースサイクルが早いため、バージョン2以降は単に「Angular」と呼ばれるようになった。
Angularは半年ごとにメジャーリリースを行う。
Angular 2.0は、ng-Europeカンファレンス22-23で発表された。バージョン2.0の劇的な変更は開発者の間で論争を引き起こした。2015年4月30日、Angular開発者はAngular 2がAlphaからDeveloper Previewに移行したことを発表した。Angular 2は2015年12月にベータ版に移行し、最初のリリース候補は2016年5月に公開された。最終版は2016年9月14日にリリースされた。
2016年12月13日にAngular 4が発表された。すでにv3.3.0として配布されていたルーターパッケージのバージョンのずれによる混乱を避けるために3をスキップしている。最終版は2017年3月23日にリリースされた。Angular 4はAngular 2と下位互換性がある。
Angular 5は2017年11月1日にリリースされた。Angular 5の主な改善点には、プログレッシブWebアプリケーションのサポート、ビルドオプティマイザ、およびマテリアルデザインに関連する改善点がある。
Angular 6は2018年5月4日にリリースされた。これは、基礎となるフレームワークにはあまり焦点を当てておらず、ツールチェーンと、将来的にAngularで素早く移動できるようにすることに重点を置いたメジャーリリースである。追加要素は、ng update、ng add、Angular要素、Angular Material + CDKコンポーネント、Angular Materialスターターコンポーネント、CLIワークスペース、ライブラリサポート、Tree Shakable Provider、アニメーションパフォーマンスの向上、およびRxJS v6である。
Angular 7は2018年10月18日にリリースされた。追加要素は、アプリケーションパフォーマンス、Angular Material & CDK、仮想スクロール、選択のアクセシビリティの向上に関するアップデート、カスタム要素にWeb標準を使用したコンテンツプロジェクション、およびTypeScript 3.1、RxJS 6.3、Node 10に関する依存関係のアップデートをサポート(まだノード8をサポートしている)である。
Angular 8は2019年5月28日にリリースされた。遅延読み込み、Web Worker、TypeScript 3.4のサポート、およびオプトイン(Opt-in)プレビューとしてのAngular Ivyの差分読み込みを特徴としている。
Angular 9は2020年2月6日にリリースされた。バージョン8で実験的機能として搭載されていた「Ivy」コンパイラとランタイムがデフォルトとして採用された。「Ivy」は従来よりもバンドルサイズの軽減、ビルド速度の向上、型チェックの改善、国際化(i18n)の改善、テストの改善、CSSクラスとスタイルバインディングの改善、デバッグの改善が行われている。その他、TypeScript 3.7のサポート、YouTubeおよびGoogleマップのコンポーネント導入、Angular Materialのコンポーネントをテストする際にAPIを使ってAngular Materialのコンポーネントを操作することができる「コンポーネントテストハーネス」、IDEと言語サービスの改善が行われている。
Angular 10は2020年6月24日にリリースされた。これは通常のリリースサイクルよりも2ヶ月前倒しでのリリースである。Angular 10は以前のアップデートよりも小規模であり、新機能にはAngular Material UIコンポーネントの新しい日付範囲ピッカーとCommonJSインポートの警告機能が含まれる。CommonJSインポートの警告機能は、CommonJSにパッケージ化された依存関係は動作の遅延とアプリケーションの肥大化を発生させる可能性があるため、ECMAScriptモジュールバンドルに置き換えるように開発者に警告を出す。ng newで新しいワークスペースを作成する際に-- strictオプションが利用可能になった。このフラグを有効にすると、テンプレートチェックがstrictモードになり、TypeScriptにstrictオプションが設定されるため、事前にバグをキャッチしやすくなる。その他、TypeScript 3.9、TSLib 2.0、TSLint 6をサポートしている。。
Angular 11は2020年11月11日にリリースされた。このバージョンでは、ビルド時にアプリケーション内でリンクされているフォントをダウンロードしてインライン化を行う「フォントの自動インライン化」、Angular Materialの全てのコンポーネントのコンポーネントテストハーネスの追加、ビルド結果のCLI出力フォーマットの改善、テンプレート内の型推論を行えるようにした言語サービスの改善、ホットモジュール交換(HMR)の設定簡易化、依存関係をインストールする際のAngularの互換性コンパイラ(ngcc)の更新プロセス速度及びTypeScript v4.0のコンパイル速度の高速化が行われました。また、TSLintからtypescript-eslint, angular-eslint, tslint-to-eslint-configへの移行を推奨している。ブラウザサポートについては、Internet Explorer 9、Internet Explorer 10、Internet Explorer Mobileのサポートが削除された。
Angular 12は2021年5月13日にリリースされた。バージョン8以前におけるデフォルトのコンパイラとランタイムである「View Engine」が非推奨となり、将来のバージョンで「View Engine」は削除される予定である。また、コマンドラインオプションの厳密静的解析モード(-- strict)と本番ビルドモード(--prod)がデフォルトで有効となった。TypeScript 3.7で導入されたNULL合体演算子(??)がテンプレートで利用可能になった。その他、 Internet Explorer 11が非推奨となり、バージョン13でInternet Explorer 11のサポートが削除される予定である。TypeScript 4.2、Webpack 5のサポートを追加している。
Angular 13は2021年11月3日にリリースされた。Ivyベースの機能の拡張と最適化が行われ、「View Engine」は削除された。これにより、ngcc(Angular互換性コンパイラ)への依存性を減らし、高速なコンパイルが期待できる。Angular Package Format(APF)は合理化され、「View Engine」固有のメタデータを含む古い出力形式を削除した。また、Node Package ExportsをサポートするようにAPFが更新された。コンポーネントAPIの定義は簡素化され、以前よりも使いやすくなった。AngularCLIはデフォルトで永続ビルドキャッシュの使用する設定に変更された。ng newによって作成されたアプリはRxJS7.4がデフォルトになった。TestBedは各テストの後にテストモジュールと環境をより適切に破棄できるようになった。その他、 Internet Explorer 11のサポートが削除され、TypeScript 4.4がサポートされるようになった。
Angular 14は2022年6月3日にリリースされた。2つの機能(Typed Reactive FormsとStandalone Components)およびマイナーな改善がいくつか含まれている。「Typed Reactive Forms」は「Reactive Forms」に厳密な型を指定できるようになった。これにより、深くネストされたフォームにおいても、より安全にフォームが作成可能になった。「Standalone Components」は、
NgModule宣言を必要としないスタンドアロンなコンポーネントが実装可能になった。この機能については、開発者評価版である。その他、「AngularRouter」にページタイトルを設定するプロパティが追加された。Angular 14はTypeScript 4.7がサポートされるようになった。
Angular 15は2022年11月26日にリリースされた。スタンドアロンコンポーネントが安定版として使用可能になり、ホスト要素に複数のディレクティブを適用することができるディレクティブコンポジションAPIが実装された。また、Google Chrome上でのスタック トレースが強化された。その他、「Angular Material」がWeb用の Angular Material Design Components (MDC) に基づくようにリファクタリングされた。Angular 15はTypeScript 4.8がサポートされるようになった。
各バージョンは、以前のリリースと下位互換性があると期待されている。 Googleは、年2回のアップグレードを行うことを約束した。
すべてのメジャーリリースは18か月間サポートされている。 これは6か月間の積極的なサポートで構成され、その間に定期的にスケジュールされたアップデートとパッチがリリースされる。 その後12ヶ月の長期サポート(LTS)が続き、その間は重要な修正とセキュリティパッチのみがリリースされる。