2025.05.18 覚書 / 2025.05.18 memo's
自分が参考になったブログの紹介します。 / Here are some blogs that I found helpful.
Angular
- NgRx SignalStore の新機能を紹介。
- Angular イベント管理の改善。
- Nx v21 のアップデート内容。
- エージェント的(agentic)Angular アプリのトレンドを解説。
- AI/LLM との統合を見据えた設計思想。
- Angular 開発者に役立つ AI ツールを10個紹介。
- コード補完、UIデザイン、デバッグ支援など多岐に渡る用途。
- takeUntilDestroyed (v16+): コンポーネントやサービスの破棄時にObservableを自動で完了させ、手動でのクリーンアップが不要に。
- inject() (v14+): コンストラクタ外でも依存性注入が可能になり、ユーティリティ関数やスタンドアロンコンポーネントでの利用が容易に。
- NgOptimizedImage (v15+): 画像の遅延読み込みや自動的なsrcset生成により、パフォーマンスとレイアウトの安定性を向上。
- provideHttpClient() (v15+): スタンドアロンアプリケーションでのHTTPサービス設定を簡素化し、インターセプターのサポートも提供。
- input/output with Signals (v17+): 従来の@Input/@Outputデコレーターの代替として、Signalベースのデータバインディングを導入。
- バージョンアップの追従困難: ウォーターフォール開発では、Angularやライブラリの頻繁な更新に対応しきれず、リリース時にサポート終了間近となるリスクがある。
- 経験者不在でのAngular採用: 日本国内でのAngularの情報が少なく、英語の資料に頼らざるを得ない状況に。
- AIエディタの導入遅延: Copilot Chatの導入により作業効率は向上したが、プロジェクト全体でのAIエディタの活用が進まず、手動テストが続けられた。
- Angular Materialの利点: サンプルが豊富で、デザイナー不在でも見栄えの良いUIを実現可能。
- 疎結合の重要性: コンポーネント間の依存関係を減らすことで、再利用性と保守性が向上。
- エラーの原因: クラスフィールドの初期化子がコンストラクタの依存性注入より先に評価されるため、未定義のプロパティにアクセスしようとしてエラーが発生。
- 解決策: Angularの
inject()関数を使用して、フィールドの初期化前に依存性を注入することで、初期化順序の問題を回避。 - バージョン依存性: Angular 17 / NgRx 15以降では、
inject()とフィールド定義の組み合わせが推奨され、初期化順序のバグを自然に防止できる。
Develop
NgRx
- NgRx Signal Store の導入背景と基本構造を解説。
- Signalベースのリアクティブステート管理が可能に。
Rust
- プロジェクト概要: Rustでカーネル、ユーザーランド、ビルドシステムを全て実装したUnixライクなOS「octox」の紹介。
特徴:
- ビルドと実行: Rustとqemuがあれば、Windows(mingw64またはWSL)、Linux、macOSで同一の手順でビルドとテストが可能。
RxJS
- RxJSの基本である Observables(観測可能な値)について解説。
subscribeの使い方や非同期処理との関係。
- RxJS オペレーターの役割と習得の意義。
map、filter、mergeMapなどを紹介。
combineLatest、withLatestFromなど、複数のストリームを結合する方法を解説。
- 完了しないストリームがメモリリークなどの問題を引き起こす可能性を解説。
takeUntilやunsubscribeの適切な使い方を紹介。