mcpField
A
ag-grid

ag-grid

github.com/joabgonzalez開発9124 回インストール19 週間前に更新
リポジトリ

ag-grid について

AG Grid で React のデータグリッドを構築するためのスキルです。型付き列定義、編集、フィルタリング、アクセシビリティ、性能面の実装パターンを扱います。単純な表や非表形式の可視化ではなく、機能的な表を作る開発者向けです。

主な機能

  1. 01ソート、フィルタリング、ページネーションを設定
  2. 02インライン編集とカスタムセルに対応
  3. 03TypeScript の列定義を使用
  4. 04仮想化で性能を向上
  5. 05キーボードとスクリーンリーダーに配慮

活用シーン

  1. 01編集可能なデータグリッドを構築
  2. 02表データにフィルタリングとページネーションを追加
  3. 03グループ化または集計グリッドを作成
  4. 04大規模テーブルの描画を改善

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/joabgonzalez/ai-agents-skills --skill ag-grid

インストール後、Claude Code で/ag-gridを入力して読み込まれたか確認します。

詳細

AG Grid

並べ替え、フィルタリング、ページネーション、インライン編集、Excel のような機能を備えた React データテーブルです。TypeScript の型付け、アクセシビリティ、仮想化に対応しています。

例では ag-grid-react を使用しています。列設定 API(ColDef、onGridReady)はフレームワークに依存しないため、セルレンダラーは各フレームワークのコンポーネント構文に合わせて調整してください。

使用する場面

  • 並べ替え/フィルタリング/ページネーションが必要なデータテーブル
  • インライン編集が可能な編集用グリッド
  • グループ化/集計を備えた複雑なグリッド
  • 仮想化による高いパフォーマンスが必要な場合
  • Excel のような機能が必要な場合

次の用途には使用しないでください。

  • シンプルなテーブル(HTML/MUI Table を使用してください)
  • 表形式ではないビジュアライゼーション(チャートを使用してください)
  • モバイルファーストの用途(よりシンプルなものを検討してください)

重要なパターン

✅ 必須:型安全性のために TypeScript インターフェースを使用する
// ✅ CORRECT: Typed column definitions
import { ColDef } from "ag-grid-community";

interface RowData {
  id: number;
  name: string;
}

const columnDefs: ColDef<RowData>[] = [{ field: "id" }, { field: "name" }];

// ❌ WRONG: Untyped columns
const columnDefs = [{ field: "id" }, { field: "name" }];
✅ 必須:共通設定には defaultColDef を使用する
// ✅ CORRECT: DRY column configuration
const defaultColDef: ColDef = {
  sortable: true,
  filter: true,
  resizable: true,
};

<AgGridReact defaultColDef={defaultColDef} />

// ❌ WRONG: Repeating config for each column
const columnDefs = [
  { field: 'id', sortable: true, filter: true, resizable: true },
  { field: 'name', sortable: true, filter: true, resizable: true },
];
✅ 必須:アクセシビリティ機能を有効にする
// ✅ CORRECT: Accessibility enabled
<AgGridReact
  enableAccessibility={true}
  suppressMenuHide={false}
/>

規約

AG Grid 固有
  • 列には TypeScript インターフェースを使用する
  • カスタムコンテンツにはセルレンダラーを使用する
  • アクセシビリティのベストプラクティスを適用する:キーボードナビゲーション、スクリーンリーダーのサポート、ARIA 属性
  • カスタム実装より組み込み機能を優先する
  • 読み込み/エラー状態に対応する

選択フロー

Custom cells?
  → Use cellRenderer/cellRendererFramework

Editable?
  → editable: true, handle onCellValueChanged

Filtering?
  → filter: true or specify type (agTextColumnFilter, agNumberColumnFilter)

Large dataset?
  → rowModelType: 'infinite' for server pagination

Grouping?
  → rowGroup: true on columns

Export?
  → exportDataAsCsv()/exportDataAsExcel()

Performance?
  → Virtualization (default), immutableData: true for React

例

import { ColDef } from 'ag-grid-community';
import { AgGridReact } from 'ag-grid-react';

interface RowData {
  id: number;
  name: string;
  value: number;
}

const columnDefs: ColDef<RowData>[] = [
  { field: 'id', headerName: 'ID' },
  { field: 'name', headerName: 'Name', sortable: true },
  { field: 'value', headerName: 'Value', filter: 'agNumberColumnFilter' }
];

<AgGridReact<RowData>
  rowData={data}
  columnDefs={columnDefs}
  defaultColDef={{ flex: 1, minWidth: 100 }}
/>

エッジケース

  • データが空の場合 → 適切なメッセージを表示する
  • データ取得中の読み込み状態
  • エラー発生時に備えたエラーバウンダリー
  • リサイズイベントを適切に処理する
  • キーボードナビゲーションをテストする

リソース

コメント