はじめに
この記事がQiita初投稿となります。
拙い文章となりますがもしよかったら見ていってください。
それと私はAngularを今回触りましたが、React/Vue.jsなど他のSPAについてはよく知らないため、Angularでいい悪いと思ったことが他のフレームワークでも当たり前のことだったら教えていただけると嬉しいです。
プロジェクト概要
- 大企業で10年以上使われていた基幹システムのリプレースプロジェクト
- 多いときで10人くらいの規模のプロジェクト
- Angularには当時一緒に開発していたベンダーの意向で決定
- 最初はアジャイル開発という話だったが、結局ウォーターフォールで開発がすすめられた
本題
まずは上手くいかなかったことから
上手くいかなかったこと
最近のフレームワーク等のバージョンアップのスピードに企業のフットワークが着いていけない
最近のフレームワークやライブラリのバージョンアップのスピードは昔と比べてかなり早く、ウォーターフォールの開発に1年以上かけていると危うくリリース時にはサポート終了間近ということがある。
今回もたった3年ほどでAngular Materialの大規模改修が2度入り、それなりに苦労をした
ウォーターフォール開発のためソースに変更がないタイミングを中々見つけることができず、PGが一通り完了したタイミングでバージョンをあげることになった。
経験者がいないのにAngularを選んでしまった
日本では圧倒的にAngularの人気がないことが以下のGoogleTrendsの内容からわかる
Google トレンドで「Angular, React, Vue.js - 日本、過去 12 か月間」の 人気度の動向 を見る
そのため情報収集をする際に日本語の記事が見つかりにくく、あまり得意でない英語の記事を読むことになった。
AIエディタの導入ができなかった
こちらも企業に求められるような問題だが、入っていればかなり変わったと思うので書いておく。
途中からCopilotChatが導入されたためAIとの対話自体はできるようになり、個人的にはかなり作業がスムーズとなった。
前述した英語の記事等も勝手に翻訳して教えてくれるため困ることが少なくなった。
しかし、プロジェクト全体を把握してヒントをくれるわけではないため、都度コピペ等を行うのが若干手間だった。
また、スキルの低いメンバはChatに投げるコードの範囲を誤っていたりして思いのほか効率が上がっていないように見えた。
個人的にはAIエディタ導入の大きな強みとしてテストコードの作成だと感じているが、プロジェクト当初の遅延からずっと手動テストが続けられてしまっているためデグレが幾度となく発生していた。
上手くいったこと
Angular Materialがある
個人的にはとても使いやすいと思った。
サンプルが充実していて困ったときには大体のことが解決できた。
見た目も比較的簡単に綺麗になるためデザイナーがいないにも関わらず地味な画面にはならなかった。
今回Figmaなども使えなかったためとても助かった。
蜜結合/疎結合について深く考えるキッカケになった
私自身はこれまであまり疎結合に作るということの具体的な手法の経験が足りなかった。
Angularではコンポーネントを分けて製造を行うことで資源の再利用などを積極的に行えるようにした。
その際、最初は子コンポーネントが親に依存するような形を含めて作ってしまった。
そのような作りだと使いまわす際の制限が生まれ、修正も行いにくくなるためやってはいけないケースだということを学んだ。
まとめ
Angularのフレームワーク自体はとてもいいものでもう一度同じプロジェクトを今の知識で始めたら圧倒的にいいものが作れるという自信がある。
せっかく得た知識を活用してまたAngularのプロジェクトに参画したいと思っている。
これからの時代、AIを開発やプロダクトにも上手く活用できるかがカギになると感じている。
ここまでお読みいただきありがとうございました。
誰かの参考や考えるキッカケになったら嬉しいです。