2015年12月15日に、Angular v2.0.0-beta.0がリリースされました。Angular2の発表から実に1年です。まだβ版ではありますが、1つの区切りとして現状のAngular2についてお伝えしていきます。
何が変わったのか
以前から言われているとおり、かなり大きく変わっています。これまでのJavaScriptフレームワークではMVC
やMVVM
と呼ばれるデザインパターンが多く採用されてきました。
しかし、Web Components
の仕様策定が進んでいる今、この仕様と共存できるようなコンポーネント指向のフレームワークが求められてきています。そういった背景から、MVW(hatever)という思想で開発されていたAngular1に対し、Angular2はコンポーネント指向で設計されています。
Angular2は、以下のような特徴をもっています。
- 処理速度・パフォーマンスの向上
- よりシンプルに、わかりやすく
- クロスプラットフォーム
- Angular1からのシームレスなアップグレード
- 柔軟な開発
- 網羅的なルーティング
- Dependency Injection(DI)
- レガシーブラウザのサポート
- アニメーション(開発中)
- 国際化 (Internationalization:I18N) とアクセシビリティ(開発中)
angular.io – FEATURES & BENEFITS より
これだけだと伝わりにくいので要約すると、
- Angular1での課題の解決
ES2015/ESNext
への対応TypeScript
などのトランスパイラとの連携Web Components
やPolymer
との連携- AndroidやiOS対応
- デスクトップアプリ対応
- サーバサイドレンダリング対応
などが挙げられます。
Angular1の良いところはそのままに、課題については改善していこうという姿勢です。その結果もあり、Angular1で問題となっていたDirty Checking
を解決したことや、サーバサイドレンダリングをおこなえるようになったことで、パフォーマンスが飛躍的にアップしました。Angular2開発当初にパフォーマンスの問題で一時取り止めになっていた双方向バインディングも現在では実装されています。
それに加えて、Angular2では、モバイルやデスクトップアプリでも快適に動作するよう考慮されています。すでにIonicや NativeScriptで、ハイブリッドアプリやネイティブUIモバイルアプリを開発する際も、Angular2を利用することができるようになりました。
これらを見れば、多岐にわたる変更があるだろうことが想像できるでしょう。
Angular2が提供するAPIは一新されていて、Angular1との互換性はありません。しかし、Angular1のディレクティブの設定に似ているため、多少経験がある方であれば理解するのはさほど難しくはありません。
// コンポーネントを作成するサンプル (function(app) { app.AppComponent = ng.core .Component({ selector: 'my-app', template: '<h1>My First Angular 2 App</h1>' }) .Class({ constructor: function() {} }); })(window.app || (window.app = {}));
弱点がなくなった Angular2
他のフレームワークと比較すると、Angular1は入力フォームの多い、管理画面などの開発において圧倒的な強みがありました。双方向バインディングや強力なフォームバリデーション機能が備わっていたためです。
Angular2は、それらの機能を備えたままさらに強力になったといえます。管理画面だけでなく、モバイル環境やデスクトップアプリでも問題なく利用できるので、活躍する場が広がっていくでしょう。
サーバサイドレンダリングを利用すれば、SEOが必要なWEBサイトのフロントですら利用することができるようになります。 このように、苦手としていたことの改善によるパフォーマンスが向上したことで、今後は限定的なケースではなく、さまざまなケースで利用されることが期待できます。
他にも、開発する際の自由度があがったことも大きなメリットです。ES5
で実装することもできますし、ES2015
で実装することもできます。またTypeScript
やBabel
などのトランスパイラも組み合わせて開発することも可能になりました。特に、Angular2自身がTypeScript
で実装されていることもあり、tsdファイルを作成する必要がなくなったことは、TypeScript
ユーザにとって嬉しいことではないでしょうか。
Angular2 のこれから
現在、β版にはなり多少は落ち着いたのかなといった印象ですが、今後はAngularユーザやコミュニティによってさらにブラッシュアップされていくことと思います。まだまだドキュメントが少ないことが懸念されますが、これらはAngularの開発チームでも課題になっているので、時間とともに解決されていくでしょう。
最後に気になるv2.0.0のリリース時期について、あくまでも予想ではありますが、 2016/5/4〜6にかけて開催される ng-confでv2.0.0をお披露目したいのではないかと推測しています。(もしかしたら間に合わないかも、ということもありますが…)