HTML5Experts.jp

【βリリース記念】5分でわかる!Angular2のススメ

2015年12月15日に、Angular v2.0.0-beta.0がリリースされました。Angular2の発表から実に1年です。まだβ版ではありますが、1つの区切りとして現状のAngular2についてお伝えしていきます。

何が変わったのか

以前から言われているとおり、かなり大きく変わっています。これまでのJavaScriptフレームワークではMVCMVVMと呼ばれるデザインパターンが多く採用されてきました。

しかし、Web Componentsの仕様策定が進んでいる今、この仕様と共存できるようなコンポーネント指向のフレームワークが求められてきています。そういった背景から、MVW(hatever)という思想で開発されていたAngular1に対し、Angular2はコンポーネント指向で設計されています。

Angular2は、以下のような特徴をもっています。

angular.io – FEATURES & BENEFITS より

これだけだと伝わりにくいので要約すると、

などが挙げられます。

Angular1の良いところはそのままに、課題については改善していこうという姿勢です。その結果もあり、Angular1で問題となっていたDirty Checkingを解決したことや、サーバサイドレンダリングをおこなえるようになったことで、パフォーマンスが飛躍的にアップしました。Angular2開発当初にパフォーマンスの問題で一時取り止めになっていた双方向バインディングも現在では実装されています。

それに加えて、Angular2では、モバイルやデスクトップアプリでも快適に動作するよう考慮されています。すでにIonicNativeScriptで、ハイブリッドアプリやネイティブ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で実装することもできます。またTypeScriptBabelなどのトランスパイラも組み合わせて開発することも可能になりました。特に、Angular2自身がTypeScriptで実装されていることもあり、tsdファイルを作成する必要がなくなったことは、TypeScriptユーザにとって嬉しいことではないでしょうか。

Angular2 のこれから

現在、β版にはなり多少は落ち着いたのかなといった印象ですが、今後はAngularユーザやコミュニティによってさらにブラッシュアップされていくことと思います。まだまだドキュメントが少ないことが懸念されますが、これらはAngularの開発チームでも課題になっているので、時間とともに解決されていくでしょう。

最後に気になるv2.0.0のリリース時期について、あくまでも予想ではありますが、 2016/5/4〜6にかけて開催される ng-confでv2.0.0をお披露目したいのではないかと推測しています。(もしかしたら間に合わないかも、ということもありますが…)