mcpField
G
generating-list-view

generating-list-view

github.com/forcedotcomデータ・データベース1.1k3.9k 回インストール1 日前に更新
リポジトリ

generating-list-view について

Salesforce の開発者や管理者向けに、List View メタデータの作成方法を示します。フィルター、列、公開範囲、デプロイ確認を扱い、項目名や演算子、ファイルパスの整合性を重視します。

主な機能

  1. 01フィルターと条件ロジックの設定
  2. 02列と公開範囲の選択
  3. 03項目と演算子の型確認
  4. 04メタデータのパスとファイル名の整合
  5. 05デプロイ検証手順

活用シーン

  1. 01オブジェクトの絞り込みリスト作成
  2. 02共有または制限付きビューの設定
  3. 03リストビューのデプロイエラー調査

インストール

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

$npx skills add https://github.com/forcedotcom/sf-skills --skill generating-list-view

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

詳細

このスキルを使う場面

次の作業が必要な場合に、このスキルを使用します。

  • オブジェクトのリストビューを作成する
  • フィルター付きの列ベースのレコード一覧を生成する
  • リストビューの表示範囲と共有を設定する
  • リストビューに関連するデプロイエラーをトラブルシューティングする

仕様

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 は、"filterListCard" コンポーネントを使用する flexipages から参照できます
重要な判断:表示範囲の方針

組織内でリストビューをどの範囲に表示するかを選択します。

「すべてのユーザーに表示」を選ぶ場合:

  • さまざまなプロファイルやロールで役立つ
  • ソース管理で管理する、ガバナンスの対象となる共有アーティファクトである
  • 含まれるデータが幅広いユーザーへの公開に適している

「所有者のみ/制限付き」を選ぶ場合:

  • 反復作業中の実験的な用途、または限定的な用途である
  • Users、Groups、または Roles に制限するよう明示的に要求されている
  • ガバナンスやセキュリティの審査が保留中である

判断に迷う場合: デフォルトで「すべてのユーザーに表示」を選びます。

重要な判断:列の密度

最小限で情報価値の高い列を選ぶ場合:

  • ユーザーが一覧をざっと確認する必要がある
  • モバイルやレスポンシブ環境でのパフォーマンスが重要である

より充実した列のセットを選ぶ場合:

  • デスクトップ中心のワークフローで、レコードを開かずに詳細な情報を確認する必要がある
  • 作業キューとして使用し、項目を増やすことでクリック数を減らせる

判断に迷う場合: 主要なタスクを直接支援する 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 を実現した内容を確認します。
  • ステップ 3:仕様を作成する

    実装前に以下を文書化します:

    • 名前:fullName と Label
    • 対象ユーザー:表示範囲(「すべてのユーザー」か共有か)
    • フィルター範囲:すべて | 自分 | キュー
    • フィルター項目:filter、operator、value。複数の場合は booleanFilterLogic も指定します
    • 列:項目 API 名の順序付きリスト
    • 受け入れ条件:表示されるレコード、ページング動作、主要なシナリオ
    ステップ 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 専用のプロパティが含まれていない
    • 正常にデプロイされ、意図どおりに表示される
    • レコード、列、フィルターが指定どおりに動作する

コメント