mcpField
U
ui5-best-practices-smart-controls

ui5-best-practices-smart-controls

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

ui5-best-practices-smart-controls について

ui5-best-practices-smart-controlsは、OData V2を使うフリースタイルアプリ向けに、UI5 Smartコントロールの作成、レビュー、トラブルシューティングを案内します。コントロールの選択、実装ルール、よくある問題、アクセシビリティを扱います。

主な機能

  1. 01Smartコントロール選択の指針
  2. 02コントロール階層とバインディング規則
  3. 03よくある問題と対処法
  4. 04パフォーマンスとアクセシビリティの確認
  5. 05APIとコードの検証方法

活用シーン

  1. 01OData V2のフォームやフィルター画面を設計
  2. 02SmartFieldやSmartChartの表示問題を調査
  3. 03Smartコントロールのコードとアクセシビリティをレビュー

MCP 対応

コントロールAPIの確認にはMCPツールget_api_reference、コード検証にはrun_ui5_linterを使うよう案内しています。

インストール

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

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

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

同梱ファイル

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

references/
filter-bar.md
smart-chart.md
smart-field.md
smart-filter-bar.md
smart-form.md
smart-link.md
smart-multi-input.md
value-help-dialog.md

詳細

UI5 Smart Controls のベストプラクティス

OData V2 サービスを使用するフリースタイルアプリケーションで、UI5 スマートコントロールのコードを生成、レビュー、トラブルシューティングする際は、常に以下のガイドラインを適用してください。

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

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

トリガー読み込むリファレンス
sap.ui.comp.smartfield.SmartField を使用または導入する場合references/smart-field.md
sap.ui.comp.smartform.SmartForm を使用または導入する場合references/smart-form.md
sap.ui.comp.smartfilterbar.SmartFilterBar を使用または導入する場合references/smart-filter-bar.md
sap.ui.comp.smartchart.SmartChart を使用または導入する場合references/smart-chart.md
sap.ui.comp.navpopover.SmartLink を使用または導入する場合references/smart-link.md
sap.ui.comp.smartmultiinput.SmartMultiInput を使用または導入する場合references/smart-multi-input.md
sap.ui.comp.filterbar.FilterBar を使用または導入する場合references/filter-bar.md
sap.ui.comp.valuehelpdialog.ValueHelpDialog を使用または導入する場合references/value-help-dialog.md

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


基本ルール

必須
  • Smart コントロールには常に entitySet を指定するか、コントロールがエンティティ型を解決できるバインディングコンテキストを継承するようにしてください。
  • SmartFilterBar のフィールドを上書きする場合は、XML で ControlConfiguration を使用してください(コントロールの種類、フィルターの種類、インデックス)。実行時に変更できるのは visible、label、visibleInAdvancedArea のみです。
  • 正しい階層を使用してください:SmartForm > Group > GroupElement > SmartField。SmartField を SmartForm に直接配置しないでください。
  • 内部コントロール(例:getInnerControl()、getChart())にプログラムからアクセスする前に、initialise イベントを待ってください。
  • OData V2 モデルと併用するバインディングでは、sap.ui.model.odata.type.* 型を使用してください。OData V2 で sap.ui.model.type.* を使用しないでください。
  • アクセシビリティのため、表示されているタイトルを参照する ariaLabelledBy を SmartFilterBar と SmartChart に設定してください。
  • データ送信前に、クライアント側の必須フィールド検証を行うため、SmartForm で check() を使用してください。
  • コントロール API の確認には get_api_reference MCP ツールを使用してください。コードの検証には run_ui5_linter を使用してください。
禁止事項
  • OData V4 サービスでは Smart コントロールを使用しないでください。代わりに MDC コントロール(sap.ui.mdc)を使用してください。
  • SmartField の value プロパティにカスタムフォーマッターを設定しないでください。SmartField はメタデータに基づいて独自にレンダリングを管理します。動作に影響を与えるにはアノテーションを使用してください。
  • SmartField で複合バインディング構文(parts: [...])を使用しないでください。単位/通貨フィールドの複合バインディングは SmartField が独自に管理します。
  • 初期化中に getChart() を同期的に呼び出さないでください。initialise イベントまたは getChartAsync() を使用してください。
  • SmartChart や SmartTable の内部コントロール(内部の sap.chart.Chart など)を直接変更しないでください。スマートコントロールの公開 API を使用してください。
  • フィールドラベルをハードコードしないでください。OData メタデータの sap:label または @Common.Label アノテーションを使用してください。
  • HTML でインラインスタイルやスクリプトを使用しないでください(CSP 準拠のため)。
  • グローバルアクセス(sap.ui.comp.smartfield.SmartField)を使用しないでください。sap.ui.define または ES6 インポートを使用してください。

選択マトリックス

コントロール使用する場合使用しない場合
SmartFieldOData V2、単一プロパティの表示/編集、Edm 型とアノテーションによる自動レンダリングOData V4、JSON モデル、カスタムレンダリングが必要な場合、複合/複数プロパティのフィールド
SmartFormOData V2、複数の SmartField を使ったエンティティの編集、アノテーションによる自動ラベルOData V4、複雑なカスタムレイアウト、OData 以外のデータ
SmartFilterBarOData V2、アノテーション駆動のフィルター UI、SmartTable/SmartChart との連携OData V4(MDC FilterBar を使用)、JSON のみ、完全なカスタムフィルターロジック
SmartChartOData V2、アノテーション駆動のチャート表示、ドリルダウン、バリアント管理OData V4(MDC Chart を使用)、分析以外のデータ、カスタムチャート JS
SmartLinkOData V2、セマンティックオブジェクトナビゲーション、FLP を介したアプリ間ナビゲーションOData V4(MDC Link を使用)、単純な静的リンク、FLP を利用できない場合
SmartMultiInputOData V2、トークンを使った複数値入力、範囲指定による値ヘルプOData V4、単純な単一値入力、JSON のみ
FilterBarOData アノテーションを使わない手動フィルター UI、ValueHelpDialog 内、カスタムフィルターアノテーション付きの OData V2(SmartFilterBar を使用)、OData V4(MDC FilterBar を使用)
ValueHelpDialogテーブルと条件タブを使った複雑な値選択、トークンベースの複数選択単純なドロップダウン、単一値の選択、OData V4(MDC ValueHelp を使用)

よくあるエラー

症状原因対処方法
編集モードで SmartField がプレーンテキストとして表示されるバインディングコンテキストがない、または entitySet が正しくないvalue="{PropertyName}" とエンティティコンテキストの解決を確認します。
SmartField に DatePicker ではなく Input が表示されるプロパティに sap:display-format="Date" がないアノテーションを追加するか、ControlConfiguration で controlType を使用します。
SmartForm のラベルが表示されないOData メタデータに sap:label アノテーションが設定されていないプロパティに sap:label を追加するか、GroupElement に label を設定します。
SmartFilterBar の先行入力が機能しない正しいターゲットパスを持つ ValueList アノテーションがないターゲットが {Namespace}.{EntityName}/{FieldName} であることを確認します。
SmartFilterBar のデフォルト値が無視されるinitialise の後に ControlConfiguration を動的に設定しているXML で値を静的に設定するか、setFilterData() API を使用します。
SmartChart の高さが 0/表示されないコンテナーに明示的な高さが指定されていない親コンテナーに高さを設定します(例:height="50vh")。
SmartChart にディメンション/メジャーが表示されないUI.Chart アノテーションが間違っている、または存在しないアノテーションの MeasureAttributes と DimensionAttributes を確認します。
SmartLink のポップオーバーに「コンテンツがありません」と表示されるFLP でセマンティックオブジェクトのナビゲーションターゲットがないFLP の設定とユーザー権限を確認します。
SmartLink がテキストとして表示され、クリックできないプロパティに SemanticObject アノテーションがないOData プロパティに @Common.SemanticObject アノテーションを追加します。
SmartMultiInput のトークンが保持されないValueList がない、またはバインディングが正しくないValueList アノテーションとナビゲーションプロパティのバインディングを確認します。

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

避けるべきアンチパターン
  • すべての値リストを事前に要求する(遅延読み込みを使用してください。値リストはデフォルトでオンデマンドに読み込まれます)。
  • バックエンドクエリの負荷が高い SmartFilterBar で liveMode="true" を使用する(再取得が頻繁に発生します)。
  • SmartForm のグループを深くネストする(階層は Form > Group > GroupElement のようにフラットに保ちます)。
  • SmartChart API を使わずに内部のチャートを直接変更する(パーソナライズとバリアント管理が機能しなくなります)。
  • 特定のチャートタイプが不要な場合に ignoredChartTypes を設定しない(不要な UI オプションが表示されます)。
アクセシビリティチェックリスト
  • SmartFilterBar の ariaLabelledBy に、表示されているタイトルを指定します。
  • SmartChart の ariaLabelledBy に、表示されているタイトルを指定します。
  • SmartForm はアノテーションを介して SmartField にラベルを自動的に伝播します。
  • SmartFilterBar の「フィルターの調整」ダイアログで、キーボードナビゲーションが機能することを確認します。
  • スクリーンリーダーで SmartLink のポップオーバーをテストします(ナビゲーションターゲットが読み上げられる必要があります)。

コメント