AngularDartすごい!マジすごい!

1. Googleの本気がすごい!

AngularDart去年の6月くらいに開発中であることが公になり、11月にわりとよさ気な感じになってきたかもということでリリース間近を感じさせるバージョン番号0.9.0が振られました。そしてその3ヶ月後に世界各地で行われた初めてのDart言語の大規模イベント「Dart Flight School」にはすでにイベントタイトルにwith AngularDartと振られています。Googleのスピード感とAngularDartにかける本気度が感じられます。

個人的にもAngularDartとDartRailsRubyみたいな関係になれるかもと思える程度にはAngularDartいい出来だと感じているので、Googleのこの扱いはわりと納得。

しかしですよ。

2. 開発者のアジャイル精神がすごい!

「変化ヲ抱擁セヨ」

2月一杯かけて行われたDart Flight Schoolで初心者を大量にDart界に呼び込んだ(はず)にも関わらず、4月半ばに入った修正がこれ。

https://github.com/angular/angular.dart/commit/f055ab6f7c4fadfdbb6a46d8bc547b304586d95c

fix: More consistent type naming
Closes #902

BREAKING CHANGE:
  - Concepts:
    - Filter                        -> Formatter

  - import:
    - angular/directive/ng_a.dart   -> angular/directive/a_href.dart
    - angular/filter/currency.dart  -> angular/formatter/currency.dart
    - angular/filter/date.dart      -> angular/formatter/date.dart
    - angular/filter/filter.dart    -> angular/formatter/filter.dart
    - angular/filter/json.dart      -> angular/formatter/json.dart
    - angular/filter/limit_to.dart  -> angular/formatter/limit_to.dart
    - angular/filter/lowercase.dart -> angular/formatter/lowercase.dart
    - angular/filter/module.dart    -> angular/formatter/module.dart
    - angular/filter/number.dart    -> angular/formatter/number.dart
    - angular/filter/order_by.dart  -> angular/formatter/order_by.dart
    - angular/filter/stringify.dart -> angular/formatter/stringify.dart
    - angular/filter/uppercase.dart -> angular/formatter/uppercase.dart

  - Types:
    - NgA                           -> AHref
    - NgAttachAware                 -> AttachAware
    - NgDetachAware                 -> DetachAware
    - NgShadowRootAware             -> ShadowRootAware
    - NgFilter                      -> Formatter
    - NgInjectableService           -> Injectable
    - AbstractNgAnnotation          -> Directive
    - AbstractNgFieldAnnotation     -> DirectiveAnnotation
    - NgComponent                   -> Component
    - NgController                  -> Controller
    - NgDirective                   -> Decorator
    - NgAnimate                     -> Animate
    - NgZone                        -> VmTurnZone
    - NgAnimationModule             -> AnimationModule
    - NgCoreModule                  -> CoreModule
    - NgCoreDomModule               -> CoreDomModule
    - NgAnimationDirective          -> NgAnimation
    - NgAnimationChildrenDirective  -> NgAnimationChildren
    - FilterMap                     -> FormatterMap
    - NgAttrMustacheDirective       -> AttrMustache
    - NgTextMustacheDirective       -> TextMustache

  - Constants
    - NgDirective.LOCAL_VISIBILITY           -> Directive.LOCAL_VISIBILITY
    - NgDirective.CHILDREN_VISIBILITY        -> Directive.CHILDREN_VISIBILITY
    - NgDirective.DIRECT_CHILDREN_VISIBILITY -> Directive.DIRECT_CHILDREN_VISIBILITY


クラス名の大規模改名

まぁ修正としては冗長なプレフィクスとかサフィックスとかが除かれたということですっきりしてよかったとは思うものの、とりあえずこれ以前に作られた資料は全部ゴミになりました。Dart Flight Schoolに伴って世界中でボランティアが頑張って資料作ってただろうに・・・。

対策についてもNgプレフィクスなくすだけなら一括置換で何とかなりそうな気配もあるけど

- AbstractNgAnnotation          -> Directive
- NgDirective                   -> Decorator

これとか結構な罠。あと

- NgAnimationDirective          -> NgAnimation
- NgAnimationChildrenDirective  -> NgAnimationChildren

全てのNgプレフィクスが消えてるわけじゃないのもレベル高い(罠として)。

ついでにいつのまにかアプリケーションの開始方法も変わってたり。

ngBootstrap(module: myModule);   -> applicationFactory().addModule(myModule).run();

なんだろ、C言語で言えば「これからはmain関数ではなくてstart関数をエントリポイントにします」って言われた感じ?単純に置き換えればいい話とはいえそこ変えんの?みたいな。すごい!

3. バージョニングがすごい!

で、誰が見ても分かる通りこれはいろいろ変わりすぎだろうということでバージョンは0.9.10から0.10.0に・・・え?いいのそれ?

0.9.9の次に0.9.10が出た時「これ0.9.99まで行っちゃうんじゃないの?」って思ったのを覚えてるけど、0.10.0ってそれもう0.99.99まで視野に入っちゃう・・・すごい!

4. 地獄はこれからだ感がすごい!

いまmasterに入ってる変更。

使ってない人にはピンと来ないかもしれないけど、DIに使うメソッド総とっかえ。いや、まぁ、新しいのも悪くないとは思うけども。むしろよくなってると思うけども。でもこれAngularDartの全ユーザーに間違いなく影響あるよね?

これから入りそうな変更

@Controllerアノテーションなくすて!今このタイミングで!すごい!

5. そんなコミッタ陣にBreaking Changeを指摘されるオレすごい!

まぁ指摘したのはバシバシBreaking Change入れてる人とは違う人なんだけど。

https://github.com/angular/angular.dart/commit/3ee8740204d635c4d046fc1afdacdf18685e2d8b#commitcomment-6177893

でもこれFilterをFormatterにするっていう方針の追従漏れをちまちま直しただけのパッチだし、私に言われましても・・・。まぁそれはそれとしてAngularDartにBreaking Changeぶっこむオレすごい!

使おう!AngularDart!

色々書いたけど、変化が激しいのは開発が活発な証拠。むしろポジティブに捉えましょう。AngularDartはこのユーザーお構いなしなアグレッシブさも含めて、これまでなかった可能性を感じられるいいフレームワークだと思いますし、この不安定さダイナミックさは今しか味わえないものです。みなさんもこの機会にぜひ試してみませんか?