Angularチームは,Angular 1からAngular 2への円滑なマイグレーションを可能するための計画について,詳細な情報をリリースした。
同チームはng-conf 2015で,新たなルータを使って,ビュー単位でのインクリメンタルアップグレードが可能になると発表していた。記事の中でBrad Green氏は,“私たちの受け取ったフィードバックは,[新しいルータは]確かにインクリメンタルだが不十分だ,というものでした”,と述べている。“そこで設計に立ち戻ることにしたのです...”
新たなマイグレーションシステムの中心となるのは,ng-upgrade
という新しいコンポーネントだ。以下のような部分において,2バージョンの並行運用を実現する。
ng-upgrade
の開発が完了すれば,Angular 1と2のサービスやコンポーネント,ビューを組み合わせて使用できるようになる。“ng-upgradeライブラリはAngular 1のすべてのインジェクタブル(injectable)を,自動的にAngular 2でも利用可能にします。これによってAngular 1のアプリケーションサービスを,Angular 2のコンポーネントやサービスの任意の場所にインジェクションできるようになります”,とGreen氏は言う。機能的に不足のあるエミュレーションに頼るのではなく,両方のエンジンを実装して,それぞれの部分を実行する仕組みなのだ。
この開発が完了すれば,アプリケーションをAngular 1からAngular 2へ,構成要素をひとつずつマイグレーションすることが可能になる。
ただし,新しいルータもなくなってはいない。Green氏はInfoQに対して,近々公開される開発者ガイドには,既存のルータAPI資料が掲載される予定だと語っている。
このマイグレーション計画は,新たなAngular 1プロジェクトの開始に不安を覚えている開発者にとっては朗報となる。ユーザのescobar氏はHacker Newsでのディスカッションで,このニュースはよい傾向だと述べている。
仕事でいくつかのAngularのアプリケーションを新たに開発して,それを評価したのですが,以前は現実的なマイグレーションパスが非常に不明確に思えたので,すぐに止めてしまっていました。マイグレーションパスがない限り,新しいアプリケーション開発にv1を採用するのは賢明な選択ではありませんし,v2はまだ製品での使用レベルに達していません。
Green氏は今後も,マイグレーションに関する詳細なガイドやコードサンプルなどの記事をさらに公開する予定でいる。開発チームからも,新たなマイグレーション計画の背景にある戦略をより詳細に説明した設計資料が提供される。新しいng-upgrade
コンポーネントはまだ未公開だが,Angular 2ベータ版の一部として提供されるはずだ。提供日は未定だが,Green氏はInfoQに対して,以下の条件が整えばベータ版がリリース可能になると述べている。
- 4週間にわたって非互換変更がないこと
- コアAPIとツーリングを大幅に改善する“シュガー”が完了すること
- 開発者ガイドの最初の20章が完成すること。現時点で4章が完成済みだ。