AngularDartのハイレベルロードマップの草稿が発表されたので抄訳してみた。
抄訳
ハイレベルロードマップ
これは開発計画の草稿だ。Angular Dartは現在、多くの大規模なGoogleプロジェクトで使用されている。そして何よりも、私たちは特に、安定性、性能、そして生産性に関して深く検討する。
Angular 2 JS/TS プロジェクトとの関係についてのメモ。私たちはTS版チームと設計と性能の記録を共有し2つのバージョンを出来るだけ近いものに維持するが、私たちは時折、Dartコミュニティーのためにより良いものになるように、同一の機能とAPIを持つよりも分化させることを選択する。現時点では、私たちはDagger2を基礎にした新しいDIとComponent APIを開発中であり、それはDartの強力な静的型解析とレキシカルスコープを活かしたものになる。
性能
- Angular Dartのコンパイラを、(できる限り)イディオマティックなDartコードを出力するように最適化する。
- Change Detectionの実行コストを最適化し、Flutterに似た、一部のコンポーネントツリーだけをアップデートの対象とするリアクティブモデルの方向に進める。
-
*ngFor
を書き直し、メモリとCPUの消費を抑える。 -
const/final
バインディングを理解させ、毎回でなくただ一度だけ検査させる。
-
- ブラウザーとコンポーネントのイベントが軽量化するよう最適化する。
- より洗練されたコードをビルドするため、静的型を使用してより最適化されたテンプレートを生成する。
コードサイズ
- tree-shakingと親和性の高い静的なDependency Injection。
- コンパイラに、デバッギングパスを排したより良い「リリースモード」コードを出力させるよう改善する。
-
ngIf
ディレクティブを、それがスコープ外になる際には軽量化するよう改善する。
生産性
- 正式にDart DDCとstrong modeをサポートする。全てのブラウザーで瞬時の更新操作で開発できるようになる。
- i18nヘルパーコードを生成する。
- テンプレートで、静的でトップレベルのメソッドとゲッターを使用できるようにする。
- より明瞭で、早期に報告される、理解可能なコンパイル時の警告(ランタイムと比較して)。
他の計画
私たちは近々、コード生成(production appのような)を利用したMaterial Components、ルーター、Form APIと、新しいテストに関するさらなる話を公開できる見込みだ。
所感
- Dartが1年以上地道に整備してきたエコシステムを最大限生かしたフレームワークに変貌してほしい。
- コンパイラが改善されることで、現状ではかなり意味不明なこともあるDIに関するランタイムエラーメッセージに悩まされなくなることに大きな期待。
- DDCが正式にサポートされれば、ChromeやFirefox等のブラウザーで素速く開発できるようになる。DartiumはChromeのバージョンから何ヶ月も遅れているので、最新のWeb技術をJS APIのラッパーを書いてテストすることが現実的ではなかったが、これで現実的にできるようになるだろうし、CSSのクロスブラウザのテストも苦痛なくできるようになるだろう。例えるならばCoffeeScriptのようにDartを利用できることになりそうだ。
- Flutterの素晴らしい成果を積極的に取り込んでいってほしい。特に、FlutterのUIライブラリをコンパイルしてAngularで利用可能にすることは可能かどうか興味がある。ElmのviewのようにDartでviewを書いてAngularテンプレートにコンパイルするイメージ。