背景と応用シナリオ
Salesforce Classicの時代からSalesforceを利用しているシステム管理者であれば、ページレイアウトの限界を痛感したことがあるでしょう。すべてのユーザーに同じレイアウトが表示され、特定の項目やセクションを特定のプロファイルのユーザーにだけ表示するといった、きめ細かな制御は困難でした。その結果、ページは縦に長くなり、ユーザーは必要な情報を見つけるために多くのスクロールを強いられていました。
しかし、Lightning Experience (Lightningエクスペリエンス) の登場により、この状況は一変しました。その中核をなすのが Lightning Record Page (Lightning レコードページ) です。これは、単なる項目の配置ツールではなく、コンポーネントベースで構築される動的なユーザーインターフェースです。システム管理者は、コーディング不要で、ユーザーの役割、プロファイル、さらにはレコードのデータに応じて、表示する情報やアクションを自在にカスタマイズできます。
例えば、以下のようなシナリオで Lightning Record Page は絶大な効果を発揮します:
- 営業担当者向けの商談ページ: 「フェーズ」が「商談成立」になるまでは、契約関連の項目を非表示にし、活動履歴や次のステップを強調表示する。
- サポート担当者向けのケースページ: 「状況」が「クローズ」のケースでは、編集可能な項目を制限し、関連するナレッジ記事や解決策を前面に表示する。
- マネージャー向けの取引先ページ: チームメンバーが参照する基本情報に加え、承認履歴や関連するレポートのグラフなど、マネジメント層が必要とする情報をダッシュボードのように配置する。
このように、Lightning Record Page は、ユーザー体験を劇的に向上させ、業務効率を最大化するための強力なツールです。
原理説明
Lightning Record Page は、Lightning App Builder (Lightning アプリケーションビルダー) という宣言的な(ポイント&クリック操作の)ツールを使用して作成・編集します。ページの構造は、主に以下の要素で構成されています。
ページテンプレート
ページの全体的なレイアウトを定義します。「ヘッダーと右サイドバー」や「ヘッダーと3つの列」など、複数の標準テンプレートから選択でき、ページの骨格を決定します。
コンポーネント
ページに配置できる個々の機能部品です。コンポーネントにはいくつかの種類があります。
- Standard Components (標準コンポーネント): Salesforceが標準で提供するコンポーネントです。「項目」「関連リスト」「Chatter」など、おなじみの機能がこれにあたります。
- Custom Components (カスタムコンポーネント): 開発者が Lightning Web Components (LWC) や Aura Components を使用して独自に作成したコンポーネントです。特定の業務要件を満たすために、オーダーメイドの機能をページに追加できます。
- AppExchange Components: AppExchange マーケットプレイスからインストールしたサードパーティ製のコンポーネントです。地図連携やファイル管理など、多種多様な機能を手軽に追加できます。
Dynamic Forms (動的フォーム)
これは Lightning Record Page の中でも特に画期的な機能です。従来、項目の配置は Page Layout (ページレイアウト) に強く依存していましたが、Dynamic Forms を使用すると、項目や項目セクションを、他のコンポーネントと同じようにページ上の任意の位置に自由に配置できます。
さらに、コンポーネントの表示ルールを設定することで、「特定の条件を満たした場合にのみこの項目セクションを表示する」といった制御が可能です。例えば、「取引先の『種別』が『顧客』の場合にのみ、『年間売上』項目を表示する」といった設定が、コーディングなしで実現できます。
Dynamic Actions (動的アクション)
ページのヘッダー部分に表示されるアクション(ボタン)も、レコードのデータやユーザー情報に基づいて動的に制御できます。これにより、ユーザーのコンテキストに合わない不要なアクションを非表示にし、インターフェースをすっきりと保つことができます。「商談のフェーズが『交渉/レビュー』に進むまで、『承認申請』ボタンを表示しない」といった制御が可能です。
示例代码
システム管理者は主に宣言的なツールを使用しますが、開発者と連携してカスタムコンポーネントをページに組み込むことで、その可能性は無限に広がります。ここでは、開発者が作成したシンプルな LWC を、システム管理者が Lightning Record Page に配置するシナリオを想定します。
このコンポーネントは、表示されているレコードの「名前」と「電話番号」を動的に取得して表示するものです。
1. LWC のコード (開発者担当)
以下は、開発者が作成する LWC のサンプルコードです。システム管理者はこのコードを直接書く必要はありませんが、どのような仕組みで動作しているかを理解しておくと、開発者との連携がスムーズになります。
recordDisplayExample.html
<!--
このテンプレートはコンポーネントの見た目を定義します。
lightning-card で全体を囲み、見出し (title) を設定しています。
-->
<template>
<lightning-card title="Record Information" icon-name="standard:account">
<div class="slds-m-around_medium">
<!-- account.data が存在する場合にのみ以下の内容を表示 -->
<template if:true={account.data}>
<p><b>Account Name:</b> {name}</p>
<p><b>Phone:</b> {phone}</p>
</template>
<!-- データ取得中にエラーが発生した場合に表示 -->
<template if:true={account.error}>
<p>Error loading record data.</p>
</template>
</div>
</lightning-card>
</template>
recordDisplayExample.js
import { LightningElement, api, wire } from 'lwc';
import { getRecord, getFieldValue } from 'lightning/uiRecordApi';
// インポートする項目を定義します。
import NAME_FIELD from '@salesforce/schema/Account.Name';
import PHONE_FIELD from '@salesforce/schema/Account.Phone';
// 取得する項目のリスト
const fields = [NAME_FIELD, PHONE_FIELD];
export default class RecordDisplayExample extends LightningElement {
// @api デコレータは、このプロパティが公開され、
// Lightning レコードページから recordId を自動的に受け取ることを示します。
@api recordId;
// @wire デコレータを使い、getRecord アダプタを呼び出します。
// recordId と fields をパラメータとして渡し、結果を account プロパティに格納します。
@wire(getRecord, { recordId: '$recordId', fields })
account;
// ゲッターを使用して、取得したデータから特定のフィールド値を簡単に取り出します。
get name() {
return getFieldValue(this.account.data, NAME_FIELD);
}
get phone() {
return getFieldValue(this.account.data, PHONE_FIELD);
}
}
recordDisplayExample.js-meta.xml
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata">
<apiVersion>58.0</apiVersion>
<!-- isExposed を true にすることで、App Builder で利用可能になります -->
<isExposed>true</isExposed>
<!-- このコンポーネントを配置できるページ種別を定義します -->
<targets>
<target>lightning__RecordPage</target>
</targets>
</LightningComponentBundle>
2. コンポーネントの配置 (システム管理者担当)
開発者がこのコンポーネントを組織にデプロイすると、システム管理者は Lightning アプリケーションビルダーで以下の操作を行います。
- 設定から「Lightning アプリケーションビルダー」を開き、対象の取引先レコードページを編集します。
- 左側のコンポーネントパネルに「Custom (カスタム)」セクションが表示され、その中に「Record Information」コンポーネントが見つかります。
- これをページ上の任意の位置(例えば右サイドバー)にドラッグ&ドロップします。
- 設定は不要です。
@api recordIdのおかげで、コンポーネントは自身が置かれているページのレコードIDを自動で認識し、関連するデータを表示します。 - ページを保存し、有効化すれば完了です。
このように、システム管理者はコードの詳細を意識することなく、開発者が作成した強力な部品をパズルのように組み合わせて、最適なユーザー体験を構築できます。
注意事項
Lightning Record Page を効果的に活用するためには、いくつかの注意点を理解しておく必要があります。
権限
Lightning Record Page を作成・編集するには、「アプリケーションのカスタマイズ」権限が必要です。また、有効化の設定によっては、プロファイルやアプリケーションの管理権限も関連してきます。
有効化 (Activation)
ページを保存した後、「有効化」という重要なステップがあります。有効化には複数のレベルがあり、慎重に選択する必要があります。
- 組織のデフォルト: 組織全体で、このオブジェクトのデフォルトのレコードページとして設定します。
- アプリケーションのデフォルト: 特定のアプリケーション内でのみ、このページをデフォルトとして設定します。例えば、同じ取引先オブジェクトでも、「営業」アプリと「サービス」アプリで異なるページを表示できます。
- アプリケーション、レコードタイプ、プロファイルの組み合わせ: 最も詳細な割り当て方法です。「営業アプリで、レコードタイプが『法人顧客』、プロファイルが『営業担当』のユーザー」に対してのみ、このページを割り当てる、といった非常に細かい制御が可能です。
複数の割り当てルールが存在する場合、Salesforce は最も具体的なルールを優先します。この優先順位を理解していないと、意図したページが表示されない原因になります。
パフォーマンス
自由度が高い反面、1つのページにコンポーネントを詰め込みすぎると、ページの読み込み速度が低下し、ユーザー体験を損なう可能性があります。Lightning アプリケーションビルダーの右上にある「分析」ボタンをクリックすると、ページのパフォーマンス予測を確認できます。定期的にこの機能を使って、ページの健全性をチェックすることが重要です。
Dynamic Forms の制限
Dynamic Forms は非常に強力ですが、いくつかの制限事項があります。
- すべての標準オブジェクトで利用できるわけではありません(ただし、対応オブジェクトは順次拡大されています)。
- 従来のページレイアウトは、モバイルでの表示や、関連リストの表示順、必須項目の設定のために依然として必要です。Dynamic Forms はページレイアウトを「強化」するものであり、「完全に置き換える」ものではないと理解することが重要です。
まとめとベストプラクティス
Lightning Record Page は、現代の Salesforce システム管理者にとって必須のスキルです。これを使いこなすことで、ユーザーが本当に必要とする情報と機能を、適切なタイミングで提供する、インテリジェントなユーザーインターフェースを構築できます。
最後に、Lightning Record Page を設計・運用する上でのベストプラクティスをいくつか紹介します。
- ユーザー中心で設計する: テクノロジーありきではなく、まずユーザー(営業、サポートなど)の業務フローを理解し、彼らが何を必要としているかをヒアリングすることから始めましょう。
- コンポーネントの表示ルールを賢く使う: Dynamic Forms やコンポーネントの表示ルールを積極的に活用し、ページを可能な限りシンプルに保ちましょう。一度にすべての情報を表示するのではなく、必要な情報だけを文脈に応じて表示することが理想です。
- 反復的な改善を心がける: 最初から完璧なページを作ることは困難です。まずは基本的なレイアウトをリリースし、ユーザーからのフィードバックを収集して、継続的に改善を加えていくアプローチが成功の鍵です。
- パフォーマンスを常に意識する: 新しいコンポーネントを追加する際は、必ず「分析」機能でパフォーマンスへの影響を確認する習慣をつけましょう。
- 標準機能を最大限に活用する: カスタムコンポーネントは強力ですが、まずは標準コンポーネントで要件を満たせないか検討しましょう。標準機能の方が、将来の Salesforce のアップデートとの互換性が高く、メンテナンスコストも低く抑えられます。
これらの原則を守りながら Lightning Record Page を活用することで、あなたは単なる「管理者」から、ユーザーの生産性を向上させ、ビジネスの成功に貢献する「価値創造者」へと進化することができるでしょう。
コメント
コメントを投稿