Skip to main content

Winter '23 の認定 Platform デベロッパー資格の更新

学習の目的

この単元を完了すると、次のことができるようになります。

  • API バージョン 54.0 でのフローおよびプロセス実行時の改善を利用する。
  • 組織固有のドメインのホスト名および情報を操作する。
  • 新規アラート、確認、プロンプトモジュールを使用して通知を作成する。
  • 組織シェイプを使用してスクラッチ組織の作成を簡易化する。
  • 新しいモーダルコンポーネントでオーバーレイを作成する。
  • Apex から呼び出し可能なアクションをコールする。

Salesforce 認定資格

認定 Platform デベロッパー資格を保有している場合、その認定資格を維持するためには期日までにこのモジュールを修了する必要があります。資格を維持するためのもう 1 つ重要な点は、Trailhead アカウントと Webassessor アカウントをリンクさせておくことです。

この資格の取得を検討している方は、Salesforce Platform デベロッパーの資格を参照してください。

メモ

このバッジは誰でも取得できますが、このモジュールは認定 Platform デベロッパーの有資格者を対象としています。

認定資格の機密を守る

質の高い認定試験を実施し、価値ある資格を認定することは Salesforce の最優先事項です。業界随一と広く認められている認定資格制度を維持するためには、試験のセキュリティを確保し、その機密を保持することが不可欠です。

Salesforce 認定資格プログラムに参加する場合は、「Salesforce 認定資格プログラム同意書」に同意いただく必要があります。詳細は、Trailhead ヘルプ記事「Salesforce 認定資格プログラム同意書および行動規範」に記載の Salesforce 認定資格試験の受験ポリシーを確認してください。

この 1 年間に多数の機能が強化されています。ここでは、特に重要なものについて説明します。

API バージョン 54.0 でのフローおよびプロセス実行時の改善を利用する

この更新は、API バージョン 54.0 以降で実行されるように設定されているフローとプロセスにのみ影響します。バージョン管理された更新では、都合に合わせてフローおよびプロセスごとに実行時の動作の変更をテストおよび採用できます。フローの実行時 API バージョンを変更するには、Flow Builder でフローを開いて、[別名で保存][詳細を表示] の順にクリックします。[フローを実行するための API バージョン]、[保存] の順に選択して、フローを有効化します。プロセスの実行時 API バージョンを変更するには、プロセスビルダーでプロセスを開いて、そのプロパティを編集します。

対象: この変更は、Essentials Edition、Professional Edition、Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition の Lightning Experience、Salesforce Classic、およびすべてのバージョンのモバイルアプリケーションに適用されます。

エンタイトルメントの実行前に実行されるようになった保存後レコードトリガーフロー

保存後フロー、エンタイトルメントの順に実行されるようになったため、エンタイトルメントに保存後フローで行われるレコードの更新を含めることができるようになりました。API バージョン 53.0 以前では、エンタイトルメントの実行後も保存後レコードトリガーフローが実行されていました。

API バージョン 54.0 では、プロセスビルダーでプロセスが作成された直後に保存後フローが実行されるようになり、その間にエンタイトルメントが実行されなくなりました。プロセスからフローに移行する Salesforce システム管理者は、この変更によってエンタイトルメントの一貫性の高い結果を得られます。

承認および時間ベースのワークフロー項目自動更新で実行されるようになった保存前および保存後レコードトリガーフロー

ワークフロールールの承認プロセスおよび時間ベースのアクションに関連付けられている項目自動更新アクションで保存前および保存後レコードトリガーフローが実行されるようになり、これらの項目自動更新アクションでフローの自動化を組み込むことができるようになりました。API バージョン 53.0 以前では、これらの項目自動更新アクションでフローが実行されないため、特定のレコードの更新で対応するフローがトリガーされません。プロセスビルダーで作成されたワークフロールールおよびプロセスには影響ありません。

この変更により、フローの実行頻度が若干増え、Apex の実行時に必ずフローが実行されるようになりました。この違いは、時間ベースのワークフローおよび承認の実行で最も如実に現れます。他の種別の保存操作の場合、影響はありません。

フロートリガーは、トランザクションごとにエンティティあたりの 1 回のみ実行されます。レコードが更新されても、同じエンティティでフロートリガーが 2 回実行されることはありません。また、データインポートウィザードを使用して、インポートされたレコードが条件を満たしたときにワークフロールールおよびプロセスをトリガーするように指定した場合も、フロートリガーが実行されます。

これらの変更により、保存前および保存後レコードトリガーフローが実行されるさまざまなシナリオを理解しやすくなります。たとえば、項目自動更新アクションの発生時に、フローの実行条件を簡単に確認できるようになりました。

無効なレコード変数を参照する [レコードを更新] 要素で送信されるようになったフローエラーメール

レコード変数の無効なレコード ID を参照する [レコードを更新] 要素がフローで実行されると、エラーメールが送信されます。以前は、フローエラーメールが送信されませんでした。

組織固有のドメインのホスト名および情報を操作する

ブランド変更により組織の [私のドメイン] 名を変更する場合、または拡張ドメインを有効にする場合、Salesforce でホストされる組織のドメインが変更されます。これらの変更からコードを隔離するには、新しい System.DomainCreator Apex クラスを使用してこれらのドメインのホスト名を決定します。

新しい System.Domain クラスを使用して、Salesforce によってホストされる組織のドメインに関する情報を取得することもできます。または、新しい System.DomainParser クラスを使用して、URL またはホスト名を使用して関連付けられたドメインに関する情報を取得します。

対象: この変更は、Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition の Lightning Experience および Salesforce Classic に適用されます。

System.DomainCreator クラス

Salesforce によってホストされる組織のドメインのホスト名を決定するには、新しい System.DomainCreator クラスのメソッドを使用します。

たとえば、getOrgMyDomainHostname() メソッドは組織の [私のドメイン] ログイン URL のホスト名を返し、getLightningHostname() メソッドは組織の Lightning ページのホスト名を返します。また、getExperienceCloudSitesHostname() メソッドは、組織の Experience Cloud サイトのシステム管理ドメインのホスト名を返します。

System.Domain クラス

Salesforce によってホストされる組織のドメインに関する情報を取得するには、新しい System.Domain クラスのメソッドを使用します。

たとえば Sandbox ドメインの場合、getSandboxName() メソッドは Sandbox の名前を返します。また、getDomainType() メソッドは関連付けられた System.DomainType 列挙値を返します。これは、CONTENT_DOMAINEXPERIENCE_CLOUD_SITES_DOMAINLIGHTNING_DOMAIN などのドメインの種別を表します。

System.DomainParser クラス

URL またはホスト名を使用して Salesforce によってホストされる組織のドメインのホスト名を決定するには、新しい System.DomainParser クラスのメソッドを使用します。

parse(hostname) メソッドを使用して、組織の Salesforce 所有のホスト名 (MyDomainName.my.site.com など) を解析し、ドメインに関する情報を抽出します。parse(url) メソッドを使用して、組織の Salesforce URL (https://MyDomainName.my.site.com など) を解析します。

新規アラート、確認、プロンプトモジュールを使用した通知を作成する

ネイティブ API の代わりに新しいモジュール LightningAlertLightningConfirmLightningPrompt を使用して、Lightning Web コンポーネントから通知を作成します。Chrome と Safari で window.alert()window.confirm()window.prompt() ネイティブ API のクロスオリジン使用に対するサポートの終了が予定されています。それぞれの新しいモジュールでは対応する API と同様に機能し、クロスオリジン iframe で動作するモーダルが作成されます。

対象: この変更は、すべてのエディションの Lightning Experience とすべてのバージョンの Salesforce モバイルアプリケーションに適用されます。

方法: window.*() API と異なり、これらのモジュールの .open() 関数はページでの実行を停止せず、それぞれが Promise を返します。モーダルが閉じた後で実行するコードには async/await または .then() を使用します。

以下の例では、Lightning Web コンポーネントでの LightningAlertLightningConfirmLightningPrompt の使用方法を示しています。lightning:alertlightning:confirmlightning:prompt コンポーネントでの Aura 構文の使用例については、「新規追加または変更された Aura コンポーネント」を参照してください。

次の例では、エラーメッセージと [OK] ボタンが含まれるアラートモーダルを作成します。.open() 関数は、ユーザーが [OK] をクリックしたとき解決する Promise を返します。

<!-- c/myApp.html -->
<template>
    <lightning-button onclick={handleAlertClick} label="Open Alert Modal">
    </lightning-button>
</template>
// c/myApp.js
import { LightningElement } from 'lwc';
import LightningAlert from 'lightning/alert';
export default class MyApp extends LightningElement {
    async handleAlertClick() {
        await LightningAlert.open({
            message: 'this is the alert message',
            theme: 'error', // a red theme intended for error states
            label: 'Error!', // this is the header text
        });
        //Alert has been closed
    }
}

次の例では、[OK] と [キャンセル] の 2 つのボタンが含まれるヘッダーのない確認モーダルを作成します。.open() 関数は、ユーザーが [OK] をクリックしたときには true に解決し、[キャンセル] をクリックしたときには false に解決する Promise を返します。

<!-- c/myApp.html -->
<template>
    <lightning-button onclick={handleConfirmClick} label="Open Confirm Modal">
    </lightning-button>
</template>
// c/myApp.js
import { LightningElement } from 'lwc';
import LightningConfirm from 'lightning/confirm';
export default class MyApp extends LightningElement {
    async handleConfirmClick() {
        const result = await LightningConfirm.open({
            message: 'this is the prompt message',
            variant: 'headerless',
            label: 'this is the aria-label value',
            // setting theme would have no effect
        });
        //Confirm has been closed
        //result is true if OK was clicked
        //and false if cancel was clicked
    }
}

次の例では、ヘッダー、メッセージ、2 つのボタンが含まれるプロンプトモーダルを作成します。ユーザーがテキストを入力してプロンプトで [OK] をクリックした場合、.open() 関数は入力値に解決する Promise を返しますが、ユーザーが [キャンセル] をクリックした場合は null に解決します。

<!-- c/myApp.html -->
<template>
    <lightning-button onclick={handlePromptClick} label="Open Prompt Modal">
    </lightning-button>
</template>
// c/myApp.js
import { LightningElement } from 'lwc';
import LightningPrompt from 'lightning/prompt';
export default class MyApp extends LightningElement {
    handlePromptClick() {
        LightningPrompt.open({
            message: 'this is the prompt message',
            //theme defaults to "default"
            label: 'Please Respond', // this is the header text
            defaultValue: 'initial input value', //this is optional
        }).then((result) => {
            //Prompt has been closed
            //result is input text if OK clicked
            //and null if cancel was clicked
        });
    }
}

組織シェイプを使用してスクラッチ組織の作成を簡易化する

機能、設定、エディション、制限、ライセンスによって、いわゆる組織のシェイプが決まります。本番組織の機能と設定を反映したスクラッチ組織定義を作成するのは容易ではないことは理解しています。スクラッチ組織の組織シェイプを使用すれば、スクラッチ組織定義の作成をお任せいただけます。組織のシェイプを取得したら、このシェイプに基づいてスクラッチ組織を作成できます。

対象: この変更は、Developer Edition、Group Edition、Professional Edition、Enterprise Edition、Unlimited Edition の Lightning Experience、Salesforce Classic、およびすべてのバージョンのモバイルアプリケーションに適用されます。

方法: ソース組織と Dev Hub 組織の両方で [スクラッチ組織の組織シェイプ] を有効にします。これらの組織の組織シェイプの設定ページへのアクセス権がない場合、Salesforce システム管理者にお問い合わせください。

新しいモーダルコンポーネントでオーバーレイを作成する

モーダルを使用してユーザーのワークフローを中断し、重要なメッセージに注意を向けます。現在のアプリケーションウィンドウの上にメッセージを表示するモーダルでは、アプリケーションの制御を取り戻すにはユーザーが操作する必要があります。

対象: この機能は、すべてのエディションの Lightning Experience で使用できます。

方法: モーダルコンポーネントを作成するには、JavaScript ファイルの lightning/modal から LightningModal をインポートします。次に、LightningModal を拡張するコンポーネントクラスを作成します。

/* c/myModal.js */
import { api } from 'lwc';
import LightningModal from 'lightning/modal';
export default class MyModal extends LightningModal {
    handleOkay() {
        this.close('okay');
    }
}

このコンポーネントは lightning-modal タグを使用しません。代わりに、モーダルの HTML テンプレートはヘルパー lightning-modal-* コンポーネントを使用して、モーダルのヘッダー、フッター、および本文を作成します。lightning-modal-body コンポーネントは必須で、その他は省略可能です。

<!-- c/myModal.html -->
<template>
    <lightning-modal-header label="My Modal Heading"></lightning-modal-header>
    <lightning-modal-body>This is the modal’s contents.</lightning-modal-body>
    <lightning-modal-footer>
        <lightning-button label="OK" onclick={handleOkay}></lightning-button>
    </lightning-modal-footer>
</template>

Apex から呼び出し可能なアクションをコールする

Invocable.Action は、Apex コードから呼び出し可能なアクションをコールできる新しい Apex クラスです。

対象: この変更は、Enterprise Edition、Unlimited Edition、Developer Edition、Database.com Edition の Lightning Experience および Salesforce Classic に適用されます。

方法: Apex コードで Invocable.Action を参照します。

たとえば、次のクラスは、標準の呼び出し可能なアクション chatterPost をコールして、メッセージを現在のユーザーのフィードに投稿しています。 

public class MyApexClass {
    public void postToChatter(String recordId) {
        Invocable.Action action = Invocable.Action.createStandardAction('chatterPost');
        action.setInvocationParameter('text', 'This is an example Chatter post.');
        action.setInvocationParameter('subjectNameOrId', recordId);
        List<Invocable.Action.Result> results = action.invoke();
        if (results.size() > 0 && results[0].isSuccess()) {
            System.debug('Created feed item with ID: ' +
            results[0].getOutputParameters().get('feedItemId'));
        }
    }
}

次のクラスは、入力値の 2 倍の数値を返す、Doubler という名前のカスタムの呼び出し可能なアクションをコールしています。

public class MyApexClass {
    public void doubler (Double input) {
        Invocable.Action action = Invocable.Action.createCustomAction('apex', 'Doubler');
        action.setInvocationParameter('input', 1);
        List<Invocable.Action.Result> results = action.invoke();                                          
        if (results.size() > 0 && results[0].isSuccess()) {
            System.debug('Result is: ' + results[0].getOutputParameters().get('output'));
        }
    }
}

リソース

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる