Angular

Angular（アンギュラー）は、GoogleのAngularチームと個人や企業のコミュニティによって開発されている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」または「Angular 2+」と呼ばれていた。ただし、後述の通りバージョンリリースサイクルが早いため、バージョン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に関する依存関係のアップデートをサポート（まだNode 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日にリリースされた。これは通常のリリースサイクルよりも２ヶ月前倒しでのリリースである。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）が続き、その間は重要な修正とセキュリティパッチのみがリリースされる。 [脚注の使い方] ^ “Trigular, version 2: proprioception-reinforcement”. blogspot.com (September 14, 2016). 2017年3月18日閲覧。 ^ a b “angular/CHANGELOG.md”. 2024年6月2日閲覧。 ^ “AngularJS and Angular 2+: a Detailed Comparison” (英語). SitePoint (2018年4月6日). 2019年1月5日閲覧。 ^ “Angular Docs”. angular.io. 2019年1月4日閲覧。 ^ “r/Angular2” (英語). reddit. 2019年1月5日閲覧。 ^ “AngularJS and Angular 2+: a Detailed Comparison” (英語). SitePoint (2018年4月6日). 2019年1月5日閲覧。 ^ “Angular Docs”. angular.io. 2019年1月5日閲覧。 ^ “GoogleがAngular 2を正式リリース！ 未来のウェブ標準を意識した新しいフレームワーク”. ICS MEDIA (2016年9月16日). 2019年1月5日閲覧。 ^ “ng-europe - The first AngularJS European conference in Paris, France.”. 2015.ngeurope.org. 2019年1月5日閲覧。 ^ Angular (2015年4月30日). “Angular 2 moves from Alpha to Developer Preview! Dev guide and API docs now available at http://angular.io/docs/js/latest/” (英語). @angular. 2019年1月5日閲覧。 ^ Green, Brad. “Angular 2 Beta” (英語). 2019年1月5日閲覧。 ^ One framework. Mobile & desktop. Contribute to angular/angular development by creating an account on GitHub, Angular, (2019-01-05), https://github.com/angular/angular 2019年1月5日閲覧。  ^ Minar, Igor. “Ok... let me explain: it's going to be Angular 4.0, or just Angular” (英語). 2019年1月5日閲覧。 ^ Fluin, Stephen. “Angular 4.0.0 Now Available” (英語). 2019年1月5日閲覧。 ^ “Angular 4 coming in 2017, to be backwards compatible with Angular 2”. react-etc.net. 2019年1月5日閲覧。 ^ Fluin, Stephen (2017年11月1日). “Version 5.0.0 of Angular Now Available”. Angular Blog. 2019年1月5日閲覧。 ^ Krill, Paul (2017年9月18日). “AngularJS 5 JavaScript framework delayed” (英語). InfoWorld. 2019年1月5日閲覧。 ^ Fluin, Stephen (2018年5月3日). “Version 6 of Angular Now Available”. Angular Blog. 2019年1月5日閲覧。 ^ Fluin, Stephen (2018年10月18日). “Version 7 of Angular — CLI Prompts, Virtual Scroll, Drag and Drop and more”. Angular Blog. 2019年1月5日閲覧。 ^ Fluin, Stephen (2019年2月8日). “A plan for version 8.0 and Ivy”. Angular Blog. 2019年6月7日閲覧。 ^ “Angular Material - Component test harnesses”. 2020年3月17日閲覧。 ^ Fluin, Stephen (2020年2月7日). “Version 9 of Angular Now Available — Project Ivy has arrived!”. Angular Blog. 2020年3月17日閲覧。 ^ Fluin, Stephen (2020年6月25日). “Version 10 of Angular Now Available”. Angular Blog. 2020年6月25日閲覧。 ^ Techson, Mark (2020年11月12日). “Version 11 of Angular Now Available” (英語). Medium. 2020年12月4日閲覧。 ^ Techson, Mark (2021年5月13日). “Angular v12 is now available” (英語). 2021年5月19日閲覧。 ^ Thompson (@marktechson), Mark (2021年11月4日). “Angular v13 is now Available” (英語). Medium. 2021年11月14日閲覧。 ^ “Angular v14 is now available!” (英語). Medium (2022年6月3日). 2022年7月5日閲覧。 ^ “Angular v15 is now available!” (英語). Medium (2022年11月26日). 2023年3月3日閲覧。 ^ “Angular versioning and releases” (英語). angular.dev. 2024年6月2日閲覧。 AngularJS Ajax Node.js React Vue.js ウィキメディア・コモンズには、Angularに関連するカテゴリがあります。 公式ウェブサイト （英語） Angular 日本語ドキュメンテーション Angular Material （英語） 表示 編集