2015 年 Angular 界隈総まとめ
メリークリスマス!@armorik83 です。いよいよ今年も残すところあと 1 週間となり、年の瀬感が湧いてきました。Angular 界隈からみた 2015 年といえば、なんといっても Angular 2 の開発でしょう。私事ですが Angular ユーザグループ"ng-kyoto"を結成したのも今年で、秋からは転職し東京に引っ越すなど、エンジニアとしても大きな躍進を遂げた一年です。
アドベントカレンダー最終日となる本日は、そんな 2015 年の Angular 界隈について振り返ってみましょう。
1 月
Angular 2
Angular 2 といえば、2014 年 10 月のng-europeにて墓標が乱立した発表が衝撃的で、そこからの印象は「AngularJS が大きく変わるんだ」というものでした。それはポジティブでもネガティブでもありましたが、2015 年の Angular 界隈の動きを決定付けた発表であったことには疑いようがありません。
2015 年 1 月は、そんな前年の発表とは変わって Angular 2 にはひっそりとした年明けでした。この頃はまだパフォーマンス向上のための基盤作りに腐心していたようで、benchmark resultsがミーティングの議題に上がるなど、フレームワークとしての全貌の構築より、いかに AngularJS から高速化できるかという活動がよく見受けられます。基盤となる Change Detection は既に 2014 年中から開発が始まっており、これは Angular 2 の心臓となるものです。
関連のカレンダー記事
- Angular2 の Change Detection について
- Angular2 でもとりあえず SVG を描いてみる
- Angular 2 の初期化・Component のコンパイル周りのソースを読んでみる
AngularJS
AngularJS はこの頃 1.4 開発の真っ最中。beta.0 がリリースされたのが 1 月 15 日で、この頃の安定版は 1.3.9。今となっては驚きですがまだ Browserify も非対応。基本的には bower を使うか CDN でローディングする前提でした。
armorik83
私といえば、この頃「へこぱんだ」でおなじみの@_likr との縁で AngularJS アプリの案件に携わりました。思えばこの時の活動が今年一年の決め手になっていたようです。その案件は(業務なのに)オープンソースなので誰でも読めます。今読むとなんとも未熟なコードをしていますが。
2 月
Angular 2
2 月は地味です。Angular 界隈の表立った動きはそれほどありませんでした。ログを読む限り AngularJS 1.4 系へのリソースを割いていたようで、その他には ngAnimate の 1.5 での改良、2.0 での方針決めなど、1.4 からの新機能をどう進めていくかという議論がなされていたようです。
ところが実は、GitHub 上の動きは地味ですが Angular 2 の長い長いアルファリリースの歴史は 2 月 10 日に npm に登録された 2.0.0-alpha.1 から始まっているのです。
- 2/10 2.0.0-alpha.1
- コミットグラフ
- Angular 2 issues/PRs #777 到達
AngularJS
AngularJS は 2 月に 1.3.13 をリリースし、ここでさりげなく Browserify (CommonJS)に対応しています。
3 月
3 月は、Angular 界隈にとって非常に大きな動きをもった一月となりました。ng-conf 2015と、日本初の Angular カンファレンスとなるng-japanの開催です。
Angular 2
Angular 2 の大きなニュースは、なんといっても TypeScript への乗り換え発表です。2014 年に AtScript を発表して traceur-compiler と独自路線を突き進むのかと思いきや、なんと Microsoft と手を組み、TypeScript 1.5 からのDecorators 構文を導入すると発表したのです。Angular 2 実装は TypeScript で記述され Dart と JavaScript に変換するというトンデモ構想も発表されました。今思えばこの時の決断は正解で、TypeScript の採用がなければ普及させることは難しかったでしょう。なお、Angular 2 は TypeScript 専用フレームワークではなく、ES5 でも記述可能です。
カンファレンスが続いたことで一気に Angular 2 の情報が出始めました。パフォーマンスの改善、ルーター、アノテーションによる Sugar Syntax などなど、Angular 2 を特徴付けたのはこの頃からです。2.0.0-alpha.13 からは GitHub 上でもタグ付けが始まり、ようやく一般向けに Angular 2 の進捗が見られるように整いました。
- 3/14 2.0.0-alpha.13(GitHub 上のファーストリリース)
- コミットグラフ
- Angular 2 issues/PRs #1000 到達
関連のカレンダー記事
AngularJS
3 月に AngularJS で記憶に残っているものといえば「1.4 は来週リリース」に尽きますね。ng-japan で意気込んで発言したはよいものの、彼らのいう来週は 5 月 27 日を指していたようで、遅れに遅れてしまったという笑い話がありました。
Angular の 1.4(当時の予定)と 2 に搭載するルータ・ライブラリを"New Router"と名付け、それが古くなったらどうするんだい?とツッコまれるなど笑いの絶えない 3 月となりました。
開発面では、AngularJS の 1.4 リリースが予定より押している中、ログを見る限り着々と 1.5 検討についてのミーティングも始まっていたようです。
armorik83
ng-kyoto 発足の由来ですが、実は ng-japan に参加した私を含む 3 人が京都にちなんでいたことから「ng-kyoto やるかー」と発言したのがキッカケだったりします。
4 月
Angular 2
カンファレンスが続いた 3 月も終わり、また黙々と進捗が上がる月となりました。4 月は公式サイトの API Docs に手が入り、GitHub 以外でも情報が得やすくなりました。
『Angular 2 alpha.18 に挑んだら想像以上に険しかった』という記事を書いたように、すでに Angular 2 は開発者が実際に触れる段階まではきていたのですが、まだまだ粗削りで Angular チームが想定していない開発環境だと途端に動かなくなるなど、alpha 特有の危険な匂いが漂う時期でした。alpha.21 は"developer preview"と称されましたが、今思えばまだ半分にも来ていません。
ミーティングでは、AngularJS から 2 への移行促進をどうするかという戦略について議論されていたようです。React / Angular Meetingなんてのもありました。ルータの命名が ComponentRouter に変更されたのも 4 月です。
- 4/28 2.0.0-alpha.21
- コミットグラフ
関連のカレンダー記事
AngularJS
ようやく 1.4.0 の rc がリリースされました。後から分かった事では、1.4.0 の開発遅れの大半が ngAnimate の機能追加だったようで、それ以外はおおよそ 3 月に仕上がっていたようです。
- 4/10 1.4.0-rc.0
armorik83
私は GDG 神戸さんのAngular 勉強会#3に登壇していました。ここでの懇親会で ng-kyoto を立ち上げてみたいという話を持ちだして、そのまま ng-japan の@can_i_do_web さんまで話が通った記憶があります。あの時繋いで下さった@albatrosary さん、ありがとうございました。なお、このお二方が中心となって記事が盛り上がっているAngularJS Advent Calendar 2015の方もぜひご覧ください。
5 月
Angular 2
5 月の Angular 2 ニュースといえば TypeScript 化の完了です。3 月に切り替えを発表してからも長らく traceur-compiler 依存が続いていましたが、ようやく全ての実装が TypeScript となりました。コミットの山も 5 月が今年最も高くなっています。これは 4 月 30 日にリリースされたTypeScript 1.5.0-betaを利用します。1.5.0-beta より--emitDecoratorMetadata
オプションが利用可能になり、これは Angular 2 の DI が動作する上でとても重要なものとなっています。
テンプレート記述周りは 3 月から情報が徐々に公開されていましたが、中の人Victor Savkin 氏によるブログにて丁寧にまとめられたことで、イメージしやすくなりました。
関連のカレンダー記事
AngularJS
5 月は待ちに待った 1.4.0 のリリースです。ようやく「来週」が来ました!AngularJS 1.2 当時は遅いと言われていたのも今や昔。ずいぶんチューニングされ高速になりました。バグ修正やブラッシュアップが主ですが、ngAnimate の大幅進化やbindToController
の機能拡張など、イマドキな AngularJS を構築するのに必須な API が揃ったのも、このバージョンです。
- 5/26 1.4.0
ng-kyoto
我らがng-kyotoが誕生したのも 5 月です。5 月 19 日に正式に発足しました。3 月、4 月と構想を練っていたものがようやく形となりました。ng-kyoto の公式サイトは全て Angular 2 によって構築されています。
また私個人の話ですが、黙々と一週間ほど執筆し書き上げたのが『AngularJS モダンプラクティス』です。おかげ様でとても好評を頂いておりまして『AngularJS アンチパターン集』と並んで日本の AngularJS コミュニティでは名を広めさせていただきました。噂によると Google の中の人もモダンプラクティスを読まれていたとか。
このときの活動は、その後の転職にも大いに役立っています。
6 月
Angular 2
6 月はAngular Uが開催されました。Server-side Rendering, Material, Web Worker, React Native... Angular 2 の繋がってゆく技術や構想について明かされた Angular U は大変エキサイティング。Angular 2 がどのような到達点に向かっているのか、そのマイルストーンが示されました。styles
, styleUrls
, Http
がサポートされたのはこの月からです。
GitHub では、ようやく CHANGELOG が記されるようになりました。といっても、たまに漏れてる Breaking Changes があったりして、それもまた愛嬌。
- 6/17 2.0.0-alpha.27
- 6/24 2.0.0-alpha.28
- コミットグラフ
関連のカレンダー記事
- Angular 2: Component のスタイル実装と CSS のカプセル化
- ionic2 on Angular2
- Angular 2 + Ionic 2 を始めました
- Angular2 の Http モジュールを眺めてベストプラクティスを考える
ng-kyoto
ng-kyoto は、初となるイベントとして 6 月 19 日にAngular Meetup Kyoto #1を京都の地で開催しました。
7 月
Angular 2
Angular 2 の綺麗な週刊リリースが行われていた 7 月、開発も着々と進んでおり、地味ながら安心して見ていた月です。
- 7/1 2.0.0-alpha.29
- 7/8 2.0.0-alpha.30
- 7/14 2.0.0-alpha.31
- 7/21 2.0.0-alpha.32
- 7/30 2.0.0-alpha.33
- コミットグラフ
- Angular 2 issues/PRs #3000 到達
AngularJS
ngUpgrade というプロジェクトが発足しました。これは AngularJS から 2 への Migrator の整備、移行をどう進めるか、といったことを議論するプロジェクトだったようで、現在は AngularJS 1.5 及び Angular 2 の各種整備をもって解散しています。
関連のカレンダー記事
8 月
Angular 2
AngularJS から 2 への移行手法がしきりに議論されていた 8 月、alpha もだいぶ進み alpha.25 と 35 では見違えるように成長していました。大規模な Breaking Changes も散見され、大きくなりチーム内ドッグフーディングをするにつれて浮かんだ問題点について、積極的に解決している様子でした。
- コミットグラフ
- 8/7 2.0.0-alpha.34
- 8/19 2.0.0-alpha.35
- 8/31 2.0.0-alpha.36
ng-kyoto
ng-kyoto Angular Meetup #2を開催。ng-kyoto なのに会場が大阪という点は盛大にツッコまれていました。
9 月
Angular 2
大きなイベントもなく、地味ながらも着々と進んだのが 9 月。API Docs の整備が進み、長らく依存の続いていた traceur-compiler を全廃するなど、Angular 2 が洗練されてゆくフェーズに入っていたように思えます。アルファリリースはひとつですが、LifecycleEvent
の記述がより簡便になり、HTML の独自記法が整理されるなど、より使いやすい Angular 2 へと磨かれていきました。
AngularJS
AngularJS は、ここへきてまさかの1.2.29 リリースがありました。1.2.0 は 2013 年 11 月にリリースされているので、実に 2 年越しのパッチアップデートとなります。AngularJS 1.2 系は 1.3 系とは違い LTS として扱われているため、今回のようなパッチが入ったのでしょう。
1.2.29 と同日の 9 月 29 日に、AngularJS 1.5.0-beta.1もリリースされました。
- 9/29 1.5.0-beta.1
ng-kyoto
余談ですが、私 armorik83 は 9 月より京都から東京に引っ越し、ChatWork 株式会社のフロントエンドとして働いています。ここでも奇しくも AngularJS アプリケーションを開発することに。東京には引っ越しましたが、ng-kyoto は解散しません。
10 月
Angular 2
10 月 21 日にロンドンにてAngular Connectが開催されました。あの墓標が乱立した ng-europe から 1 年になります。このカンファレンスのためかアルファリリースも激しさが増しており、追うのがやっとなほど活性化していました。
Angular 2 を象徴する API @Input
, @Output
は Properties, Events の改名によりここで誕生しています。Victor Savkin 氏は度々思い切ったリファクタリングや Breaking Changes を施しますが、この時の変更は個人的には大正解だったと思います。[()]
という独特の表記をもつ Two-way Bindings も 10 月に表記手順が整理され、大量のバグが修正され、beta リリースに向かってブラッシュアップはより強力になっていきました。
- コミットグラフ
- 10/3 2.0.0-alpha.38
- 10/6 2.0.0-alpha.39
- 10/9 2.0.0-alpha.40
- 10/13 2.0.0-alpha.41
- 10/13 2.0.0-alpha.42(まさかの同日)
- 10/15 2.0.0-alpha.44(43 は欠番)
- 10/29 2.0.0-alpha.45
- Angular 2 issues/PRs #5000 到達
関連のカレンダー記事
- Angular 2 入門:NgModel に触れてみる
- AngularJS と Angular2 の比較から、js フレームワークの独自進化を考える
- Angular 2 @Input のアレコレ
- Angular 2 @Output のアレコレ
11 月
Angular 2
beta リリースに向けて開発が進んだ 11 月、アルファリリースはわずかひとつですが、密度の濃いリリースでした。この時期からまた API Docs へのテコ入れがあり、beta リリース後に多くの開発者が利用できるよう整備が進んでいきました。
- コミットグラフ
- 11/11 2.0.0-alpha.46
AngularJS
11 月はAngularJS 1.5.0-beta.2 がリリースされました。angular.module().component()
という Directive を作成するための新たな API が導入されたのが最大の特徴で、これは AngularJS 1.5 から Angular 2 への移行を円滑に進めるために用意されています。
11 月は e2e テスト用フレームワークProtractor 3.0もリリースされました。
- 11/17 1.5.0-beta.2
ng-kyoto
ng-kyoto Angular Meetup #3を開催しました。私はAngular 2 の最新事情について紹介しましたが、これも(リリースの勢いが速すぎて)もはや過去の情報となってしまっています。
12 月
Angular 2
いよいよ今月。12 月は 2015 年の Angular 2 の中で、最も濃い月になっています。なんといっても最大のニュースはAngular 2.0.0-beta.0 のリリースですね。
ここに至るまでに a47 から a55 という(2 日で 4 進む)驚愕の勢いでアルファリリースが続き、Qiita のアドベントカレンダーの時期と重なったこともあり、とにかく記事執筆中に振り回され続けたという、印象深い月です。beta.0 からの安定を見越したのか詰め込んだように Breaking Changes が続き「昨日書いた記事が今日動かなくなる」なんて日常茶飯事でした。技術面では RxJS 周りの整備が目立っています。
アドベントカレンダーといえば、初日を飾ってくれたのは Angular の中の人、Brian Ford 氏ですよ! Thank you Brian!
- コミットグラフ
- 12/1 2.0.0-alpha.47
- 12/5 2.0.0-alpha.48
- 12/9 2.0.0-alpha.49
- 12/9 2.0.0-alpha.50
- 12/10 2.0.0-alpha.51
- 12/10 2.0.0-alpha.52
- 12/13 2.0.0-alpha.53
- 12/15 2.0.0-alpha.54
- 12/15 2.0.0-alpha.55
- 12/15 2.0.0-beta.0
- Angular 2 issues/PRs #6000 到達
関連のカレンダー記事
- Angular 2: Musings on Framework Design
- npm i angular2 して Hello World!するところまで
- Angular1 と Angular2 の非同期処理の違いについて考えた
- Angular2 をいろんな言語で試してみようよ。
- 初心者が Angular2 で嵌まったり解決したりサンプルコード書いたりしてみた。
- Angular2 の実践的なビューの作り方(Abstract Class を使う)
- 新鮮な Falcor と Angular2 のサンプル、季節の RxJS と minimongo を添えて(TypeScript の Abstract Class 風味)
AngularJS
AngularJS 界隈は 2 に比べると穏やかですが、1.5.0-rc.0 がリリースされ着実に動きがありました。1.4 系の時点で十分安定しているので、よく枯れた貫禄のあるフレームワークに仕上がっています。
12/9 1.5.0-rc.0
おわりに
いかがでしたか。取り留めないまとめですが、Angular 2 の激動の 1 年、そして AngularJS にとっては安定感のある 1 年となっていたことが分かります。Angular はとても多くの開発者に愛され、コミュニティを拡げ、ここまで成長してきました。カンファレンスを重ね、たくさんの issues と PRs を受けて開発の進んだ Angular も誕生から早 6 年。2016 年は間違いなく Angular 2 の年となることでしょう。
海の向こうからカレンダー執筆を快諾してくれた@btford、たくさんの相談に乗ってくれて Angular 2 の最新情報も教えてくれた@laco0416、急なカレンダー抜けへの依頼も引き受けて 3 本の記事を寄せてくれた@ovrmrw、そして ng-kyoto のみんな (@_likr, @shinsukeimai, @pastelInc)、本当にありがとう!
alpha リリースが繰り返される中カレンダーを果敢にも埋めて下さったみなさん、Angular 2 に興味を持って下さった全ての読者のみなさんに感謝いたします。ng-kyoto は Angular を通じてこれからも情報を発信してまいります。どうぞ 2016 年も Angular 2 と共にご期待ください。
それではみなさんよいお年を!
Enjoy!
Discussion