mcpField
U
ui5-best-practices-tables

ui5-best-practices-tables

github.com/ui5開発44209 回インストール1 週間前に更新
リポジトリ

ui5-best-practices-tables について

SAPUI5 のフリースタイルアプリで、テーブルの生成、レビュー、トラブルシューティングを支援するガイドスキルです。SAPUI5 1.136+ を対象に、テーブル選定や実装、アクセシビリティ、性能のルールを示します。

主な機能

  1. 01テーブルタイプの選定ガイド
  2. 02バインディングとセルテンプレートのルール
  3. 03パーソナライズとドラッグ&ドロップの参照
  4. 04アクセシビリティと性能の確認
  5. 05テーブル関連エラーの調査

活用シーン

  1. 01データ量や端末に応じたテーブル選定
  2. 02実装前の SAPUI5 テーブルコードレビュー
  3. 03バインディング、スクロール、エクスポートの問題調査

インストール

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

$npx skills add https://github.com/ui5/plugins-coding-agents --skill ui5-best-practices-tables

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
cell-templates.md
drag-and-drop.md
grid-table.md
mdc-table.md
personalization.md
sap-m-table.md
smart-table.md
tree-table.md

詳細

UI5 テーブルのベストプラクティス

フリースタイルアプリケーションで UI5 のテーブルコードを生成、レビュー、またはトラブルシューティングする際は、常にこれらのガイドラインを適用してください。

UI5 のバージョン基準: SAPUI5 1.136+ LTS。特に記載がない限り、ここで説明するすべての機能はこのバージョンから利用できます。

各リファレンスを読み込むタイミング

条件読み込むリファレンス
sap.m.Table(ResponsiveTable)を使用または計画しているreferences/sap-m-table.md
sap.ui.table.Table(GridTable)を使用または計画しているreferences/grid-table.md
sap.ui.table.TreeTable を使用または計画しているreferences/tree-table.md
sap.ui.comp.smarttable.SmartTable を使用または計画しているreferences/smart-table.md
sap.ui.mdc.Table を使用または計画しているreferences/mdc-table.md
テーブルにドラッグ&ドロップを追加するreferences/drag-and-drop.md
列のパーソナライズを追加するreferences/personalization.md
セルテンプレート、配置、またはデータ型のバインディングを選択するreferences/cell-templates.md

出力を作成する前に読み込んでください。記憶だけに頼って作業しないでください。


基本ルール

必須事項
  • コードを記述する前に、選択マトリックスを使ってテーブルの種類を選択してください。
  • sap.ui.table.* では rows 集約を、sap.m.Table では items を使用してください。決して取り違えないでください。
  • パーソナライズには sap.m.p13n.Engine を使用してください。独自のパーソナライズダイアログは作成しないでください。
  • すべてのテーブルに ariaLabelledBy を設定し、テーブルのタイトルコントロールを参照してください。
  • データ型に応じてセルの内容を配置してください。数値と日付は右寄せ(hAlign="End")、テキストとリンクは左寄せにします。
  • 適切なセルテンプレートを使用してください。表示には sap.m.Text、数値には sap.m.ObjectNumber、ナビゲーションには sap.m.Link を使用します。
  • 合計件数が必要な場合は、sap.ui.table.* のバックエンドに $count=true を要求してください。
  • sap.ui.table.* では、非推奨の visibleRowCountMode プロパティではなく、rowMode 集約を使用してください(UI5 1.119+)。
禁止事項
  • グローバル変数を使用しないでください。sap.ui.define AMD モジュールまたは ES6 インポートを使用してください。
  • sap.ui.table.* のセルでテキストの折り返しを有効にしないでください。仮想化が機能しなくなります。
  • sap.ui.export.Spreadsheet が利用可能だと決めつけないでください。使用前にライブラリの有無を確認してください。
  • モバイルファーストのシナリオで sap.ui.table.Table を使用しないでください。sap.m.Table を使用してください。
  • 仮想化が必要な 1000 行以上のデータセットに sap.m.Table を使用しないでください。
  • sap.ui.table.Table のセルに、複数のインタラクティブ要素を配置しないでください。
  • フォーマッターから列挙型オブジェクトを返さないでください。文字列リテラルまたはプリミティブ値を返してください。
  • ColumnListItem の highlight にフォーマッターを使用しないでください。直接データバインディングしてください。
  • モデルの利用可能性を確認せずにアクセスしないでください。「Cannot read properties of undefined」エラーの原因になります。
  • 型の名前空間を混在させないでください。JSON モデルで sap.ui.model.odata.type.* を、OData で sap.ui.model.type.* を決して使用しないでください。
OData V4 の方針

OData V4 では、フリースタイルのテーブルより SAP Fiori elements のビルディングブロックを優先してください。Fiori elements の対象外の場合に限り、sap.ui.mdc.Table を使用してください。


選択マトリクス

テーブルの種類使用する場合使用しない場合
sap.m.Tableモバイル/レスポンシブ、ポップイン動作、JSON モデル、100 行未満1000 行以上、仮想化が必要、デスクトップ専用、セル選択が必要
sap.ui.table.Tableデスクトップ、1000 行以上、仮想化、固定列、高密度データモバイルファースト、ポップインが必要、テキストの折り返し、小規模なデータセット
sap.ui.table.TreeTable階層データ、展開/折りたたみ、親子関係フラットなデータ、モバイルファースト、グルーピング(階層ではない)
SmartTableOData V2、アノテーション、自動列、スマートフィルタリングJSON のみ、厳密な制御が必要、OData V4
sap.ui.mdc.TableOData V4 のフリースタイル(Fiori elements を採用しない場合)、デリゲートパターンJSON のみ、シンプルなアプリ、OData V2
データセットのサイズガイド
行数推奨テーブル方針
< 100sap.m.Tableシンプルなバインディング、growing は任意
100–1000sap.ui.table.Table仮想化、threshold=100
1000+sap.ui.table.Table仮想化、threshold=100–500、必要に応じて $count=true

よくあるエラー

症状原因対処方法
データが表示されないバインディングパスが正しくない、またはモデルが設定されていないbindRows/bindItems のパスとモデルのアタッチを確認します。
行がスクロールしない(sap.ui.table.*)件数がリクエストされていない合計件数が必要な場合は、OData で $count=true を設定します。
選択が機能しない(sap.ui.table.*)プラグインの競合選択プラグインが適用されている場合は、テーブルの選択 API を呼び出さず、代わりにプラグイン API を使用します。
テキストの折り返しに関する問題sap.ui.table.* で折り返しが有効になっている高さを固定したコンテンツを使用するか、sap.m.Table に切り替えます。
コピー/貼り付けが機能しないプラグインがアタッチされていない、または名前空間が正しくない正しいプラグインをアタッチします(「ドラッグ&ドロップ」セクションを参照)。
パーソナライズ設定が保持されないEngine が設定されていないsap.m.p13n.Engine の登録を確認します。
CopyProvider エラーextractData が定義されていないプラグインに extractData を実装します。
テーブルが表示されないコンテナー構造が無効有効なコンテナーを使用します(「コンテナー構造」を参照)。
JSON モデルで OData の型を使用している型の名前空間が正しくない型の名前空間をモデルに合わせます。JSON には sap.ui.model.type.*、OData V2 には sap.ui.model.odata.type.*、OData V4 には sap.ui.model.odata.v4.type.* を使用します。
Excel エクスポートが失敗してもエラーが表示されないライブラリが読み込まれていない、または extractData が無効ライブラリを検出し、extractData から 2 次元配列を返し、dataSource のバインディングを確認します。
「データがありません」バインディング前にモデルが設定されていないルーターの初期化前に Component.init() でモデルを設定します。

コンテナー構造

有効
構造用途
View > Page > content > Table標準ページ
View > Page > content > Panel > Tableグループ化されたコンテンツ
View > Page > content > IconTabBar > items > IconTabFilter > Tableタブ
View > SplitApp > detailPages > Page > Tableマスター/詳細
View > Dialog > content > Tableモーダル
View > Table単独
無効(および理由)
構造問題
Page > content > VBox > TableVBox には明示的な高さが必要なため、テーブルが表示されなくなります
Page > VBox > TableVBox が content 内にないため、テーブルがレンダリングされません
Page > content > FlexBox > Tableサイズ調整の競合により、テーブルが折りたたまれます
Page > content > ScrollContainer > Tableスクロールが二重になり、仮想化が機能しなくなります

パフォーマンスとアクセシビリティ

避けるべきアンチパターン
  • パーソナライズダイアログを手作りする(sap.m.p13n.Engine を使用します)。
  • sap.ui.table.Table のセル内でテキストを折り返す。
  • 1 つの GridTable セルに複数のインタラクティブ要素を配置する。
  • OData V2 の SmartTable と V4 サービスを混在させる。
  • セルテンプレートを深くネストする。
  • 負荷テストを行わずに threshold を固定する。
  • 無条件に $count=true を設定する(必要な場合にのみ件数をリクエストします)。
アクセシビリティのチェックリスト
  • すべてのテーブルに ariaLabelledBy を設定し、表示されているタイトルを参照します。
  • セルテンプレートには、生のテキストノードではなく sap.m.Text を使用します。
  • sap.ui.table.Table では、キーボード操作(Tab、矢印キー、選択時の Space/Enter)をテストします。
  • パーソナライズダイアログをキーボードで操作できることを確認します。
  • リリース前に、スクリーンリーダー(Windows では NVDA/JAWS、macOS では VoiceOver)でテストします。

コメント