2025.12.04 覚書 / 2025.12.04 memo's
自分が参考になったブログの紹介します。 / Here are some blogs that I found helpful.
Angular
- Angular の新しいリアクティブ API「Signal inputs / queries」に移行する方法についての手順ガイド。従来の
@Input(),@Output(),@ViewChild/@ContentChildといったデコレーターを、テンプレートを書き換えずにinput()やviewChild()などシグナル版に置き換える方法を紹介している。 - 具体的には、CLI スキーマティック(コマンド例:
ng generate @angular/core:signal-input-migrationやsignal-queries-migration)を使うことで、自動で安全な入力/クエリをシグナルに変換。移行できない「危険な可変値」などには TODO コメントを挿入するオプションも。 - こうすることで、テンプレート(HTML)を触らずにリアクティブな状態管理に移行でき、既存コードの大幅な破壊なくモダン化できる。
- また、移行後は
computed()やeffect()などと組み合わせて、データ変更に応じた反応(副作用や派生値計算)を簡潔に書けるようになるため、パフォーマンス向上やコードの可読性/保守性向上につながる。 - 移行のベストプラクティスとして「小さなコンポーネントから徐々に移行」「Observable → Signal の橋渡しには
toSignal()を使う」「immutable に保つ」などの注意点が述べられている。
- Angular 21 の新機能のひとつ、
compatFormが紹介されている。compatFormを使えば、従来の Reactive Forms (FormControl/FormGroup) と、新しい Signal Forms API を互換的に混在・同期させられる。 - つまり、膨大な既存フォームを持つ企業向けの大規模コードベースでも、すべてを書き換えることなく段階的に Signal ベースのフォームへ移行できる — リファクタリングのリスクやコストを大幅に下げられる点が強調されている。
- 「Reactive Forms を使っている既存コードがあるなら、今すぐ compatForm を使う価値がある」と推奨しており、開発時間削減・安定した移行を実現した経験を紹介している。
RxJS
- TypeScript チームは、コンパイラおよび言語サービスを「JavaScript/TypeScript で書かれた旧来の実装」から、「ネイティブコードによる新実装」(コードネーム Project Corsa)へ移行中で、これが次期メジャーとなる TypeScript 7.0 。現在、その “native preview” として既に使える状態にまで到達している。
- エディタ(例: Visual Studio Code)向けの言語サービス機能(コード補完、自動インポート、定義へジャンプ、リネーム、シンボル参照検索など)は「通常通り使える」レベルにほぼ完全移植済み。つまり、開発中のコード補助ツールとしては実用可能。
- コンパイラ部分も大きく進展。パッケージ
@typescript/native-previewを使えば、従来のtscと並行して新しいtsgoコマンドで型チェック・ビルドが可能。多くのプロジェクトで問題なく動作しており、型チェックとして十分信頼できる段階。 - パフォーマンス改善が目覚ましく、単純な型チェックやビルド時間は大幅な高速化。たとえば既存コンパイラと比べ、複数の大きなコードベースで 7〜10 倍のスピードアップが報告されている。
- ただし注意点もあり:JavaScript の JSDoc ベース型チェックや古いターゲット(例: ES5)向けの出力、デコレーターの変換など一部機能はまだ未対応もしくは制限あり。利用時はターゲットやビルド設定を見直す必要あり。