Angularを2年ほど使ってみた感想
ここのところ、仕事で約2年ほどAngularを使ってSPAの開発をしています。
バージョンとしては1, 2, 4, 6と割と幅広く使っています。
今回はそんな私がAngularを2年使ってみて感じた良かった点・悪かった点を書いていこうと思います。
(ただし、AngularJS (バージョン1) は対象外)
良かった点
公式ドキュメントが充実
最近はドキュメントが充実しているプロダクトが増えてきている印象ですが、AngularもさすがGoogle社のエンジニアが開発しているだけあってわかりやすいドキュメントを用意してくれています。
ただし英語がベースなので多少の英語力は必須です。
( 最近はコントリビューターによる日本語翻訳もかなり進んできています! )
デザインとロジックが明確に分離できる
AngularのComponentはビュー(HTML, CSS)とロジック(TypeScript)のファイルを分けて開発するので、デザインに力を入れる時・ロジックに力を入れる時の頭の切り替えが楽にできます。
担当の分担も比較的容易にできると思います。
他に大きなライブラリを組み合わせる必要がない
Angularはフルスタックであることを売りにしていることもあり、Angularさえあれば他のライブラリはほとんど必要ありません。
私もいくつかAngularの開発をしてきましたが、UIライブラリを除いてはAngularのQuickStartで使うライブラリ以外にほとんど追加せずに済んでいます。
Angular CLIが優秀
Angularを開発する上で必須となるのが、Angular CLIです。
- Angularプロジェクトの作成
- 各種ファイル (Component, Directive等) の自動生成
- Webpackを含んでいることにより、開発サーバの設定やビルドが楽
等の特徴があり、プロジェクト作成から開発、ステージング・本番環境へのビルド、デプロイまで一連の流れをコマンド1つでできます。
また、CLIなので、CI (JenkinsやCircle CI等) への組み込みも容易なのは良いですね。
個人的に一番嬉しかったのはWebpackを含んでくれていることです。
Angular CLIを使用せずに開発をしていた頃は、Webpackを自分で組み合わせていたのですが、
依存関係や設定の問題やらで相当苦しめられたので、その苦しみから開放されたのは非常に大きいです。
楽しい!
単純に楽しいです(笑) それだけでモチベーションが違いますね!
特にこれまでjQuery等でガリガリ開発してきた方からすると、開発手法や考え方が大きく変わるので良い刺激になります。
悪かった点
悪かったというより苦労した点になります。
バージョンアップについていくのが大変
Angularは6.0.0のようにmajor.minor.patchというバージョニングが行われていて下記のようなスケジュールでの運用が行われています。
- major → 半年に1回バージョンアップ
- minor → majorのバージョンアップまでに2、3回のバージョンアップ
- patch → 毎週バージョンアップ
Angularに限らず昨今のフロントエンドの開発スピードは尋常ではないので、どこでバージョンFixするかというのも開発において重要になってきます。
またmarjorが半年に1回のため、新しくアプリの開発をする度にmajorバージョンのアップを検討する必要が出て来ますし、新機能を理解していくのも時間がかかります。
Webで情報収集する際にも、度々起こる破壊的変更によって、せっかくの良記事が参考にならないということもよくあります。
日本語の情報が少ない
今は検索しても日本語の情報がよく見られるようになりましたが、私がAngularを開発し始めた当初はほぼ英語の情報しかありませんでした。
おかげで英語を読むことへの抵抗が少なくなったので、それは良かったとは思っています。
開発者の教育が必要 (教育コスト)
例えばJavaの開発であれば、Javaができるエンジニアは星の数ほどいるので、1から教育することはあまりありませんが、 Angularはとにかく経験者が少ないので、手に馴染んでもらうまでそこそこ時間を要します。
QuickStart〜Tutorial (Tour Of Heros) を一通りやってもらったり、Webpackなどの説明をしたり、、
Anguar自体は難解なフレームワークではないのが救いです。
これからもっとAngularが広がっていくことを願うばかりです。
最後に
以上、私が約2年Angularの開発をしてきた上で感じた感想を記載しました。
苦労することもありますが、開発していて楽しいと思えるフレームワークですので、SPAを検討する場合は是非Angularを試してもらえたらなと思います。
※ReactやVue.jsと比較しているわけではありません。この記事ではAngularにのみフォーカスしています。