2017年6月19日月曜日

ng-japan 2017を開催しました


6月17日に ng-japan 2017を開催しました。17人のスピーカーと5社のスポンサー、そして200人以上の参加者のみなさんのおかげで、今年も素晴らしいイベントにすることができました。本当にありがとうございました。

コンセプト


今年のng-japanは「Webのお祭り」というコンセプトで準備を進めました。AngularだけではなくAngularを取り巻く周辺技術についてのセッションを多く採用して、Angular Wayではなく、Webの一員としてのAngularという視点を重視しましたが、いかがだったでしょうか?

また、今年は第3回目のng-japanで、2年ぶりにAngularコアチームのメンバーを招いての開催になりました。さらに海外からもスピーカーを迎えたことで、いままでよりも国際色を強めたng-japanになりました。
海外のスピーカーを5人も迎えることになり、通訳を用意するかどうかの議論はもちろん行いましたが、最終的に英語のセッションはそのまま英語で聞いてもらうことに決めました。参加者の中には英語が聞き取れずに苦労した方もいたかもしれませんが、限られた時間を通訳に割くよりも、充実したセッションの提供を優先したことをご理解ください。


Youtubeアーカイブ


ng-japanの各トラックの様子はYoutubeチャンネルでアーカイブ動画が公開されています。


講演スライド


公開されているスライドは以下のリンクからアクセスできます



ng-japan 2018+


ng-japanは年に1回のペースで開催しており、もちろん2018年にも4回目のng-japanを計画中です。今年は300人の参加募集に対して500人以上の応募がありました。多くの方が定員を超えて参加できなかったことについては、今後改善していくつもりです。今後のng-japanをよりよいイベントにしていくために、みなさんからのフィードバックをお待ちしています。


それではまた来年、ng-japanでお会いしましょう!

2017年6月13日火曜日

Angular 4.2がリリースされました

この記事はAngular公式ブログ Angular 4.2 Now Availableを元に翻訳、加筆したものです。

Angular バージョン 4.2 がリリースされました。 このマイナーリリースは告知済みのSemantic Versioningにしたがっています。すなわち破壊的変更を含まず、バージョン4.x.xとして単純に置換可能です。

主な変更点

  • Angular Formsは新たにmin/max属性に対するバリデータを含むようになりました
  • ApplicationRef のboostrapメソッドに任意の要素への参照を渡すことで、コンポーネントを起動できるようになりました
  • MissingTranslationStrategyやxliff2ファイル中のロケーションノートを含む、i18nツールの改善
  • 将来的にAoTコンパイルしたコンポーネントをテストできるようにするための基盤を導入しました
  • オプトインのフラグとして alwaysCompileGeneratedCode が使用可能になりました。これは将来的にデフォルトで有効になる予定です

新機能やバグフィックスの一覧は チェンジログ を参照してください。


Angular Animations

アニメーションを簡単に、そしてさらに強力にする多くの新機能が追加されました。いくつかは ng-conf 2017 において発表されたものです。
  • アニメーション内部に変数を用意し、オプションで設定する
  • animation()を使って再利用可能なアニメーションを定義する
  • query()を使ってアニメーション内で子要素をクエリする
  • stagger()を使ってアニメーション内で複数の要素を動かす
  • クエリされた要素が自身のアニメーションを開始できるようにする
  • ルートの変更時に完全なアニメーションを行う
  • AnimationBuilder を使ってプログラマティックにアニメーションを組み立ててコントロールする

詳細は the thinking behind these features を参考にしてください

新しくなったangular.io

本日、新しい angular.io ウェブサイトをリリースしました! ウェブサイトのインフラ、アーキテクチャ、そしてデザインをAngularを使って再構築しました。サイトのコンテンツは以前と変わりませんが、コードとコンテンツは angular/angularリポジトリのaioディレクトリ に存在しています。

このウェブサイトは2つの目的のための第一歩です。ひとつめは、将来にわたってドキュメンテーションへのコントリビューションを受け入れやすくしたいというものです。現在は多くのドキュメンテーションのリファクタリング作業中であり、その後にはみなさんのフィードバックや改善をお待ちしています。今後、すべてのページに "improve this doc" へのリンクを追加して、直接GitHubで変更を提案できるようにする予定です。

ふたつめは、このウェブサイトを将来にわたってAngularアプリケーションの構築におけるベストプラクティスの例として提供することです。現時点のウェブサイトはプログレッシブウェブアプリケーションであり、Service Workerによるロード性能の改善をおこなっています。

2017年4月27日木曜日

Angular 4.1.0がリリースされました

この記事はAngular公式ブログ Angular 4.1.0 Now Availableを元に翻訳、加筆したものです。

Angular バージョン 4.1.0 がリリースされました。 このマイナーリリースは告知済みのSemantic Versioningにしたがっています。すなわち破壊的変更を含まず、バージョン4.x.xとして単純に置換可能です。

主な変更点
  • バージョン 4.1 ではTypeScript 2.2および2.3を完全にサポートしました。開発者たちはすでにTypeScript 2.2あるいは2.3を使った体験を報告してくれていますが、今回Angular自身がTypeScript 2.3によってビルドされるようになりました。この変更は4.0リリース時点のTypeScript 2.1に対するサポートには影響しません。
  • TypeScriptの StrictNullChecks に準拠しました。開発者はそれぞれのプロジェクトでStrictNullChecksのフラグを有効にできるようになりました。

新機能やバグフィックスの一覧は チェンジログ を参照してください。

2017年4月11日火曜日

Googleにおける標準言語


この記事はAngular公式ブログ Official languages at Googleを元に翻訳、加筆したものです。


TypeScriptがGoogleの標準言語になったことを発表したng-conf 2017での私の基調講演をうけて、GoogleにおけるDartの状況について多くの質問が寄せられました。


DartとTypeScriptの両方は同じカテゴリにいることを明確にしておきたいと思います。これらはどちらもクライアントサイドの開発に使うことを許可されています。しかし、JavaScript/ClosureやJavaのような確立した言語とは同じカテゴリにありません。これらはさらにコードの行数が多く、ツールも整備されています。

Dartはこの4年間Googleにおいて無制限にクライアント開発に使われています。DartとAngularDartはAdWordsやAdSense、Shoppingのような大規模な製品、そしてGoogle CRMのような重要な内部ツールに使われます。さらに、クロスプラットフォームのモバイルアプリケーションフレームワーク Flutter はDartを使用しており、Google CRMやShopping  Expressを含む複数のチームで使われています。Googleのコードベースには膨大な量のDartのコードが含まれています。

TypeScriptは2017年3月からクライアント開発のための無制限の使用が認められました。TypeScriptとAngularはGoogle AnalyticsやFirebase、Google Cloud Platform(訳注: 各サービスの管理コンソールの実装に使われる)、そしてバグトラッキングや従業員管理、製品承認、起動ツールなどの重要な内部ツールに使われます。

Googleがクライアントサイドの言語の選択肢を得て、ニーズに応じた最適なものを選べるようになったことを発表できて光栄です。

2017年4月1日土曜日

Angular 4.0.0がリリースされました

この記事はAngular公式ブログ Angular: Angular 4.0.0 Now Available を元に翻訳、加筆したものです。

Angularバージョン4.0.0 - invisible-makeover - が公開されました。これはわたしたちが発表したSemantic Versioningの採用に従ったメジャーリリースであり、ほとんどのアプリケーションにとって2.x.xとの後方互換性を保っています。


わたしたちはこの3ヶ月間の成果であるいくつかの大きな改善と機能を含んだこのリリースを、コミュニティに共有できることをとても嬉しく思います。わたしたちはこのリリースへのアップデートが開発者にとって簡単になるように一生懸命取り組みました。



変更点


より軽量に、より高速に


このリリースで、わたしたちはAngularアプリケーションをより小さく高速にすることを約束します。これはまだ完了したわけではなく、今後数ヶ月はわたしたちがさらなる改善に注力していることが見られるでしょう。

ビューエンジン


わたしたちはAOTコンパイルにより生成されるコードがどのようになるか、そのフードの内側に変更を加えました。この変更により、多くの場合でコンポーネントから生成されるコードのサイズは約60%に削減されます。複雑なテンプレートであればあるほど、より大きく削減されます。

RCバージョンの期間で、わたしたちは多くの開発者から、バージョン4に切り替えた後に彼らのプロダクションバンドルが数百KB減ったことを聞きました。

ビューエンジンについてさらに知りたい方はこちらのデザインドキュメントをご覧ください。


Animation Package


わたしたちはアニメーション機能を@angular/coreパッケージから個別のパッケージに抜き出しました。アニメーションを使わない場合、余計なコードはプロダクションバンドルに含まれません。

この変更はドキュメンテーションの検索を簡単にし、さらに入力の自動補完の助けにもなります。アニメーション機能を使うにはメインのNgModuleに、@angular/platform-browser/animationsからインポートしたBrowserAnimationsModuleを追加します。

新機能


*ngIfと*ngForの改善

テンプレートバインディング構文は新たにふたつの便利な機能をサポートします。if/else形式の構文と、observableを展開するときなどのローカル変数の宣言が可能になります。

<div *ngIf="userList | async as users; else loading">
 <user-profile *ngFor="let user of users; count as count" [user]="user">
 </user-profile>
<div>{{count}} total users</div>
</div>
<ng-template #loading>Loading...</ng-template>


Angular Universal

Angularをサーバー上で実行可能にするためのプロジェクト、Angular Universalがふたたび最新のAngularと足並みをそろえ、コミュニティによるプロジェクトからAngularチームに引き取られてからの初めてのリリースとなりました。このリリースはUniversalチームが数ヶ月かけて内部的、表面的に取り組んだ成果です。Universalのコードの大部分は今@angular/platform-serverパッケージに取り込まれています。

Angular Universalを利用する方法についてさらに知るには、renderModuleFactoryメソッドを読むか、あるいはRob Wormaldによるデモリポジトリを見てください。詳細なドキュメンテーションやコードサンプルは今後追加されます。

TypeScript 2.1と 2.2 への対応

わたしたちはAngularをTypeScriptの新しいバージョンに合わせるために更新しました。ngcのスピードが改善され、さらにアプリケーション全体を通した型チェックも改善されました。

テンプレートのソースマップ

テンプレートの中でエラーが起こったとき、わたしたちは元々のテンプレートの文脈を提供するためのソースマップを生成するようにしました。

パッケージの変更


Flat ES Modules (Flat ESM / FESM)

わたしたちはモジュールのフラットバージョン(ECMA Scriptモジュール形式のコードを"ロールアップ"したバージョン。サンプルファイルを参照してください)を提供するようにしました。この形式はTree-Shakingを助け、生成されるバンドルのサイズを削減し、そしてビルドとトランスパイル、ブラウザでのロード時間を短縮できます。

Flat ES Modulesの重要性については "The cost of small modules" をご覧ください。

実験的なES2015ビルド

わたしたちはES2015 Flat ESM形式のパッケージも提供するようにしました。この選択肢は実験的で、オプトインです。このパッケージをRollupを使って結合すると、バンドルサイズを最大7%削減できたと報告されています。この新しいパッケージを試すには、package.jsonの "module" プロパティの代わりに "es2015" プロパティを使うように、ビルドツールチェインを設定してください。

実験的なClosure互換性

わたしたちはすべてのコードにClosureアノテーションを付与しました。これはClosure CompilerによるAdvansed Optimizationを有効にし、より効果的なTree-Shakingとバンドルサイズの軽減をもたらします。

4.0.0へのアップデート


バージョン4へのアップデートはただAngularの依存関係を最新に更新する程度の簡単さで、もしアニメーションを使う場合はダブルチェックが必要です。ほとんどのユースケースではこれで動作します。

Linux/Mac:

npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest typescript@latest --save

Windows:

npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest typescript@latest --save

通常どおりng serveあるいはnpm startコマンドを実行すると、すべてが動作するはずです。

もしアニメーション機能に依存しているなら、新たにBrowserAnimationsModuleを@angular/platform-browser/animationsからルートモジュールにインポートしてください。これを行わない場合、コードのコンパイルを実行は行われますが、アニメーションがエラーを起こします。また、@angular/coreからのインポートは非推奨となったので、新しいパッケージからのimport { trigger, state, style, transition, animate } from '@angular/animations';を使ってください。

わたしたちはアプリケーションに必要な変更についてもっと知りたいときに使えるインタラクティブなAngularアップデートガイドを作成しています。

既知の問題


バージョン4における目標のひとつは、より限定的な型のサブセットを強制できるTypeScriptのstrictNullChecksAngularを対応させることでした。わたしたちはこれをすべてのユースケースで正しく動作させるためには多くの課題が残っていることにRC期間で気づきました。4.1にて正しいサポートが入ったときに熱心に対応していたアプリケーションを壊すことを避けるため、あえて4.0をstrictNullCheckに対応させないことにしました。(トラッキングイシュー #15432)

今後の計画


わたちたちは2.xのために発表したリリーススケジュールと同じ調子に従って、次の6ヶ月のロードマップを設定する作業中です。4.0.0へのパッチアップデートと、さらに4.1もすでに始まっています。わたちたちはAngularを小さく高速にし続ける予定であり、さらに@angular/httpや@angular/service-worker、@angular/language-serviceを実験的でなくすために進化させるつもりです。

ぜひドキュメンテーションの更新やCLIの安定版リリース、そしてライブラリ作者に向けたパッケージングのガイダンスをお待ち下さい。