0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【salesforce】@wireとLDS(wireアダプタ)の関係性

Posted at

はじめに

Salesforce の LWC デコレータ(@wire)を勉強していると、

  • Lightning Data Service(LDS)って何?
  • wire アダプタって何?

という感じで ? が多かったので、この記事では
@wire と LDS(wire アダプタ)の関係性 を整理してみました。

🔗 LWC デコレータの基本については前回の記事を参照してください
[Salesforce] LWCデコレータ(@api / @track / @wire)とはなんぞや


@wire とは?(前回の復習)

@wire は LWC のデコレータのひとつで、
「データを自動取得してコンポーネントにバインドする仕組み」

  • データの取得源は @wire に渡す ソース(wire アダプタ or Apex メソッド) によって変わる。

つまり、
@wire は「データ取得の仕組み」 であって
「どこからデータを取るか」は別で決まる ということ。


LDS(Lightning Data Service)とは?

LDS(Lightning Data Service)
Salesforce が提供する Apex不要の標準データサービス

  • 標準オブジェクト・カスタムオブジェクトの CRUD を Apex なしで操作可能。

要するに…

「@wire は呼び出しの仕組み、LDS はその呼び先の一種」


wire アダプタとは?

LDS の機能を @wire から呼び出せるようにするのが wire アダプタ です。

LDS を使った代表的な wire アダプタ

wire アダプタ 説明
getRecord 単一レコードを取得
getRecords 複数レコードを取得(複雑なのであまり一般的ではない)
getObjectInfo オブジェクトのメタ情報を取得
getFieldValue レコードデータから単一フィールドを取得
getPicklistValues ピックリスト値を取得
getListUi リストビューに基づいて複数レコードを取得

LDS wire アダプタのメリット

  • Apex クラス不要で簡単
    標準オブジェクト・カスタムオブジェクトの CRUD を Apex なしで扱える。

  • 権限チェックが自動で適用される
    FLS(項目レベルセキュリティ)、CRUD 権限、共有ルールを自分で気にする必要がない。

  • キャッシュが効くのでパフォーマンスが良い
    LDS は内部でレコードデータをキャッシュするので、同じレコードを何度も取得する場合に効率が良い。

  • リアクティブに動作する
    依存パラメータ(例:recordId)が変われば自動で再取得される。

  • オフライン対応
    モバイルや Lightning Experience でオフライン状態でも LDS がキャッシュを使って動作可能。


⚠️ LDS wire アダプタの制約

  • 複雑な SOQL は書けない
    サブクエリや集計、JOIN、WHERE 条件の複雑なロジックは不可。
    → 必要なら Apex で実装する。

  • 取得できるデータが静的
    fields に渡す項目はコンポーネントコード内で固定される。
    動的に項目を切り替えたい場合は Imperative Call や Apex が必要。

  • トランザクション制御はできない
    複数のレコードをまとめて処理したり、複雑なバリデーションを挟むことはできない。

  • 取得件数に限界がある
    大量データを扱う場合は SOQL+Apex が必須。

  • 細かいエラーハンドリングが難しい
    成功/失敗の条件分岐はできるが、複雑なリトライロジックなどは Imperative Apex で対応するほうが柔軟。


@wire と LDS のまとめ

  • @wire = 「データ取得の仕組み(呼び方)」
  • ✅ LDS = 「データを提供する仕組み(呼び先)」
  • ✅ wire アダプタ = @wire で LDS を呼ぶための便利パーツ

つまり、@wire は LDS を呼び出すための窓口のひとつ!

メリット 制約
Apex 不要で手軽 複雑な条件は書けない
権限チェックが自動 動的クエリは不可
キャッシュで高速 大量データには不向き
依存が変われば自動更新 トランザクション制御は不可
オフラインでも動く エラーハンドリングに制約

参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?