Angular ダイナミック条件ビルダー

Library

概要

Angular 用の「条件ビルダー(rule/condition builder)」コンポーネントです。設定ベースで複雑なネストされたルール(AND/OR グループや個別条件)を構築でき、カスタムフィールドや演算子をプラグイン的に追加できます。モダンな Angular 機能(Standalone Components、Signals、OnPush)を用いて実装されており、パフォーマンスとデベロッパー体験を両立。高度な検索フィルタ、クーポン・割引条件、アラートトリガーなど、ダイナミックな条件定義が必要なケースに適しています。npm 配布を想定した設計で、Angular 20 以上をターゲットにしています。

GitHub

リポジトリの統計情報

  • スター数: 6
  • フォーク数: 0
  • ウォッチャー数: 6
  • コミット数: 2
  • ファイル数: 9
  • メインの言語: TypeScript

主な特徴

  • ネスト可能な AND / OR グループをサポートし、複雑な論理ツリーを構築可能
  • カスタムフィールドと動的に切り替えられるオペレーターを設定ベースで追加可能
  • Standalone Components、Signals、OnPush を活用したモダンな実装
  • npm での公開を見据えた再利用可能なコンポーネント設計

技術的なポイント

このライブラリは最新の Angular パターンに準拠して設計されています。Standalone Components を採用することでモジュール依存を減らし、ホストアプリへの統合を容易にしています。Signals を利用することで状態管理が軽量になり、リアクティブな UI 更新を効率的に行えます。また OnPush Change Detection を基本にすることで、不要な再描画を抑えつつ高いパフォーマンスを確保します。

アーキテクチャは「設定駆動(configuration-driven)」で、フィールド定義、利用可能なオペレーター、デフォルト値やバリデーションルールを外部から渡してコンポーネントを構成します。これにより、アプリ側のドメインに合わせたフィールドタイプ(文字列、数値、日付、列挙型など)やカスタム演算子の導入が容易です。条件はオブジェクトツリーで表現され、AND/OR グループや単一条件ノードを組み合わせてシリアライズ/デシリアライズできるため、サーバーサイドのクエリ生成や保存・復元がスムーズです。

UI 側は汎用的なレンダリングロジックを持ち、各フィールドタイプに対応する入力コンポーネントを差し替えることで見た目や動作をカスタマイズできます。加えて、アクセシビリティやキーボード操作の拡張も容易な設計になっており、エンタープライズ用途の要件にも対応可能です。テスト面では Unit テストを想定した分離性が確保されており、ビルドは Angular の標準ツールチェインと互換性があります。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: Git 除外設定ファイル
  • README.md: プロジェクトの説明と使用方法
  • angular.json: Angular CLI のワークスペース設定
  • index.html: サンプル/デモ用の HTML エントリ
  • index.tsx: エントリポイント(デモ起動やバンドル用)
  • package.json: 依存関係とスクリプト(npm publish 想定)
  • src/: ソースコード(コンポーネント、モデル、ユーティリティ)
  • tsconfig.json: TypeScript コンパイラ設定
  • その他4ファイル: ビルド/設定や小さなヘルパーが含まれます

各ファイルの役割:

  • src/components/: 条件ビルダー本体の UI コンポーネント群(Standalone)
  • src/models/: ルール・フィールド・オペレーターの型定義
  • src/utils/: シリアライズやツリー操作のヘルパー関数
  • index.tsx などのエントリは、ライブラリとしてのエクスポートやデモ表示に使用されます。

まとめ

Angular 20+ 環境での複雑な条件作成を短時間で導入できる実用的なコンポーネント群です。

リポジトリ情報:

READMEの抜粋:

Angular Dynamic Rule Builder

A flexible, configuration-driven component for building complex, nested query rules in Angular applications. Ideal for creating advanced search filters, coupon conditions, alert triggers, and more.

This component is built using modern Angular features, including Standalone Components, Signals, and OnPush change detection for optimal performance and a great developer experience.

Component Screenshot