platform-list-view-generate について
Salesforce の List View メタデータを生成するスキルです。フィルター、列、表示範囲、共有設定を構成し、検証やデプロイ時の問題解決も支援します。
主な機能
- 01フィルターと条件ロジックの設定
- 02列と表示順の指定
- 03ビューの表示範囲の制御
- 04メタデータ XML の生成と検証
- 05デプロイエラーの調査
活用シーン
- 01業務別のレコード一覧の作成
- 02チーム内のリストビュー標準化
- 03列や共有範囲の変更
- 04List View のデプロイ問題の修正
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill platform-list-view-generateインストール後、Claude Code で/platform-list-view-generateを入力して読み込まれたか確認します。
詳細
このスキルを使用する場面
次の作業が必要な場合に、このスキルを使用します。
- オブジェクトのリストビューを作成する
- フィルター付きの列ベースのレコード一覧を生成する
- リストビューの表示範囲と共有を設定する
- リストビューに関連するデプロイエラーをトラブルシューティングする
仕様
Salesforce リストビューのメタデータに関する知識
概要
Salesforce のリストビューでは、オブジェクトのタブに表示する、フィルター付きの列ベースのレコード一覧を定義します。
目的
- ロールやタスクに応じた、厳選されたレコードのサブセットを提供する
- チーム間でよく使用するフィルターと表示項目を標準化する
設定
インラインでの生成が明示的に依頼されていない限り、リストビューは次の場所に保存します。
- force-app/main/default/objects//listViews/.listView-meta.xml ユーザーから依頼された場合に限り、オブジェクトのメタデータファイルに含めます。
- fore-app/main/default/objects//.object-meta.xml
主な要素:
- label:UI に表示する、人が読みやすい名前(40 文字未満である必要があります)
- fullName(fullName):メタデータとファイル名で使用する API 識別子
- filterScope:Everything | Mine | Queue
- filters:項目/演算子/値の組み合わせ
- booleanFilterLogic:複数のフィルターを AND/OR で論理的に結合します(例:「1 AND (2 OR 3)」)
- columns:表示する項目の API 名を並べた順序付きリスト
参照先:
- listViews はオブジェクトのタブに表示されます
- listViews は、flexipages から「filterListCard」コンポーネントを使用して参照できます
重要な判断:表示範囲の方針
組織内でリストビューをどの範囲に表示するかを選択します。
「すべてのユーザーに表示」を選択する場合:
- 複数のプロファイルやロールで役立つ
- ソース管理を通じて管理する、統制された共有アセットである
- 含まれるデータを広く表示しても問題がない
「所有者のみ/制限付き」を選択する場合:
- 反復作業中の試験的な用途、または限定的な用途である
- ユーザー、グループ、またはロールに制限するよう明示的に依頼されている
- ガバナンスやセキュリティのレビューが保留中である
判断に迷う場合: デフォルトで「すべてのユーザーに表示」を選択します。
重要な判断:列の情報量
最小限で重要度の高い列を選択する場合:
- ユーザーが一覧をひと目で確認する必要がある
- モバイル対応やレスポンシブ性能が重要である
より多くの列を選択する場合:
- デスクトップでの集中的なワークフローで、レコードを開かずに詳しい情報を確認する必要がある
- 作業キューとして使用し、項目を追加することでクリック数を減らせる
判断に迷う場合: 主要なタスクに直接役立つ 4~6 列から始めます。
重要なルール(最初にお読みください)
ルール 1:カスタム項目の API 名
カスタム項目には、ラベルではなく正確な API 名を使用します(例:Status__c)。
誤り:
- Status(ラベル)
正しい:
- Status__c(API 名)
ルール 2:標準項目名
カスタムオブジェクトの標準項目には、すでに定義されている名前を使用します。
誤り:
- Name(API 名)
正しい:
- NAME
カスタムオブジェクトの標準項目は次のとおりです。
- NAME
- RECORDTYPE
- OWNER.ALIAS
- OWNER.FIRST_NAME
- OWNER.LAST_NAME
- CREATEDBY_USER.ALIAS
- CREATEDBY_USER
- CREATED_DATE
- UPDATEDBY_USER.ALIAS
- UPDATEDBY_USER
- LAST_UPDATE
- LAST_ACTIVITY
ルール 3:演算子は項目の型に合わせる
選択リストには equals/notEqual、日付項目には日付演算子を使用します。ブール値は 0 と 1 です。テキスト項目専用の演算子をテキスト以外の項目に使用しないでください。
誤り:
- 選択リストに operation="contains" を使用する
- ブール値に value=True を使用する
正しい:
- 有効な選択リスト値とともに operation="equals" を使用する
- ブール値に value=1 を使用する
ルール 4:名前とパスを一致させる
ファイル名、fullName(DeveloperName と呼ばれる場合もあります)、および一意性を一致させる必要があります。
誤り:
- ファイル:My_List.listView-meta.xml
- fullName:MyList
正しい:
- ファイル:MyList.listView-meta.xml
- fullName:MyList
ルール 5:フォルダーの配置場所
ファイルはオブジェクトの listViews ディレクトリに配置してください。配置しないと、デプロイ時にコンポーネントを解決できません。ユーザーから依頼された場合に限り、listView を force-app/main/default/objects//.object-meta.xml にインラインで含めることができます。
パス:
- force-app/main/default/objects//listViews/.listView-meta.xml
生成ワークフロー
ステップ 1:メタデータ情報を取得する
- 対象オブジェクトの API 名を特定します(例:Object__c)。
- ビジネス要件を収集します:目的、対象ユーザー、項目、フィルター。
- 値と演算子が項目の型に適合することを確認します。
ステップ 2:既存の例を確認する
- リポジトリ:force-app/main/default/objects//listViews/(エンドユーザーから別途指示がない場合)
- 組織:既存のリストビューを取得し、実績のあるパターン(フィルター、ロジック、列)を確認します。
- レビュー/デプロイを通過し、期待どおりの UX を実現した内容を確認します。
- 名前:fullName と Label
- 対象ユーザー:表示範囲(「すべてのユーザー」か共有か)
- フィルター範囲:すべて | 自分 | キュー
- フィルター項目:filter、operator、value。複数の場合は booleanFilterLogic も指定します
- 列:項目 API 名の順序付きリスト
- 受け入れ条件:表示されるレコード、ページング動作、主要なシナリオ
ステップ 3:仕様を作成する
実装前に以下を文書化します:
ステップ 4:メタデータファイルを作成する
Lightning 互換のテンプレートを使用し、有効な XML であることを確認します:
<?xml version="1.0" encoding="UTF-8"?>
<ListView xmlns="http://soap.sforce.com/2006/04/metadata">
<fullName>OpenMine</fullName>
<label>Open - My Records</label>
<filterScope>Mine</filterScope>
<columns>NAME</columns>
<columns>Status__c</columns>
<columns>OWNER.ALIAS</columns>
<columns>LAST_UPDATE</columns>
<filters>
<field>Status__c</field>
<operation>equals</operation>
<value>Open</value>
</filters>
<sharedTo>
<role>CEO</role>
<roleAndSubordinatesInternal>COO</roleAndSubordinatesInternal>
</sharedTo>
</ListView>
注意:
- 「My」ビューでは、filterScope="Mine" を使用します。
- 列は必要なものに絞り、目的を明確にします。
- すべてのユーザーを対象とする場合は、「sharedTo」セクションを省略します。
ステップ 5:ローカルで検証する
- XML の整形式性と名前空間が正しいこと
- 項目名がオブジェクトに存在し、演算子と値が項目の型に適合すること
- パスと fullName が一致していること
- フィルターが複数ある場合は、booleanFilterLogic を正しく設定すること(例:「1 AND (2 OR 3)」)
ステップ 6:組織にデプロイして確認する
- コンポーネントのパスまたはオブジェクト全体をデプロイします。
- UI でオブジェクトタブを開き、以下を確認します:
- レコードがフィルターに一致すること
- 列が正しく表示されること
- 表示範囲が対象ユーザーと一致すること
よくあるデプロイエラー
| エラー | 原因 | 修正 |
|---|---|---|
| "Invalid field Status" | API 名ではなくラベルを使用したか、標準項目で定義名ではなく API 名を使用した | Status__c(または正しい API 名)を使用するか、標準項目では Name ではなく NAME を使用します |
| "Invalid filter operator" | 演算子が項目の型に適合しない | 項目の型に対応する演算子を選択します(例:選択リストでは equals) |
| "Component not found at path" | フォルダー名またはファイル名が間違っている | objects//listViews に配置し、ファイル名を fullName と一致させます |
| "Malformed booleanFilterLogic" | 構文またはインデックスの不一致 | 「1 AND 2」の形式を使用し、フィルターのインデックス順が一致していることを確認します |
確認チェックリスト
- 必須項目(fullName、label、filterScope、columns)がすべて入力されている
- 必要に応じてプロパティ値が XML エンコードされている
- カスタム項目の参照に API 名を使用している(例:Status__c)
- 標準項目の参照に定義名を使用している(例:NAME)
- 演算子が項目の型に適合し、選択リストの値が有効である
- booleanFilterLogic(使用する場合)がフィルターの順序と数に一致している
- ファイルパスと fullName/developerName が一致している
- 非推奨のプロパティや Classic 専用のプロパティが含まれていない
- 正常にデプロイされ、意図どおりに表示される
- レコード、列、フィルターが指定どおりに動作する