見出し画像

Salesforce認定Platformデベロッパー100題 過去問+模擬問題集 全問解答解説付き(即わかる)


Salesforce認定Platformデベロッパーの過去問+模擬問題100題を全問解答+全問解説しています。

この問題集では、正解、不正解の選択肢全てに解説を付けています。
初学者でもわかりやすく学習可能です。

Salesforce認定Platformデベロッパーとは

Salesforce認定Platformデベロッパーは、Salesforceプラットフォーム上でカスタムアプリケーションの開発に関する知識と技能を持つ個人に与えられる資格です。
開発者がApex、Visualforce、Lightningコンポーネントフレームワークなど、Salesforceのカスタム開発ツールを使用してビジネス要件を満たすソリューションを設計、構築、デプロイできる能力を持っていることを証明します。認定を取得するには、Salesforceプラットフォームでのアプリケーション開発に関する幅広い知識をカバーする試験に合格する必要があります。

試験範囲は?

以下出題の範囲が公開されています

試験範囲には以下のトピックが含まれます:

  1. Salesforceの基礎:

  2. データモデリングと管理:

  3. ロジックとプロセスの自動化:

  4. ユーザーインターフェースのカスタマイズ

  5. テスト

  6. デプロイメント

  7. デバッグとパフォーマンスの最適化

  8. Salesforceのデータ管理

  9. 統合


ここから問題と解答/解説になります。

過去問と模擬問題がセットになっており、模擬試験としても活用できます。

初めの10題のみ無料、合計100題、全問解答+全問解説付きになります。



1.Salesforceでカスタムオブジェクトのレコードを非同期に処理するための最適なアプローチを選択しなさい。バッチ処理が必要とされ、大量のデータレコードに対して複雑なビジネスロジックを適用する必要があるシナリオを想定しています。

A. Apexトリガーを使用して、データの変更時にロジックを同期的に実行します。
B. @futureアノテーションを持つメソッドを使用して、処理を非同期に実行します。
C. Queueable Apexを使用して、ジョブをキューに入れ、非同期に処理します。
D. Database.Batchableインタフェースを実装したApexクラスを使用して、バッチ処理を行います。



正解は D.

解説: A. Apexトリガーを使用して、データの変更時にロジックを同期的に実行するアプローチは、リアルタイムでのデータ操作に適していますが、大量のデータに対する複雑なビジネスロジックを効率的に処理するには適していません。非同期処理には不向きです。

B. @futureアノテーションを持つメソッドは、非同期処理を可能にしますが、各@futureメソッド呼び出しは独立しており、大量のデータを扱うバッチ処理には向いていないため、このシナリオには最適ではありません。

C. Queueable Apexは非同期処理のためのもう一つの選択肢であり、より複雑な非同期処理や状態の保持が必要な場合に有用です。しかし、大量のデータレコードに対して複雑なビジネスロジックを適用するバッチ処理の要件を考えると、Database.Batchableインタフェースを実装したApexクラスの方が適しています。

D. Database.Batchableインタフェースを実装したApexクラスは、大量のデータに対して複雑なビジネスロジックを適用するバッチ処理のシナリオに最適です。このアプローチにより、大量のレコードを小さなバッチに分割して処理することができ、システムのリソースを効率的に使用しながら、処理を非同期に実行できます。


2.Salesforce Lightningコンポーネントで、親コンポーネントから子コンポーネントへのデータ伝達の最も効率的な方法を選択しなさい。このシナリオでは、動的に変化するデータを子コンポーネントに渡し、子コンポーネントでの表示を更新する必要があります。

A. Applicationイベントを使用して、データを子コンポーネントに伝達します。
B. Componentイベントを使用して、データを子コンポーネントに伝達します。
C. @apiデコレータを使用して、子コンポーネントの公開プロパティを通じてデータを渡します。
D. Auraメソッドを使用して、子コンポーネントのメソッドを呼び出し、データを渡します。



正解は C

解説: A. Applicationイベントは、コンポーネント間でデータを伝達する一つの方法ですが、このイベントはアプリケーション全体にブロードキャストされるため、特定の親子関係においてデータを伝達する最も効率的な方法ではありません。主にアプリケーションレベルでの広範囲のイベント通知に適しています。

B. Componentイベントは、親子間の密接なコンポーネント階層内でのイベント伝達に適しています。しかし、動的に変化するデータを効率的に子コンポーネントに渡すためには、@apiデコレータを使用したアプローチがより直接的でシンプルです。

C. @apiデコレータを使用して公開プロパティを定義することにより、親コンポーネントから子コンポーネントへのデータ伝達が非常に効率的になります。この方法では、親コンポーネントのプロパティが変更されると自動的に子コンポーネントの表示も更新されるため、動的なデータ更新に最適です。

D. Auraメソッドを使用するアプローチは、特定のメソッドを介して子コンポーネントにデータを渡す方法です。この方法もデータ伝達には有効ですが、@apiデコレータを使用してデータバインディングを行うアプローチに比べて、動的なデータの更新においては直接的ではなく、やや複雑になる可能性があります。


3.Salesforce LightningコンポーネントでカスタムUIを構築する際に、コンポーネント間のデータ通信を実現するための最も効果的な方法はどれですか?

A. Apexコントローラを介してデータベースからデータを取得し、親コンポーネントを通じて子コンポーネントにデータを渡します。
B. Applicationイベントを使用して、任意のコンポーネント間でデータを公開し、受信します。
C. Componentイベントを使用して、密接に関連するコンポーネント間(主に親子関係)でデータを公開し、受信します。
D. Lightningメッセージサービスを使用して、異なる Lightningコンポーネント間でメッセージを公開し、受信します。



問題解答: 正解は D. Lightningメッセージサービスを使用して、異なる Lightningコンポーネント間でメッセージを公開し、受信します。

解説: A. Apexコントローラを介してデータベースからデータを取得し、親コンポーネントを通じて子コンポーネントにデータを渡す方法はデータ通信には有効ですが、これは主にサーバーサイドのデータ取得や親子コンポーネント間でのデータ受け渡しに限定され、広範囲のコンポーネント間通信には最適ではありません。

B. Applicationイベントを使用する方法は、任意のコンポーネント間でのデータ通信に有効ですが、このタイプのイベントはLightning Web Components(LWC)では利用できず、Aura Components専用であるため、すべてのLightningコンポーネント間での通信手段としては限定的です。

C. Componentイベントを使用する方法は、親コンポーネントとその子コンポーネント間での通信に適していますが、兄弟コンポーネント間や全く関連のないコンポーネント間での通信には適していません。

D. Lightningメッセージサービスは、異なる Lightningコンポーネント間(Aura Components、Lightning Web Components、および Visualforceページ)でのメッセージの公開と受信を可能にする新しい機能です。これにより、緩やかに結合されたコンポーネント間で効率的にデータをやり取りできるため、このシナリオで最も効果的な方法とされます。このサービスは、複数のコンポーネントが同じページ上で独立して動作する一方で、必要に応じて互いに通信することを可能にします。


4.値「高」、「中」、および「低」は、異なるオブジェクトにわたる複数の選択リストの共通値として識別されます。選択リストとその値のメンテナンスを合理化すると同時に、値を上記のものに制限するために開発者が取ることができるアプローチは何ですか?

A.各オブジェクトに選択リストを作成し、値を含むグローバル選択リスト値セットを使用します。
B.各オブジェクトの選択リストを必須項目として作成し、[入力した順序ではなくアルファベット順に値を表示する]を選択します。
C.それぞれに選択リストを作成し、入力規則を追加してデータの整合性を確保します。
D.各オブジェクトに選択リストを作成し、「選択リストを値セットで定義された値に制限する」を選択します。



正解:A

解説:
A. グローバル選択リスト値セットを使用することで、複数のオブジェクトにわたって共通の選択リスト値を維持しやすくなります。これにより、値「高」、「中」、「低」を一元管理でき、新しいオブジェクトの選択リストで同じ値セットを再利用することが可能になります。これはメンテナンスを大幅に合理化し、データの一貫性を保証する最も効率的な方法です。

B. 選択リストの値をアルファベット順に表示するオプションは、ユーザーインターフェイスの改善に役立ちますが、異なるオブジェクトにわたる選択リストの値の共通性やメンテナンスの合理化には直接的には貢献しません。

C. 選択リストを作成し、入力規則を使用してデータの整合性を確保するアプローチは、データ入力の正確性を高めるのに役立ちますが、異なるオブジェクト間で選択リストの値を一元管理する方法ではありません。入力規則は、特定の条件を満たさないデータの保存を防ぐために使用されますが、選択リスト値のメンテナンスを合理化することには直接寄与しません。

D. 「選択リストを値セットで定義された値に制限する」オプションは、選択リストの値を事前定義されたリストに制限するために使用されますが、この表現はSalesforceの実際の機能を正確に反映していません。正しいアプローチは、グローバル選択リスト値セットを使用して値を一元管理することです。


5.開発者がキュー可能なインターフェイスを持つクラスのエンキュージョブのステータスを取得できる2つの方法は何ですか?
2つ答えを選択してください

A.apexジョブページを表示する
B.AsyncApexJobeオブジェクトを照会します
C.apex flexキューを表示します
D.apexステータスページの表示



正解:B,C

解説:

A: apexジョブページを表示する - これはユーザーがSalesforceのセットアップメニューからアクセスできるUIベースのページであり、現在および過去のApexジョブのステータスを確認することができます。ただし、プログラムでステータスを取得する方法ではありません。
B: AsyncApexJobオブジェクトを照会する - これは正しい方法の一つです。開発者はSOQLを使用してAsyncApexJobオブジェクトを照会し、バックグラウンドで実行されているApexジョブ(バッチApex、スケジュールされたApex、およびキュー可能なApexを含む)のステータスやその他の詳細情報を取得できます。
C: apex flexキューを表示する - これも正しい方法です。Flexキューを使用すると、開発者はキュー可能なApexジョブのキューを管理し、実行を待機しているジョブのステータスを確認できます。
D: apexステータスページを表示する - これは特定の「Apexステータスページ」を指しているようですが、Apexジョブのステータスをプログラムで取得するための標準的な方法ではありません。通常はUIを介してのみアクセスされるページを指します。


6.Salesforce Lightning Platform上で実行されるApexクラスにおいて、開発者が非同期処理を実装する必要が生じました。この処理は、大量のデータに対する時間がかかる操作を行い、システムのパフォーマンスに影響を与えずに完了する必要があります。この要件を満たすために、開発者が選択すべき最適なアプローチはどれですか?

A. @futureアノテーションを使用してメソッドを非同期に実行します。
B. Queueable Apexを使用してジョブをキューに追加します。
C. Batch Apexを使用してデータをバッチ処理します。
D. Schedulable Apexを使用して定期的なジョブをスケジュールします。



正解: C. Batch Apexを使用してデータをバッチ処理します。

解説: A. @futureアノテーションを使用してメソッドを非同期に実行するアプローチは、小規模な非同期処理には適していますが、大量のデータ処理に関しては限られたガバナ制限があり、この特定のシナリオで要求されるような時間がかかる処理には最適ではありません。

B. Queueable Apexを使用してジョブをキューに追加するアプローチは、より柔軟な非同期処理を提供し、状態を保持する能力があるため、@futureよりも進んでいます。しかし、大量のデータに対する複雑な処理を行う場合には、Batch Apexの方がより適しています。

C. Batch Apexを使用してデータをバッチ処理するアプローチは、大量のレコードに対して時間がかかる操作を効率的に実行するために特別に設計されています。Batch Apexは、大規模なデータセットを小さなチャンクに分割して処理し、システムリソースの制限内で実行を最適化します。このシナリオでの要件を完全に満たしています。

D. Schedulable Apexを使用して定期的なジョブをスケジュールするアプローチは、特定の時間に基づいてApexコードを実行する場合に適していますが、このシナリオでは、非同期処理の要件に直接対応しているわけではありません。定期的なジョブは、バッチ処理やキュー処理とは異なり、特定のスケジュールに従って実行されるタスクに適しています。


7.匿名Apexコードを実行するための2つのユースケースは何ですか? 2つ答えを選択してください

A.展開後の1回のトランザクションで15,000の非アクティブな取引先を削除するには
B.Apexクラスを定期的に実行するようにスケジュールする
C.ユニットテストコードカバレッジを組織に追加する
D.バッチApexクラスを実行して、すべての取引先責任者を更新


正解:B,D

解説:

B. Apexクラスを定期的に実行するようにスケジュールする: 匿名Apexは、特定のタスクやデータの操作を迅速に行うための一時的なコードを実行するのに役立ちます。したがって、特定のApexクラスやメソッドを手動で実行する場合や、データを修正するための一時的なコードを実行する場合に、匿名Apexを使用することができます。

D. バッチApexクラスを実行して、すべての取引先責任者を更新: 匿名Apexを使用して、バッチApexクラスをすぐに起動することができます。この方法で、特定のデータの変更や修正をすぐに反映するために、バッチ処理を即時に実行することができます。


8.Universal Containersは、開発者を雇って、ユーザーが必要な取引先を見つけるのに役立つカスタム検索ページを作成します。ユーザーは、名前、説明、およびカスタムコメント項目で検索できるようになります。
SOQLとSOSLのどちらを使用するかを決定する際に、開発者はどの考慮事項に注意する必要がありますか?
2つ答えを選択してください

A.SOQLはテキスト検索の方が高速です。
B.SOSLはより多くのレコードを返すことができます。
C.テント検索ではSOSLの方が高速です。
D.SOQLはより多くのレコードを返すことができます。

正解:C,D

解説:

C. テキスト検索ではSOSLの方が高速です: SOSL(Salesforce Object Search Language)は、Salesforce組織の複数のオブジェクトにまたがるテキストベースの検索に特化しています。特に大量のデータを対象にテキストベースでの検索を行う場合、SOSLはSOQLよりもパフォーマンスが優れています。

D. SOQLはより多くのレコードを返すことができます: SOQL(Salesforce Object Query Language)は特定のオブジェクトからのデータのクエリに特化しています。SOQLクエリの結果の最大レコード数は通常、SOSL検索の最大レコード数よりも多いです。


9.開発者はAccountオブジェクトにトリガーを作成し、トリガーが適切にバルク項目であるかどうかをテストしたいと考えています。開発者チームは、一意の名前を持つ200の取引先レコードを使用してトリガーをテストする必要があると判断しました。
最小限のコードで単体テスト内にテストデータを作成するには、どの2つのことを行う必要がありますか?
2つ答えを選択してください

A.Test.loadDataを使用して、テストメソッドにデータを入力します。
B.テストクラスで@isTest(seeAllData = true)アノテーションを使用します。
C.テストクラスで@isTest(isParallel = true)アノテーションを使用します。
D.テストデータを含む静的リソースを作成します。

正解:A,D

解説:
A. Test.loadDataを使用して、テストメソッドにデータを入力します: Test.loadDataメソッドは、テストクラスで使用するテストデータをCSVファイルから読み込むためのものです。このCSVファイルは、静的リソースとしてSalesforce組織に保存されている必要があります。テストクラス内でTest.loadDataメソッドを使用することで、最小限のコードで大量のテストデータを読み込むことができます。

D. テストデータを含む静的リソースを作成します: Aのオプションと関連して、テストデータをCSV形式で静的リソースとして保存することができます。その後、Test.loadDataメソッドを使用して、この静的リソースからテストデータを読み込むことができます。


10.Salesforceで新しいカスタムオブジェクトを作成し、そのオブジェクトに関連するレコードを効率的に管理するために、開発者はどの種類の項目を使用してレコード間の関係を設定するべきですか?

A. 数式項目
B. 参照項目
C. テキストエリア項目
D. チェックボックス項目



正解: B. 参照項目

解説: A. 数式項目は、他の項目の値に基づいて動的に計算される値を表示するために使用されます。これは、レコード間の関係を設定するための項目ではありませんが、既存のデータに基づいて新しい値を導出する際に役立ちます。

B. 参照項目は、2つのオブジェクト間の単純な参照関係を作成するために使用されます。これにより、1つのオブジェクトのレコードが別のオブジェクトのレコードを参照できるようになり、関連するデータ間でナビゲーションを可能にします。参照項目は、レコード間の関係を設定するために最も適しています。

C. テキストエリア項目は、長いテキストを入力するために使用される項目です。これは、レコード間の関係を設定する目的では使用されません。

D. チェックボックス項目は、ブール値(真/偽)を持つ単純な項目で、レコードが特定の条件を満たしているかどうかを示すのに使用されます。これも、レコード間の関係を設定するための項目ではありません。

ここから先は

73,277字

¥ 2,000

この記事が気に入ったらサポートをしてみませんか?