佐川 夫美雄

「NewRouter」という名前を付けてしまってゴメンナサイ…Angular開発者が生で答えるQ&Aセッション─ng-japan 2015

連載: ng-japan 2015 特集 (6)

この記事は、Angularをテーマとした日本初のカンファレンス 「ng-japan」のイベントレポート(第6回目)です。ng-japan特集最後は懇親会でのQ&Aの模様をレポートします。

16880968991_bb477b9a39_z

AngularカンファレンスQ&A

Q1. Angular 2を開発するに当たって、React.jsのアーキテクチャや考え方から影響を受けていますか?

一定の影響はありました。よく聞かれる質問としては「Virtual DOMについて」ですが、我々はこのVirtual DOMがパフォーマンスを上げるために必ずしも必要となるものではないと考えています。それよりも「unidirectional data flow」という考え方のほうが役に立つのではないかと考えています。

プレゼンテーションの中でも「Immutable Infrastructure」については触れましたが、これについてはReactのチームともディスカッションを始めているところ。この分野についてはReactチームとAngularチームのコラボで行っていけるのではないかと考えています。

Q2. GoogleのプロダクトでAngularはどのぐらい利用されていますか?

Googleプロダクトの約2,000のアプリケーションで、Angularを使っています。特にGoogleが提供するクラウドでは、ほとんどのUIがAngularで書かれています。AngularチームというのはGoogle内でもいろいろな組織が存在していますが、その中に広告のグループであるAdsのチームがあり、ここでもAngularが使われています。その他にもGoogle内部だけで使われるような、内部プロセス用のアプリケーションについてもAngularが利用されています。

すべてのアプリケーションがAngular 2に移行するとは考えていませんが、Angular 2を使った方が簡単ものもありAngular 2を使う価値があるものについては移行をします。

Q3. Angular 1系のサポートはいつまで行っていきますか?

一時期Angular 1のサポートはいつまでで、Angular 2はいつからといった区切りを設定する予定でした。例えば、Angular 1のサポートを2016年末で終わりますと言って、Angular 2が2016年末に出てきたら、まったく移行の期間がなくなります。プレゼンテーションでも様々なお話をしたようないろいろなシグナルを見て今開発をしている人は、自分の位置がどのあたりにいて、今後どうなるのかを把握する必要があります。そして移行期間が作れるように、段階的に終了していくというのが正しい方向ではないかと考えています。

そして、GoogleだけがAngularに投資を行っている企業ではなく、Googleの外にもコアなチームメンバーがいて、彼らは彼らでAngularの開発にあたっています。なので我々としてもサポートをしっかりしていくということが重要でありオープンソースにとっても重要だと考えています。とは言うもののAngular 2を魅力的なものにし、しかもマイグレーションし易いものにし、誰もがAngular 2に移行した利用したいといった素晴らしいものに創りあげたいと考えています。

16261977763_ed8d764c2b_z

Q4. Angular 2の新しい機能に対してServiceとかFilterとか変な名前を付けてないか確認したい

まだ名前の付け方が得意じゃないけど、なるべく混乱のないような名前をつけていきます。でも、もう既に新しいRouterに対して、「NewRouter」という名前を付けてしまってゴメンナサイ。

Q5. Angularで検討されている機能で「Component Helper」というのがあるようですが、Angular1.4でリリースされる予定はありますか?

他のコンポーネントとの兼ね合い、Angular 2の機能の一部をAngular1.4に入れていることもあり、もしかするとAngular1.5でリリースされるかもしれません。十分な時間をかけて検討していきたいと考えています。

このAPIというのはベストプラクティスとなっていくものです。「Component Helper」の仕様を一旦決めてしまうと後になって開発者が変えていくことは大変な労力が必要になるため、じっくり考える時間を設ける。「Component Helper」はAngular1.5に入れることを検討しています。

Q6. New RouterでControllerを指定するようになっていますが、Component Directiveのようなものを指定するようにはならないでしょうか?

我々がしようとしていることは、まさにそういったComponentを指定するということです。しかし、まだAngular 1系ではComponentを使うことはできない。いまはどうすれば、Angular 1とAngular 2とで整合性が保たれるか、Componentを導入できるかを検討しています。

Q7. Angular 2でEvent Emitterの仕組みは導入されますか?

Event Emitterの機能は、Angular 2ではありません。しかし、それに変わる別のやり方が提供されます。Angular 2では各パーツ間のコミュニケーションのやり方が変わっていきます。

その変わりに使えるものが2種類あります。

  • DOM Event
  • サードパティ・ライブラリ

この変更に対してどこにアドバンテージがあるのかというと、いろいろなケースを考えると今のAngularイベントを使っていった場合、さまざまなところでタイポが発生し、イベントの名前が間違ってしまうことがあります。するとイベント名が有効でなく一体何が起こったのが開発者がわからないという状況になりますので、問題を解決するために「Event Injection」を入れました。そうすることでダイレクトにイベントが伝わるようになります。

16674642047_3cb1b85970_z

最後に(編集後記)

ng-japanの様子を余すことなく書き下ろしましたが、いかがだったでしょうか?

Angular1.4の内容やNewRouterの機能、Angular 2に関すること、Angular 1からAngular 2へのマイグレーションなど盛りだくさんの内容だったと思います。Angularはあまり大規模なアプリケーションを作るのには不適という話もありますが、Angularチームが目指すところは規模に関わらず作りやすく、よりメンテナンスビリティの良いフレームワークを目指しているのではないかと思います。

AngularはGoogle社の閉じた世界観で作られているのではなく、Google社外のコミッターとの連携やReactチームとのコラボレーションもあり健全なオープンソースの道を歩んでいるのではないかと考えてます。しかも我々がAngularと関わりたいと思えばGitHubでissueを書くこともpull requestも送ることもできます。より関わることで、Angularが我々開発者にとって良いものになるのではと思います。

そのための一歩としてまずは、Angularを「触ってみる」ということも重要だと思います。「AngularJS Japan User Group」では各地で初心者向けハンズオンや、中上級者向けのハッカソン、ナイトセミナーも実施しておりますので、機会がありましたら足を運んでいただけたら幸いです。

最後に多くの方に来場いただき、感謝するとともに、多くのスポンサー様にご協力いただききました。この場をお借りし御礼申し上げます。

スクリーンショット 2015-04-02 13.44.25

セッション動画

当日のセッションはYouTubeで公開されています。是非ご覧ください!

Powered byNTT Communications

tag list

アクセシビリティ イベント エンタープライズ デザイン ハイブリッド パフォーマンス ブラウザ プログラミング マークアップ モバイル 海外 高速化 Angular2 AngularJS Chrome Cordova CSS de:code ECMAScript Edge Firefox Google Google I/O 2014 HTML5 Conference 2013 html5j IoT JavaScript Microsoft Node.js Polymer Progressive Web Apps React Safari SkyWay TypeScript UI UX W3C W3C仕様 Webアプリ Web Components WebGL WebRTC WebSocket WebVR