データガイドライン

Salesforce データを操作するための最も簡単な方法は、Lightning データサービス上に構築された Lightning 基本コンポーネントを使用することです。より高い柔軟性が必要な場合は、Lightning データサービスワイヤアダプタを直接使用します。各ワイヤアダプタは、異なるデータとメタデータを提供します。ワイヤサービスはデータとメタデータをコンポーネントにプロビジョニングします。最後に、LDS ワイヤアダプタの柔軟性が不十分な場合は、Apex を使用します。

Lightning データサービスは、ユーザインターフェース API でサポートされているすべてのカスタムオブジェクトと標準オブジェクトをサポートします。外部オブジェクト、個人取引先、カスタムメタデータ型はサポートされていません。Lightning データサービスでは、API 使用状況コールは発生しませんが、返されるレコード数などの一般的な制限の対象となります。

データは Lightning データサービスによって管理されます。レコードへの変更は、Lightning データサービス上に構築されたすべてのテクノロジに反映されます。

Lightning データサービス上に構築されている Lightning 基本コンポーネントは、lightning-record-formlightning-record-edit-form、および lightning-record-view-form です。Salesforce のレコード詳細ページのような、レコードを表示、作成、編集するための UI が提供されます。

lightning-record*form コンポーネントでは、次のことが可能です。

  • Salesforce のレコード詳細ページのようなメタデータ駆動型 UI またはフォームベース UI を作成する。
  • 項目メタデータに基づいてレコード値を表示する。
  • ローカライズされた項目表示ラベルを表示または非表示にする。
  • カスタム項目のヘルプテキストを表示する。
  • クライアント側検証を実行して入力規則を適用する。

lightning-record*form コンポーネントを使用するときは、次のガイドラインに留意してください。

このコンポーネントは、レコードの作成、編集、表示を行うフォームを表示する最も簡単な方法です。フォームのビューモードと編集モードの切り替えは、ユーザが項目を編集するときに自動的に行われます。コンポーネントでは、複数の列がサポートされている、オブジェクトのデフォルトレコードレイアウトが使用されます。オブジェクトのコンパクトレイアウトやフルレイアウトのすべての項目、または指定した項目のみが読み込まれます。

パフォーマンスが向上するように、できる限りレイアウトではなく項目を指定します。プロビジョニングされた項目をコンポーネントではなくシステム管理者が制御する場合にのみレイアウトを指定します。コンテキストユーザのレイアウトに割り当てられているすべての項目の受信をコンポーネントで制御する必要があります。

フォームの表示をカスタマイズしたり、レコードデータのカスタム表示を提供したりするには、lightning-record-edit-form (レコードを追加または更新する) および lightning-record-view-form (レコードを表示する) を使用します。lightning-record-edit-form では、lightning-input-field コンポーネントを使用して項目値を事前入力できます。

「基本コンポーネントを使用したレコードの操作」を参照してください。

カスタム UI を作成する場合や、メタデータ駆動型 UI が必要ない場合は、ワイヤアダプタを使用してください。

GraphQL ワイヤアダプタによって、Apex なしに項目やオブジェクトを正確に照会できる単一のエンドポイントが提供されます。他の LWC ワイヤアダプタと比べて、要求のペイロードが少なく、ユーザのデータ取得に必要なリクエスト数が最小限に抑えられます。

GraphQL は、他のワイヤアダプタを介して複数の要求を置き換えることで、より高いパフォーマンスを発揮できます。大量のレコードを扱う場合、ワイヤアダプタのページ設定機能を使用すれば、データを簡単かつ効率的に表示できます。

Lightning データサービスによる共有キャッシュ、項目レベルのセキュリティ、およびユーザと組織の権限により、次のシナリオで GraphQL ワイヤアダプタ機能を使用できます。

  • 複数のクエリを 1 回の処理で送信する
  • 複数のオブジェクトのレコードデータを要求する
  • 親リレーションまたは子リレーションを持つレコードを照会する
  • 条件によって絞り込み、クエリ結果を順序付ける
  • 動的レコード ID を使用する

「GraphQL API for LWC (LWC 向け GraphQL API)」を参照してください。

ビジネスロジックを実行したり、LDS 基本コンポーネントでは実現できないカスタマイズが必要なフォームを作成したりできるように未加工レコードデータにアクセスするには、@wire を使用して getRecord Lightning データサービスワイヤアダプタを指定します。

取引先責任者名のリストなど、項目値のリストを表示するには、getListUi を使用します。

複数のワイヤアダプタを使用して複数のレコードのデータをプロビジョニングできますが、各操作は独立したトランザクションになります。1 つのトランザクションで複数のレコードを操作するには、Apex を使用します。

単一レコードを作成、編集、または削除するには、lightning/ui*Api モジュールの createRecordupdateRecord、および deleteRecord 関数をコールします。LDS ワイヤアダプタと同様に、複数の関数を使用して複数のレコードを操作できますが、各操作は独立したトランザクションになります。1 つのトランザクションで複数のレコードを操作するには、Apex を使用します。

パフォーマンスが向上するように、使用事例で求められる最小限のデータを返すワイヤアダプタを使用します。

「ワイヤサービスを使用したデータの取得」「レコードの作成」を参照してください。

基本コンポーネントや Lightning データサービスワイヤアダプタまたは関数を使用できない場合、Apex を使用します。

Lightning データサービスデータとは異なり、Apex データは管理されないため、データを更新する必要があります。Apex データがワイヤサービス経由でプロビジョニングされた場合は、refreshApex() をコールして更新します。このメソッドは、ワイヤ設定を使用してデータを取得し、キャッシュを更新するものです。Apex メソッドを命令としてコールする場合、データを更新するには、メソッドをコールしてから notifyRecordUpdateAvailable(recordIds) をコールし、キャッシュを更新します。

refreshApex を使用した Apex 以外のワイヤアダプタからのデータの更新が廃止されました。Apex 以外のワイヤアダプタから返されたレコードデータを更新するには、代わりに notifyRecordUpdateAvailable(recordIds) を使用します。

次の場合、Apex を使用します。

  • ユーザインターフェース API でサポートされていないオブジェクト (ToDo や行動など) を操作する。
  • ユーザインターフェース API でサポートされていない操作 (金額が $100 万よりも大きい最初の 200 件の取引先のような条件でのレコードのリストの読み込みなど) を使用する。
  • トランザクション操作を実行する。たとえば、取引先を作成して、その新規取引先に関連付けられる商談を作成する場合などです。いずれかの作成が失敗すると、トランザクションはロールバックされます。
  • ワイヤサービスではなく命令としてメソッドをコールする。ボタンのクリックに対応する場合や、クリティカルパスの外部への読み込みを遅らせる場合、命令としてメソッドをコールできます。Apex メソッドを命令としてコールする場合、データを更新するには、再度 Apex メソッドを呼び出します。

「Apex メソッドのコール」を参照してください。

コードが複雑になり、不要な副作用が発生することを回避するには、データが親から子に一方向に流れるようにする必要があります。変異をトリガするために、コンポーネントはその親にイベントを送信する必要があります。コンポーネントに渡されるオブジェクトは参照のみです。データを変更するには、コンポーネントで変更するオブジェクトの浅いコピーを作成する必要があります。データを操作する場合、これらの概念を理解することが重要です。「データフロー」を参照してください。

関連トピック