ngrx について
AngularアプリでNgRxの状態管理ライブラリを使うためのリファレンススキルです。Store、Effects、Entity、Signal Storeのパターンと、副作用や正規化の扱いを説明します。
主な機能
- 01Signal Storeによる状態管理
- 02Effectsによる副作用処理
- 03エンティティコレクションの管理
- 04型付きアクションとセレクター
- 05Reducerの純粋性と同期性の維持
活用シーン
- 01Angularアプリの状態構成
- 02HTTP呼び出しやナビゲーションの副作用処理
- 03エンティティのCRUD操作管理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ oguzhan18/ angular-ecosystem-skills --skill ngrxインストール後、Claude Code で/ngrxを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/discussions/_INDEX.mdreferences/docs/_INDEX.mdreferences/issues/_INDEX.mdreferences/releases/_INDEX.md詳細
@ngrx/store、@ngrx/effects、@ngrx/entity、@ngrx/signals
バージョン: 19.0.0(2025) タグ: 状態管理、Redux、リアクティブ、ストア、エフェクト
参考資料: ドキュメント — ガイド、API • GitHub • GitHub のイシュー
API の変更点
このセクションでは、最近のバージョン固有の API の変更について説明します。
-
新機能:NgRx Signal Store — Signals API を使用した最新の軽量な状態管理で、ボイラープレートを大幅に削減します 出典
-
新機能:関数型エフェクト — 関数型プログラミングのパターンを使用してエフェクトを作成する最新の方法です
-
新機能:
withEntities— Signal Store のエンティティ管理機能で、コレクションに対する CRUD 操作を簡素化します -
新機能:
@ngrx/data— HTTP との自動連携により、エンティティの CRUD 操作を簡素化します -
非推奨:従来の NgRx パターン — 新規プロジェクトでは Signal Store への移行を検討してください
ベストプラクティス
- 新規プロジェクトでは NgRx Signal Store を使用します — NgRx の構造と Signals のパフォーマンスを組み合わせています
import { signalStore, withState, withMethods, withHooks } from '@ngrx/signals';
export const AuthStore = signalStore(
withState({ user: null, isAuthenticated: false }),
withMethods((store, authService = inject(AuthService)) => ({
login(credentials: Credentials) {
authService.login(credentials).pipe(
tap(user => store.user.set(user))
).subscribe();
}
})),
withHooks({
onInit() {
// Initialize store
}
})
);
- コレクションには Entity Adapter を使用します — エンティティコレクションに対する CRUD 操作を簡素化します
import { createEntityAdapter, EntityState } from '@ngrx/entity';
export interface Product extends EntityState<Product> {
// Additional state properties
}
export const adapter = createEntityAdapter<Product>({
selectId: (product) => product.id
});
-
リデューサーは純粋かつ同期的に保ちます — リデューサー内で非同期処理を実行しないでください
-
副作用には Effects を使用します — HTTP 呼び出し、ナビゲーション、その他の非同期処理をエフェクトで処理します
-
アクションには強い型付けを使用します — 型安全性を高めるためにアクショングループを作成します
-
複雑なデータでは状態を正規化します — エンティティを ID をキーとする辞書に格納します
-
メモ化されたセレクターを使用します — 不要な再計算を防ぎます
-
ChangeDetectionStrategy.OnPushを使用します — リアクティブな状態と相性がよいです