読者です 読者をやめる 読者になる 読者になる

PenguinがWorkWorkする blog

ネット上で気になることや、android等について書くブログ

AngularConnect 2016 Feedbackに参加してきた(Angular 2.0まとめ)

AngularConnect 2016 Feedbackに参加してきた(Angular 2.0まとめ)AngularConnect 2016 Feedbackに参加してきた(Angular 2.0まとめ)

Angular2.0リリース時に開かれたAngularConnect 2016 Feedbackに参加された人たちのフィードバック会に参加してきました。

パネルセッションのまとめ的な感じでしたが、実際に見て聞いて触れてな感じでと理解が進む内容でした。

フィードバック会を踏まえた上で独自の視点で感想を書こうと思います。以下の点で見ていきたいと思います。

  • 保守性について
  • 生産性について
  • パフォーマンスについて

保守性について

  • メジャーバージョンアップは6ヶ月おき
  • APIの廃止は2回のメジャーバージョンアップ
  • アップデート毎にアップグレードガイドが公開

メジャーアップデートに関してのルール(保守性)があるので、計画がを立ててリファクタリングするというのは、個人的にかなり嬉しいところです。 APIの廃止は2回のメジャーバージョンアップについては、破壊的変更があっても、6ヶ月間の猶予があるというのも嬉しいところですね。

懇親会で@laco0416氏にアップグレードガイドについて質問してみたところ、そのあたりも公式よりサポートされるみたいです。

生産性について

  • Scaffoldにangular-cliがある
  • TypeScript採用により、静的解析が行える

angular-cliについては、anuglar公式で出しているスタイルガイドに基づきファイルを生成してくれるので、知見がない状態である程度のベストプラクティスを得られるのは大きいと感じました。 $ ng new my-new-projectというたったこれだけで、プロジェクトがnodeサーバ込みで開始できたり、新たなcomponent作成に$ng g c path/to/header等で、作成できるのはかなりお手軽です。

型付きについては相変わらず動的脳な人なので、改めてstaticおじさんに聞いたメリットとして 1. 型解決で安全にコーディングできる 2. 静的解析ができるのでツール、IDE等で事前にエラーを検知できる

どちらかというと2.のメリットの意味が強く実行するまでわからない言語に比べてコーディングについては * トライ・アンド・エラーの回数が少ない = 開発効率があがる ということでしょうか。

あとこれだから動的言語ばっかやってる人は┐(´д`)┌ヤレヤレと罵られましたが(^q^)

パフォーマンスについて

  • AoTにより事前コンパイルが可能
  • LazyLoading PreLoadingが扱える

対規模なプロジェクトになるとファイルサイズが膨大になり最初の起動時間が増えがちですが、このあたりはAoTだったりLazyLoadingを組み合わせることで起動時間を短くすることが可能になります。 PreLodingについてはBundleされるjsの分割単位のお話ではあるので、プロジェクトの設計次第かなと思います。

その他(個人的に気になった部分)

  • SEO対策に対して有効な手段がちゃんと用意されている。

Angularのメリット

  • 他のフレームワークに比べて単一のパッケージングで始められる。
  • 生産性が高い
  • TypeScriptの使用に則っているため、静的言語かつC#ライクに癖の強い方言的な事が無い。
  • パフォーマンス面において強い。
  • SEO対策に対して有効な手段がちゃんと用意されている。

Angularのデメリット

  • 公式のドキュメントが脆弱
  • 学習コストが他のフレームワークに比べやや高い

Reactとの比較がありますが、個人的にはAngularはフルスタックフレームワークと歌っているとおりサードパーティ(一部除く)との組み合わせをほとんど必要とせず、Reactの場合はReduxだとかBabelを使うとか、色々なライブラリを組み合わせを覚えることが多いです。

AngularはシンプルにTypeScriptとAngularのみ覚えればとりあえず使えるのはいいですよね。 ただReactiveプログラミングの初挑戦では覚える概念も多い、TypeScriptを覚える等を考えるとそこそこ学習コストは高いと思います。

最後に

他にはRxJSのお話とかありましたが、C#などや他で言語でも触れられている内容だったので、このあたりは割愛します。(Observerパターン)

あと、作るプロダクトによって向き不向きがあると思います。 やたらと動的に画面が増えるとか、Input要素にごちゃごちゃしたデータの変化を与えるとかあまり複雑なことはそれなりのコストを払うのかなと思います。 このあたりはSPAを作るということはどういうことかっていうことで、設計段階に整合性を見いだせるといいですね。

以上