Angularにおける「漏れのある抽象化」の法則
Angularは複雑さを隠蔽します。Router、HttpClient、Signalsといったツールを提供してくれます。これらのツールにより、ブラウザの内部構造を気にすることなくアプリを構築できます。
しかし、抽象化には「漏れ」があります。これはソフトウェア工学における法則です。抽象化は複雑さを隠しますが、それを取り除くわけではありません。
AngularのHttpClientを見てみましょう。リクエストの送信を簡素化してくれます。しかし、CORSエラーやタイムアウトに直面したとき、突然、HTTPやネットワーク通信について理解しなければならなくなります。抽象化が漏れ出したのです。
RxJSを見てみましょう。これはデータストリームを管理します。オペレーターを使ってユーザーのアクションを処理します。もし、なぜswitchMapがmergeMapと異なる動作をするのかを説明できないのであれば、JavaScriptのイベントループを学習しなければなりません。RxJSはその知識に取って代わるものではないからです。
AIツールは、最新の抽象化レイヤーです。AIを使ってコンポーネントやテスト、機能を作成します。これにより開発スピードが上がります。
「漏れのある抽象化」の法則はAIにも当てはまります。AIが生成したコードが失敗したり、セキュリティリスクを生じさせたりしたとき、表面下で何が起きているのかを理解する必要があります。AIは、TypeScriptやソフトウェアアーキテクチャを知る必要性をなくすわけではありません。
実際、AIに頼るほど、基礎知識はより重要になります。AIが提供するコードの品質を評価できなければならないからです。
フレームワークは生産性を高め、AIはスピードを上げます。しかし、どちらもJavaScript、DOM、あるいはネットワーク技術を「不要なもの」にするわけではありません。それらは、何かが壊れるまで、こうした基礎を忘れさせてしまいやすいだけなのです。
シニアエンジニアが際立っているのは、抽象化の下に何があるかを知っているからです。ツールが機能しないとき、彼らは根本原因を突き止めます。
Source: https://dev.to/duskoperic/the-law-of-leaky-abstractions-in-the-angular-ecosystem-59da
Optional learning community: https://t.me/GyaanSetuAi