Salesforce ページレイアウト:UIカスタマイズのための完全ガイド

執筆者:Salesforce 管理者


背景と応用シーン

Salesforce管理者として、私たちの重要な責務の一つは、ユーザーが効率的かつ直感的にプラットフォームを利用できるよう、最適なユーザーインターフェース(UI)を提供することです。このUIカスタマイズの中核をなす機能が Page Layouts (ページレイアウト) です。ページレイアウトは、Salesforceのレコードページ(例えば、取引先、商談、ケースなど)に表示される項目、ボタン、関連リストなどの配置や表示/非表示を制御するための強力な宣言的ツールです。

ページレイアウトが活躍する具体的な応用シーンは多岐にわたります。

  • 部門ごとの情報表示の最適化:営業部門とサービス部門では、同じ取引先レコードを見ても、必要とする情報が異なります。営業担当者には年間売上や関連商談が重要ですが、サービス担当者にはサポート契約や関連ケースが最優先です。ページレイアウトを使用すれば、それぞれのプロファイルに応じて異なるレイアウトを割り当て、必要な情報に素早くアクセスできるように設計できます。
  • データ品質の向上:特定のビジネスプロセスにおいて、必須の情報を確実に入力させたい場合があります。例えば、「商談」が「不成立」になった際に、その「理由」を必須項目とすることで、後々の分析に必要なデータを欠落なく収集できます。ページレイアウト上で項目を「必須」に設定するだけで、この要件を満たすことができます。
  • 操作ミスの防止:重要なデータやシステム連携に使用される項目を、一般ユーザーに誤って編集されないように保護する必要があります。ページレイアウトで特定の項目を「参照のみ」に設定することで、データの整合性を保ち、意図しない変更を防ぎます。
  • ユーザーエクスペリエンスの向上:関連性の高い項目をセクションにまとめてグループ化したり、あまり利用されない項目をセクションを折りたたんで非表示にしたりすることで、ページの視認性を高め、ユーザーがスクロールする手間を省き、生産性を向上させることができます。

このように、ページレイアウトは単なる項目の配置ツールではなく、ビジネスプロセスをサポートし、データ品質を維持し、ユーザーの生産性を最大化するための戦略的な機能なのです。


原理説明

ページレイアウトの強力な機能を最大限に活用するためには、その基本的な仕組みと、他のSalesforce機能との関連性を理解することが不可欠です。

ページレイアウトの構成要素

ページレイアウトエディタでは、ドラッグアンドドロップ操作で以下の要素を制御できます。

  • Fields (項目): オブジェクトの項目をページに追加、削除、並べ替えができます。また、各項目に対して「必須」または「参照のみ」のプロパティを設定できます。
  • Sections (セクション): 関連する項目をグループ化するためのコンテナです。セクションは1列または2列で表示でき、ユーザーがセクションを折りたためるように設定することも可能です。
  • Buttons (ボタン): レコードの保存、編集、削除などの標準ボタンや、独自のアクションを定義したカスタムボタンの表示/非表示を制御します。
  • Custom Links (カスタムリンク): 外部のWebサイトや社内システムへ、レコードの情報を含んだURLで遷移するリンクを配置できます。
  • Related Lists (関連リスト): 取引先責任者、商談、ケースなど、そのレコードに関連する他のオブジェクトのレコード一覧です。表示する列、並び順、関連リスト上のボタンをカスタマイズできます。
  • Visualforce Pages: カスタム開発された Visualforce ページをレコードページに埋め込み、標準のUIでは実現できない複雑な機能を提供できます。

ページレイアウトの割り当て

ページレイアウトの最も重要な概念は、その割り当ての仕組みです。どのユーザーにどのページレイアウトが表示されるかは、以下の2つの要素の組み合わせによって決定されます。

ユーザーの Profile (プロファイル) + レコードの Record Type (レコードタイプ) = 表示されるページレイアウト

例えば、「取引先」オブジェクトに「顧客」と「パートナー」という2つのレコードタイプがあるとします。そして、ユーザープロファイルとして「営業」と「パートナー管理」が存在すると仮定します。この場合、以下のような柔軟な割り当てが可能です。

  • 営業プロファイルのユーザーが「顧客」レコードを表示 → 「顧客向け営業レイアウト」を表示
  • 営業プロファイルのユーザーが「パートナー」レコードを表示 → 「パートナー向け営業レイアウト」を表示
  • パートナー管理プロファイルのユーザーが「パートナー」レコードを表示 → 「パートナー管理専用レイアウト」を表示

この仕組みにより、同じオブジェクトであっても、ユーザーの役割やデータの種類に応じて、UIをきめ細かく最適化できるのです。

Lightning Experience におけるページレイアウト

Salesforce Classic とは異なり、Lightning Experience では、レコードページの全体的な構造は Lightning App Builder (Lightning アプリケーションビルダー) を使用して作成される Lightning Record Page (Lightning レコードページ) によって定義されます。ページレイアウトは、このLightning レコードページを構成するコンポーネントの一つとして機能します。

具体的には、ページレイアウトは「レコードの詳細」コンポーネントや「関連リスト」コンポーネントの内容を制御します。Lightning アプリケーションビルダーでは、これらのコンポーネントをタブやアコーディオン内に配置したり、ページのサイドバーに移動させたりと、より柔軟なレイアウト設計が可能です。管理者としては、ページレイアウトとLightning レコードページの両方を理解し、組み合わせて使用することが重要です。


設定とコードによる動的制御

ページレイアウトの管理は主に設定画面から行いますが、開発者と協力する際や、より高度な自動化を検討する際には、Apexコードでレイアウト情報をどのように取得できるかを知っておくと役立ちます。

基本的な設定手順

  1. [設定] から [オブジェクトマネージャ] に移動し、対象のオブジェクトを選択します。
  2. 左側のメニューから [ページレイアウト] をクリックします。
  3. [新規] をクリックするか、既存のレイアウトをコピーして新しいレイアウトを作成します。
  4. パレットから項目、ボタン、関連リストなどをドラッグアンドドロップでページに追加します。
  5. 項目のプロパティ(レンチアイコン)をクリックして、「必須」や「参照のみ」に設定します。
  6. レイアウトを保存した後、[ページレイアウトの割り当て] ボタンをクリックして、各プロファイルとレコードタイプの組み合わせに対して、作成したレイアウトを割り当てます。

Apexによるレイアウト情報の取得例

管理者が直接Apexコードを書くことは少ないかもしれませんが、以下は開発者が特定のページレイアウトの構造(どの項目がどのセクションに含まれているかなど)をプログラムで取得する方法の例です。これにより、例えば、レイアウトに存在する項目に基づいて動的な処理を行うVisualforceページなどを作成できます。

このサンプルコードは、取引先オブジェクトの`Account Layout`という名前のページレイアウト情報を取得し、そのレイアウトに含まれるセクションと項目をデバッグログに出力します。

// SOBjectTypeのスキーマ記述子を取得
Schema.DescribeSObjectResult R = Account.SObjectType.getDescribe();

// レイアウトのマップを取得
Map<String,Schema.DescribeLayoutResult> L = R.getLayouts();

// 'Account Layout' という名前のレイアウトのIDを取得
// 実際の組織では、API参照名(通常は 'Account-Account Layout')を使用する必要があるかもしれません
Id layoutId;
for(String layoutName : L.keySet()){
    if(L.get(layoutName).getName() == 'Account Layout'){
        layoutId = L.get(layoutName).getId();
        break;
    }
}

// レイアウトIDを使用してレイアウト情報を取得
Schema.DescribeLayoutResult layoutResult = Schema.describeLayouts(
    new String[]{'Account'}
).get(0).getLayouts().get(layoutId);


// レイアウトのセクションを反復処理
for(Schema.DescribeLayoutSection section : layoutResult.getSections()) {
    System.debug('Section header: ' + section.getHeading());

    // 各セクションの行を反復処理
    for(Schema.DescribeLayoutRow row : section.getLayoutRows()) {
        // 各行のレイアウト項目を反復処理
        for(Schema.DescribeLayoutItem item : row.getLayoutItems()) {
            if (item.getLayoutComponents() != null) {
                // 各レイアウト項目のコンポーネント(通常は項目)を反復処理
                for(Schema.DescribeLayoutComponent comp : item.getLayoutComponents()){
                    if(comp.getComponentType() == 'Field'){
                        // 項目のAPI名を出力
                        System.debug('Field API Name: ' + comp.getValue());
                    }
                }
            }
        }
    }
}

⚠️ このコードは開発者コンソールの匿名実行ウィンドウで実行することで、特定のページレイアウトの構造をプログラム的に確認できます。管理者が開発者と協力して、UIに連動した複雑な要件を実現する際のコミュニケーションに役立ちます。


注意事項

ページレイアウトを効果的に使用するためには、いくつかの重要な制約と考慮事項を理解しておく必要があります。

Field-Level Security (項目レベルセキュリティ) が最優先

これはSalesforceのセキュリティにおける黄金律です。項目レベルセキュリティ (FLS) は、ページレイアウトよりも常に優先されます。

  • あるプロファイルに対してFLSで項目が「参照不可」に設定されている場合、ページレイアウトでその項目を追加しても、そのプロファイルのユーザーには表示されません。
  • FLSで項目が「参照のみ」に設定されている場合、ページレイアウトで「編集可能」に設定したとしても、ユーザーはその項目を編集できません。
常に「FLSでアクセス権を定義し、ページレイアウトで見せ方を調整する」という順序で考えることが重要です。

Lightning レコードページと Dynamic Forms (動的フォーム)

前述の通り、Lightning ExperienceではページレイアウトはLightning レコードページの一部です。そして近年、Dynamic Forms (動的フォーム) という更に強力な機能が導入されました。動的フォームを使用すると、従来のページレイアウトの「詳細」セクションの制約から解放され、項目やセクションをLightning アプリケーションビルダー上で直接、自由な場所に配置できます。また、特定の条件(例:項目の値がXの場合に、別の項目Yを表示する)に基づいて項目やセクションの表示/非表示を動的に制御できます。新規オブジェクトの作成や既存ページの改修時には、従来のページレイアウトに固執せず、動的フォームの採用を積極的に検討すべきです。

必須項目の設定場所による違い

項目を必須にする方法は2つあり、その挙動は異なります。

  • ページレイアウトでの必須設定: ユーザーがそのページレイアウトを使用してUI経由でレコードを作成・編集する場合にのみ必須となります。データローダーやAPI経由でのデータ作成・更新時には適用されません。
  • 項目定義での必須設定: オブジェクトの項目設定で「常に必須」にチェックを入れると、UI、API、Apexなど、すべての手段においてその項目が必須となります。データの整合性をシステムレベルで保証したい場合は、こちらを選択します。

管理の複雑性

ビジネス要件が増えるにつれて、ページレイアウトとレコードタイプの数が増加し、管理が複雑化する傾向があります。例えば、10個のプロファイルと10個のレコードタイプが存在する場合、最大で100通りのレイアウト割り当てを管理する必要が生じます。レイアウトを新規作成する前には、既存のレイアウトを流用できないか、本当に新しいレイアウトが必要かを慎重に検討し、可能な限りシンプルに保つ努力が必要です。


まとめとベストプラクティス

ページレイアウトは、Salesforce管理者がユーザーの生産性とデータ品質を向上させるために駆使すべき、基本的かつ強力なツールです。その役割は、単に項目を並べることではなく、ビジネスプロセスをUIに反映させることにあります。

以下に、ページレイアウトを効果的に管理・運用するためのベストプラクティスをまとめます。

  1. ユーザー中心の設計を心がける: レイアウトを設計する際は、常にそれを利用するユーザーの視点に立ちましょう。彼らの業務フローを理解し、最も頻繁に利用する情報をページ上部に配置し、関連する項目をセクションでまとめることで、直感的な操作をサポートします。
  2. 一貫性を保つ: 異なるオブジェクト間でも、可能な限りレイアウトの一貫性を保ちましょう。例えば、どのオブジェクトでも「システム情報」セクションはページ下部に配置する、といったルールを設けることで、ユーザーは新しい画面でも迷わず情報を探せるようになります。
  3. シンプルさを追求する: ページに表示される情報が多すぎると、ユーザーは圧倒されてしまいます。本当に必要な項目だけを表示し、使用頻度の低い項目は別のタブや折りたたみセクションに配置するなどして、画面をクリーンに保ちましょう。
  4. Lightningの機能を最大限に活用する: Classicの考え方に固執せず、Lightning アプリケーションビルダーの柔軟性を活用しましょう。タブやアコーディオンコンポーネントを使って情報を整理し、動的フォームを導入して、よりコンテキストに応じたUIを提供することを検討してください。
  5. 文書化を怠らない: なぜそのページレイアウトが作成されたのか、どのようなプロファイルとレコードタイプに割り当てられているのかを文書として残しておきましょう。これは、将来の自分自身や他の管理者がメンテナンスを行う際に、非常に役立ちます。
  6. 定期的に見直しを行う: ビジネスは常に変化します。半年に一度、あるいは年に一度は、既存のページレイアウトが現在のビジネスプロセスに適合しているかを見直す機会を設け、不要になった項目の削除や、新しい要件に合わせた調整を行いましょう。

これらのベストプラクティスを実践することで、あなたはSalesforceプラットフォームの価値を最大限に引き出し、ユーザーから信頼される優れたSalesforce管理者となることができるでしょう。

コメント