![見出し画像](https://assets.st-note.com/production/uploads/images/112845248/rectangle_large_type_2_52c7dfde7cf72de6db790e0683d480bd.png?width=1200)
SalesforceのLightning Web ComponentでMessage ServiceとPlatform Eventsを使ってみた。
こんにちは、町田(@mcho71)です。
Salesforce上で動く面白いコンポーネントを作ってみたい、ついでにコピペで作っていくうちにSalesforce、Lightning Web Component(以後LWC)を学べるようなアプリ作成チュートリアルを作りたい。
と思い、色々調べています。
Salesforce + LWCでできること、を意識して調べ物をしたところ、以下2つが面白そうかなと思い、動かしてみました。
それぞれどのような動作なのか見てみましょう。
Lightning Message Service
LWC間通信ができます。同ページにあるLWC同士で連携することでリアクティブにLWCの更新ができます。
![](https://assets.st-note.com/production/uploads/images/112836805/picture_pc_1e8185f2cf4d31dc22666cfe8362c8c8.gif?width=1200)
こちらを使用するためには、MessageChannelメタデータの作成と、LWCでメッセージ発行/購読コードを追加する必要があります。
詳しくは Lightning Message Service を使用した DOM 間の通信 - Salesforce Lightning Component Library を参照してください。
Platform Events
Salesforce組織上でイベントの送受信ができます。LWCで使うと、リアルタイムチャットのようなものを簡単に作れます。
![](https://assets.st-note.com/production/uploads/images/112977992/picture_pc_ac751cef00b59e5d3ad315fc02492746.gif?width=1200)
こちら使う場合は、プラットフォームイベントを作成し、Apexによるイベントの発行、LWCでイベント購読が必要になります。
詳しくは以下を参照してみてください。
プラットフォームイベントの作成: プラットフォームイベント項目 | プラットフォームイベント開発者ガイド | Salesforce Developers
Apexによるイベントの発行: Apex によるイベントメッセージの公開 | プラットフォームイベント開発者ガイド | Salesforce Developers
LWCでのイベント購読: Lightning コンポーネントでのプラットフォームイベント通知の登録 | プラットフォームイベント開発者ガイド | Salesforce Developers
これから何を作るか
グラフィック系の見栄えのするものがいいかなと思いつつ、ChatGPTに相談してみたり。以下ChatGPTが上げたアイディアです。
クイズゲームシステム: 複数のコンポーネントを使用して、Salesforce内でクイズゲームシステムを作成します。一つのコンポーネントでクイズの質問を表示し、他のコンポーネントで回答の選択肢やスコアを管理します。ユーザーが回答すると、結果を表示したり次の質問に進んだりする仕組みです。
カスタムトリビアトランプ: カード型のコンポーネントを使用して、カスタムトリビアトランプを作成します。各カードにはトリビアの質問や情報が含まれており、ユーザーはカードをめくって問題を解いたり情報を表示したりします。
ミュージックプレーヤー: LWCコンポーネントを使用して、Salesforce内でミュージックプレーヤーを作成します。一つのコンポーネントで曲のプレビューや再生コントロールを表示し、他のコンポーネントでプレイリストや再生履歴を管理します。
映画レビューアプリ: 複数のコンポーネントを使用して、Salesforce内で映画レビューアプリを作成します。一つのコンポーネントで映画のリストや評価を表示し、他のコンポーネントでレビューやコメントの投稿、評価の集計を行います。
ランキングバトルゲーム: LWCコンポーネントを使用して、Salesforce内でランキングバトルゲームを作成します。ユーザーがキャラクターやアイテムを選択し、他のユーザーとのランキングバトルを行います。ランキングや成績の表示、バトル結果の詳細表示などをコンポーネント間で連携させます。
結構面白そうなアイディアを上げてくれました。
こんな感じで、Salesforce上で動く、面白いコンポーネントを作るチュートリアルを作っていこうと思います。