Mark Hammer's Blog

SalesforceやTrailheadに関する情報を投稿しているブログです。

Trailhead モジュール:Lightning データサービスの基本

※この内容は2018/5時点のものです。

Lightning データサービスの使用開始

https://trailhead.salesforce.com/ja/modules/lightning_data_service/units/lightning_data_service_get_started

  • 説明:日本語
  • Challenge:日本語選択問題

force:recordData を使用したレコードの操作

https://trailhead.salesforce.com/ja/modules/lightning_data_service/units/lightning_data_service_manipulate_records

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 取引先レコード表示用コンポーネントとなる「accDisplay.cmp」Lightningコンポーネントを作成してください。
    • レコードを表示するための record属性に「accountRecord」と名付けてください。
    • 取引先名(Name)項目を lightning:card を用いて表示してください。
    • 業種(Industry), 説明(Description) の各項目を lightning:formattedText を用いて表示してください。
    • 電話(Phone) 項目を lightning:formattedPhone を用いて表示してください。
  • 取引先レコード編集用コンポーネントとなる「accEdit.cmp」Lightningコンポーネントを作成してください。
    • レコードを表示するための record属性に「accountRecord」と名付けてください。
    • UI要素として以下を追加してください。
      • 取引先名(Name)項目:lightning:input を用いてください。表示ラベルは "Account Name" としてください。
      • 保存用ボタン:lightning:button を用いてください。表示ラベルは "Save Account" としてください。
  • Salesforce UI に、Lightningアプリケーションビルダーを用いて取引先レコードページにaccDisplay.cmp と accEdit.cmp を追加してください。
    必要に応じて「Lightning アプリケーションビルダー」モジュールを参照してください。

レコードの変更およびエラーの処理

https://trailhead.salesforce.com/ja/modules/lightning_data_service/units/lightning_data_service_handle_notifications

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • コンポーネントで行われた編集が無効な場合、accEdit コンポーネントにてエラーメッセージを表示するよう変更してください。
  • エラーメッセージを保持する属性の名前は「recordSaveError」としてください。

Trailhead モジュール:Lightning コンポーネントの基本

※この内容は2018/5時点のものです。

始める前に

https://trailhead.salesforce.com/ja/modules/lex_dev_lc_basics/units/lex_dev_lc_basics_prereqs

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • [私のドメイン] にてカスタムドメインを組織へ追加してください。
    • ※筆者注:Trailhead Playground 組織を利用する場合は、既に追加済みのため対応する必要はありません。
  • カスタムオブジェクト「Expense」を(英語側の)ユニット本文に従い、以下内容で作成してください。
    • 表示ラベル:Expense
    • 表示ラベル(複数形):Expenses
    • 母音で始まる場合はチェック:チェックを入れる
    • API 参照名:Expense__c

※筆者注:設定項目に「表示ラベル(複数形)」が表示されない場合は、組織情報にて言語のデフォルト値を「英語」に設定してください。

  • カスタムオブジェクト「Expense」に、(英語側の)ユニット本文に従い、以下のカスタム項目を作成してください。
    • データ型:通貨、項目の表示ラベル:Amount、API参照名:Amount__c、文字数:16、小数点の位置:2
    • データ型:テキスト、項目の表示ラベル:Client、API参照名:Client__c、文字数:50
    • データ型:日付、項目の表示ラベル:Date、API参照名:Date__c
    • データ型:チェックボックス、項目の表示ラベル:Reimbursed、API参照名:Reimbursed__c
  • カスタムオブジェクト「Camping Item」を作成し、以下項目を設定してください。
    • Name:カスタムオブジェクト作成時に設定するレコード名
    • データ型:数値、項目の表示ラベル:Quantity、API参照名:Quantity__c、文字数:18、小数点の位置:0、必須項目:チェックを入れる
    • データ型:通貨、項目の表示ラベル:Price、API参照名:Price__c、文字数:16、小数点の位置:2、必須項目:チェックを入れる
    • データ型:チェックボックス、項目の表示ラベル:Packed、API参照名:Packed__c、デフォルト値:チェックなし

Lightning コンポーネントの使用開始

https://trailhead.salesforce.com/ja/modules/lex_dev_lc_basics/units/lex_dev_lc_basics_intro

  • 説明:日本語
  • Challenge:日本語選択問題

Lightning コンポーネントの作成および編集

https://trailhead.salesforce.com/ja/modules/lex_dev_lc_basics/units/lex_dev_lc_basics_create

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 「Bug Spray」、「Bear Repellant」、「Goat Food」を含めた順序付きリストを持つLightningコンポーネント「campingList」を作成してください。
  • 「Camping List」という文字列をH1タグを使い、フォントサイズ:18で表示するLightningコンポーネント「campingHeader」を作成してください。
  • 上記「campingList」、「campingHeader」コンポーネントを含むLightningコンポーネント「camping」を作成してください。

属性と式

https://trailhead.salesforce.com/ja/modules/lex_dev_lc_basics/units/lex_dev_lc_basics_attributes_expressions

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • Lightningコンポーネント「campingListItem」を作成してください。
  • 「campingListItem」コンポーネントに以下属性を追加してください。
    • name属性:item
    • type属性:Camping_Item__c
    • この属性は必須としてください。
  • 「Name」、 「Price」、 「Quantity」、 「Packed」の各項目を式を用いて表示してください。
  • 「Price」、 「Quantity」の各項目を表示する際は、適切な書式を設定してください。
  • 「Packed」項目を表示する際は、切り替え形式のチェックボックス(toggle)の書式を設定してください。

コントローラを使用したアクションの処理

https://trailhead.salesforce.com/ja/modules/lex_dev_lc_basics/units/lex_dev_lc_basics_controllers

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 前のChallengeで作成した「campingListItem」コンポーネントに、以下のボタンを作成してください。
    • ラベル(label): Packed!
    • 呼び出すコントローラ関数: packItem
  • コントローラ関数に、以下を実行するよう実装してください。
    • item属性のPacked項目に対し、Trueを設定する。
    • ボタンを無効にするため、disabled属性に対し、Trueを設定する。

フォームを使用したデータの入力

https://trailhead.salesforce.com/ja/modules/lex_dev_lc_basics/units/lex_dev_lc_basics_forms

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 「campingHeader」コンポーネントをlightning:layoutやSLDSを用いて、以下のように変更してください。
    • このユニットのソースコードを参考に、「slds-page-header」の中にH1タグにある「Camping List」を入れてください。
    • lightning:iconを用いて「action:goal」SLDSアイコンを追加してください。
  • 「campingList」コンポーネントを、新規アイテム追加フォームの表示、及び追加したアイテムを表示するために「campingListItem」コンポーネントを繰り返し実行するよう変更してください。  変更内容の詳細は以下の通りです。
    • Camping Itemカスタムオブジェクトの配列を型(type)とする「items」属性を追加してください。
    • Camping_Item__cを型(type)とする「newItem」属性を追加してください。Quanitity、Price のデフォルト値は0としてください。
    • 「campingList」コンポーネントには、「newItem」属性より適切な入力コンポーネントタイプ、値を用いてName、Quanitity、Price、およびPackedの各項目のフォームを表示してください。 Quantity項目に入力可能な値は1以上としてください。
    • フォームを登録した場合に、JavaScriptコントローラにある「clickCreateItem」アクションを実行するようにしてください。
    • フォームが有効な場合、JavaScriptコントローラーは newItem を既存のitemの配列に挿入し、items value providerが変更されたことの通知をトリガーし、空の Camping_Item__c 型(type)の sObjectType で newItem をリセットしてください。 このコードは、ヘルパーではなくコンポーネントのコントローラに記述してください。

サーバ側コントローラを使用した Salesforce への接続

https://trailhead.salesforce.com/ja/modules/lex_dev_lc_basics/units/lex_dev_lc_basics_server

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 「CampingListController」Apexクラスを作成し、getItems, saveItemメソッドを実装してください。
  • コンポーネントの起動時にデータベースから既存レコードの読み込みを行う、「doInit」初期化ハンドラを追加してください。
  • 有効なフォーム送信内容からデータベースにレコードを保存するため、ヘルパーに記述したcreateItemメソッドを使用するようにJavaScript コントローラを変更してください。新しいitemは、コントローラのitems value provider に追加されます。

コンポーネントとイベントの接続

https://trailhead.salesforce.com/ja/modules/lex_dev_lc_basics/units/lex_dev_lc_basics_events

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 「campingList」コンポーネントにあるHTMLフォーム部分のコードを、新しく作成した「campingListForm」コンポーネントに移動してください。また、ボタンをクリックした際に「clickCreateItem」JavaScript コントローラアクションを呼び出すようにしてください。
  • 「campingList」コンポーネントは、c:addItemEvent イベントをリスン(listen)し、JavaScriptコントローラにある handleAddItem アクションを実行するようにしてください。 handleAdditemメソッドはレコードをデータベースに保存し、レコードを items value provider に追加するようにしてください。
  • addItemEvent イベントの type は component とし、 Camping_Item__c 型(type)の item という名前の属性を持つようにしてください。
  • 「campingListForm」コンポーネントには、c:addItemEvent 型(type)の addItem イベントを登録してください。
  • フォームが有効な場合、campingListFormController JavaScriptコントローラは、ヘルパーにある createItem メソッドを呼び出すようにしてください。
  • campingListFormHelper JavaScriptヘルパーは、追加する item を持つ addItem イベントを作成し、イベントを発生させるようにしてください。その後、newItem value provider を、空の Camping_Item__c 型(type) の sObjectType でリセットしてください。

次のステップの確認

https://trailhead.salesforce.com/ja/modules/lex_dev_lc_basics/units/lex_dev_lc_basics_next_steps

  • 説明:日本語
  • Challenge:日本語選択問題

Trailhead モジュール:Apex インテグレーションサービス

※この内容は2018/4時点のものです。

Apex インテグレーションの概要

https://trailhead.salesforce.com/ja/modules/apex_integration_services/units/apex_integration_callouts

  • 説明:日本語
  • Challenge:日本語選択問題

Apex REST コールアウト

https://trailhead.salesforce.com/ja/modules/apex_integration_services/units/apex_integration_rest_callouts

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • Apexクラス「AnimalLocator」を作成してください。
  • Apexクラス「AnimalLocator」に「getAnimalNameById」メソッドを作成してください。「getAnimalNameById」メソッドの引数の型はInteger、返り値の型はStringとしてください。
  • 「getAnimalNameById」メソッドでは、引数のIDを使用して https://th-apex-http-callout.herokuapp.com/animals/<引数のID> をコールしてください。「getAnimalNameById」メソッドの返り値は「name」プロパティの値(例えば動物の名前)としてください。
  • コールアウトの疑似応答を行うApexテストクラス「AnimalLocatorMock」を使用して、Apexテストクラス「AnimalLocatorTest」を作成してください。
  • 単体テストでは、Apexクラス「AnimalLocator」に含まれる全ての行のコードをカバーする必要があります。結果としてコードカバレッジが100%になります。
  • このChallengeを確認する前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

Apex SOAP コールアウト

https://trailhead.salesforce.com/ja/modules/apex_integration_services/units/apex_integration_soap_callouts

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • WSDL2Apexを使用し、public Apexクラス「ParkService」をこのWSDLファイルから作成してください。[WSDLからの生成]ボタンをクリックした後、Apexクラス名を「parksServices」から「ParkService」に必ず変更してください。
  • Apexクラス「ParkLocator」クラスを作成し、「country」メソッドを含めてください。
  • 「country」メソッドに以下のロジックを記述してください。
    • 先に作成した「ParkService」クラスを使用してください。
    • 使用できる引数は国名(例: Germany, India, Japan, United States など)としてください。
    • 返り値は、引数の国名をWebサービスに渡した際に返却される利用可能な公園名の配列としてください。
  • コールアウトの疑似応答を行うApexテストクラス「ParkServiceMock」を使用して、Apexテストクラス「ParkLocatorTest」を作成してください。
  • 単体テストでは、Apexクラス「ParkLocator」に含まれる全ての行のコードをカバーする必要があります。結果としてコードカバレッジが100%になります。
  • このChallengeを確認する前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

Apex Web サービス

https://trailhead.salesforce.com/ja/modules/apex_integration_services/units/apex_integration_webservices

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • Apexクラス「AccountManager」を作成してください。
  • Apexクラス「AccountManager」に「@HttpGet」アノテーションを持ち、Accountオブジェクトを返り値の型とする「getAccount」メソッドを作成してください。
  • 「getAccount」メソッドの返り値は、リクエストされたレコードのID, 取引先名(Name)および 関連する全ての取引先責任者(Contact)のID, 名前(Name)としてください。
  • Apexテストクラス「AccountManagerTest」を作成してください。
  • 単体テストでは、Apexクラス「AccountManager」に含まれる全ての行のコードをカバーする必要があります。結果としてコードカバレッジが100%になります。
  • このChallengeを確認する前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

Trailhead モジュール:非同期 Apex

※この内容は2018/4時点のものです。

非同期処理の基本

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_introduction

  • 説明:日本語
  • Challenge:日本語選択問題

future メソッドの使用

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_future_methods

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 取引先オブジェクトにAPI参照名が「Number_of_Contacts__c」となるカスタム数値項目を作成してください。この項目には取引先オブジェクトに紐づく取引先責任者の数を保存します。
  • クラス名が「AccountProcessor」のApexクラスを作成してください。このApexクラスには取引先レコードIDのリストを引数とする「countContacts」メソッドを含めてください。また、「countContacts」メソッドには @future アノテーションを必ず使用してください。
  • 「countContacts」メソッドでは、引数の取引先レコードIDのリストに対して、各取引先レコードに関連付けられた取引先責任者レコードの数をカウントし、「Number_of_Contacts__c」項目をカウントした値で更新するロジックを記述してください。
  • Apexテストクラス「AccountProcessorTest」を作成してください。
  • 単体テストでは、Apexクラスに含まれるコードすべての行のシナリオをカバーする必要があります。結果としてコードカバレッジが100%になります。
  • このChallengeを確認する前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

Apex 一括処理の使用

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_batch

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • Database.Batchable インターフェースを使ったApexクラス「LeadProcessor」を作成してください。
  • startメソッドに、QueryLocatorを使用して組織内の全てのリード(Lead)レコードを収集するロジックを記述してください。
  • executeメソッドに、組織内の全てのリード(Lead)レコードのリードソース(LeadSource)項目の値を 「Dreamforce」に更新するロジックを記述してください。
  • Apexテストクラス「LeadProcessorTest」を作成してください。
  • Apexテストクラス「LeadProcessorTest」に、以下のロジックを記述してください。
    • リードのレコードを200個作成する。
    • Apexクラス「LeadProcessor」のBatchメソッドを実行する。
    • 全てのリード(Lead)レコードが正しく更新されていることをテストする。
  • 単体テストでは、Apexクラス「LeadProcessor」に含まれる全ての行のコードをカバーする必要があります。結果としてコードカバレッジが100%になります。
  • このChallengeを確認する前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

Queueable Apex を使用したプロセスの制御

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_queueable

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • Queueableインターフェースを実装したApexクラス「AddPrimaryContact」を作成してください。
  • Apexクラス「AddPrimaryContact」のコンストラクタの引数は、以下としてください。
    • 1番目:取引先責任者(Contact) sObject
    • 2番目:米国の州の省略形を表す文字列
  • Apexクラス「AddPrimaryContact」のexecuteメソッドに、以下ロジックを記述してください。
    • コンストラクタの引数として渡される米国の州の省略形を表す文字列と「都道府県(請求先)」(BillingState)項目が一致する最大200個の取引先(Account)レコードに対し、各取引先レコードに関連付けられた取引先責任者(Contact) sObjectレコードを挿入する。
    • sObjectクラスのclone()メソッドも参考にしてください。
  • Apexテストクラス「AddPrimaryContactTest」を作成してください。
  • Apexテストクラス「AddPrimaryContactTest」に、以下のロジックを記述してください。
    • 「都道府県(請求先)」(BillingState)項目が「NY」の取引先(Account)レコードを50個作成する。
    • 「都道府県(請求先)」(BillingState)項目が「CA」の取引先(Account)レコードを50個作成する。
    • Apexクラス「AddPrimaryContact」のインスタンスを作成し、ジョブとしてキューに追加し、「都道府県(請求先)」(BillingState)項目が「CA」の取引先レコード50個それぞれに対して取引先責任者(Contact)レコードが挿入されていることを確認する。
  • 単体テストでは、Apexクラス「AddPrimaryContact」に含まれる全ての行のコードをカバーする必要があります。結果としてコードカバレッジが100%になります。
  • このChallengeを確認する前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

Apex スケジューラを使用したジョブのスケジュール

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_scheduled

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • Schedulable インターフェースを実装したApexクラス「DailyLeadProcessor」を作成してください。
  • Apexクラス「DailyLeadProcessor」のexecuteメソッドにて、リードソース(LeadSource)項目の値が空白であるリード(Lead)のうち最初の200個のレコードに対し、リードソース(LeadSource)項目の値を 「Dreamforce」に更新するロジックを記述してください。
  • Apexテストクラス「DailyLeadProcessorTest」を作成してください。
  • Apexテストクラス「DailyLeadProcessorTest」に、以下のロジックを記述してください。
    • リード(Lead)レコードを200個作成する。
    • DailyLeadProcessorクラスを実行するようスケジュールする。
    • 全てのリード(Lead)レコードが正しく更新されたことをテストする。
  • 単体テストでは、Apexクラス「DailyLeadProcessor」に含まれる全ての行のコードをカバーする必要があります。結果としてコードカバレッジが100%になります。
  • このChallengeを確認する前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

非同期 Apex の監視

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_monitoring

  • 説明:日本語
  • Challenge:日本語選択問題

Trailhead モジュール:Apex と .NET の基本

※この内容は2018/4時点のものです。

.NET の概念の Force.com への対応付け

https://trailhead.salesforce.com/ja/modules/apex_basics_dotnet/units/mapping_concepts

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • Apexクラス「AccountUtils」を作成してください。
  • Apexクラス「AccountUtils」の中に以下内容の static メソッド:「accountsByState」を作成してください。
    • 引数:アメリカの州を省略した文字列
    • 返り値の型:取引先(Account)のList型
    • 内容:取引先レコードの「都道府県(請求先)」(BillingState)項目のうち、引数の文字列と一致する全てのレコードの「取引先ID」(ID)と「取引先名」(Name)を返り値とする。

実行コンテキストの理解

https://trailhead.salesforce.com/ja/modules/apex_basics_dotnet/units/execution_context

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • Apexクラス「AccountTriggerHandler」を作成してください。
  • Apexクラス「AccountTriggerHandler」の中に取引先(Account)のList型を引数の型とする public static メソッド「CreateAccounts」を作成してください。
  • メソッド「CreateAccounts」に、取引先レコードの保存前に、「都道府県(納入先)」(ShippingState)項目の値を「都道府県(請求先)」(BillingState)項目と同じにするロジックを記述してください。
  • レコードが挿入される前に起動するApexトリガ「AccountTrigger」を作成してください。
  • Apexトリガ「AccountTrigger」に、新しいレコードのコレクションを使用してAccountTriggerHandler.CreateAccounts() メソッドを呼び出すロジックを記述してください。
  • Apexトリガ「AccountTrigger」に、「isBefore」と「isInsert」のトリガコンテキスト変数を使用していることを確認してください。
  • Apexテストクラス「AccountTriggerTest」を作成してください。
  • Apexテストクラス「AccountTriggerTest」に、「都道府県(請求先)」(BillingState)項目が「CA」である取引先(Account)レコードを200個挿入し、挿入後、全てのレコードの「都道府県(納入先)」(ShippingState)項目の値が「CA」であることを確認するロジックを記述してください。
  • 「Challengeを確認」をクリックする前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

非同期 Apex の使用

https://trailhead.salesforce.com/ja/modules/apex_basics_dotnet/units/async_apex

  • 説明:日本語
  • Challenge:日本語選択問題

デバッグと診断の実行

https://trailhead.salesforce.com/ja/modules/apex_basics_dotnet/units/debugging_diagnostics

  • 説明:日本語
  • Challenge:日本語選択問題

Trailhead モジュール:プラットフォームイベントの基礎

※この内容は2018/4時点のものです。

イベント駆動型ソフトウェアアーキテクチャの理解

https://trailhead.salesforce.com/ja/modules/platform_events_basics/units/platform_events_architecture

  • 説明:日本語
  • Challenge:日本語選択問題

プラットフォームイベントの定義および公開

https://trailhead.salesforce.com/ja/modules/platform_events_basics/units/platform_events_define_publish

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 以下内容でプラットフォームイベントを作成してください。
    • 表示ラベル:Order Event
    • 表示ラベル(複数形) :Order Events
    • 母音で始まる場合はチェック:チェックを入れる
    • 説明:Information about a customer order.

※著者注:設定項目に「表示ラベル(複数形)」が表示されない場合は、組織情報にて言語のデフォルト値を「英語」に設定してください。

  • 作成したプラットフォームイベントに、以下内容のカスタム項目を作成してください。
    • データ型:テキスト、項目の表示ラベル:Order Number、文字数:10
    • データ型:チェックボックス、項目の表示ラベル:Has Shipped

プラットフォームイベントの登録

https://trailhead.salesforce.com/ja/modules/platform_events_basics/units/platform_events_subscribe

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • プラットフォームイベント:Order_Event__e のApexトリガ「OrderEventTrigger」を作成してください。このトリガはApexトリガ「CloudNewsTrigger」と似ていますが、プラットフォームイベント:Order_Event__e に対し実行され、ケースの代わりにToDo(Task)を使用します。
  • 注文が発送 (event.Has_Shipped__c == true) された場合に、以下内容のToDo(Task)を作成するようにしてください。
    • 優先度(priority):’Medium’
    • 状況(status):’New’
    • 件名(subject): 'Follow up on shipped order ' + event.Order_Number__c
  • ToDo(Task)の任命先はあなたのユーザIDを使用してください。これはApexクラス「CloudNewsTrigger」に書かれたキューIDを取得するSQL文に似ている、Userオブジェクトに対しユーザーのフルネームを条件に指定したSQL文を用いることで実現できます。

Trailhead モジュール:Apex メタデータ API

※この内容は2018/4時点のものです。

Apex メタデータ API の使用開始

https://trailhead.salesforce.com/ja/modules/apex_metadata_api/units/apex_metadata_api_intro

  • 説明:日本語
  • Challenge:日本語選択問題

複数組織リリース用の自動メタデータ更新の作成

https://trailhead.salesforce.com/ja/modules/apex_metadata_api/units/apex_metadata_api_updates

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • public Apexクラス「UpdateContactPageLayout」を作成してください。
  • publicメソッド「addLayoutItem」をApexクラス「UpdateContactPageLayout」に追加してください。 「addLayoutItem」は Metadata.Layout型 を返り値の型とし、引数はなしとしてください。
  • メソッド「addLayoutItem」にて、Metadata.Operations.retrieveメソッドを使用して、取引先責任者ページレイアウトのメタデータを取得してください。 取得したメタデータを、Metadata.Metadata オブジェクトのリストである 「layoutsList」 という名前の変数に割り当ててください。
  • リスト「layoutsList」にあるレイアウトのうち最初のレイアウトを取得し、それをMetadata.Layout型 の 「layoutMetadata」 という名前の変数に割り当ててください。
  • Metadata.LayoutSection型の 「contactLayoutSection」 という名前の変数を作成し、nullに設定してください。
  • 変数「layoutMetadata」 の layoutSections プロパティを使用して、レイアウトセクションの反復処理により「Additional Information」セクションを探してください。
    「Additional Information」セクションが見つかった場合、そのセクションを変数「contactLayoutSection」に割り当ててください。
  • Metadata.LayoutColumnオブジェクトのリストである 「contactColumns」 という名前の変数を作成してください。
  • 変数「contactLayoutSection」 の layoutColumns プロパティを使用して得られた値を変数「contactColumns」に割り当ててください。
  • Metadata.LayoutItemオブジェクトのリストである 「contactLayoutItems」 という名前の変数を作成してください。
  • 変数「contactColumns」のリストの最初の要素の layoutItems プロパティを使用して得られた値を、変数「contactLayoutItems」に割り当ててください。
  • Metadata.LayoutItem型のオブジェクト「newField」を作成してください。
  • オブジェクト変数「newField」に以下の値を割り当ててください。
    • behavior:Metadata.UiBehavior.Edit
    • field: AMAPI__Apex_MD_API_Twitter_name__c
  • オブジェクト変数「newField」を「contactLayoutItems」メタデータ変数に追加してください。
  • 変数「layoutMetadata」を「addLayoutItem」メソッドの返り値としてください。

自動設定変更のためのシステム管理者ツールの作成

https://trailhead.salesforce.com/ja/modules/apex_metadata_api/units/apex_metadata_api_tools

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • public Apexクラス「MetadataExample」を作成してください。
  • Apexクラス「MetadataExample」にpublicメソッド「updateMetadata」を作成してください。「updateMetadata」メソッドの引数はなし、返り値の型はvoidとしてください。
  • Metadata.CustomMetadata型の「customMetadata」というオブジェクト変数を作成してください。
  • 変数「customMetadata」の fullname を 「MyNamespace__MyMetadataTypeName.MyMetadataRecordName」に設定してください。
  • Metadata.CustomMetadataValue型の「customField」というオブジェクト変数を作成してください。
  • 変数「customField」のfieldに「customField__c」を、valueに「New value」を設定してください。
  • 変数「customMetadata」のvaluesのリストに変数「customField」を追加してください。
  • Metadata.DeployContainer型の「deployContainer」というオブジェクト変数を作成してください。
  • 変数「deployContainer」に変数「customMetadata」を追加してください。
  • Metadata.Operations.enqueueDeploymentメソッドを使用して、メタデータをデプロイしてください。メソッドの戻り値は、Id型の変数「asyncResultId」に代入してください。
    enqueueDeploymentメソッドのコールバックパラメータにはnullを使用してください。

メタデータのリリースのテスト

https://trailhead.salesforce.com/ja/modules/apex_metadata_api/units/apex_metadata_api_testing

  • 説明:日本語
  • Challenge:日本語選択問題

Apex メタデータ API とセキュリティについて

https://trailhead.salesforce.com/ja/modules/apex_metadata_api/units/apex_metadata_api_security

  • 説明:日本語
  • Challenge:日本語選択問題

Trailhead モジュール:カスタムメタデータ型

※この内容は2018/4時点のものです。

カスタムメタデータ型の使用開始

https://trailhead.salesforce.com/ja/modules/custom_metadata_types/units/custom_metadata_types_overview

  • 説明:日本語
  • Challenge:日本語選択問題

カスタムメタデータ型の作成および管理

https://trailhead.salesforce.com/ja/modules/custom_metadata_types/units/custom_metadata_types_create

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 以下内容のカスタムメタデータ型を作成してください。
    • 表示ラベル:VAT Data
    • 以下のカスタム項目を作成してください
      • データ型:テキスト、項目の表示ラベル:Country Name、文字数:10
      • データ型:パーセント、項目の表示ラベル:VAT Rate
  • 以下内容でカスタムメタデータレコードを作成してください。レコードの表示ラベルにはCountry Name項目と同じ値を使用します。
    • Country Name:Japan、VAT Rate:10%
    • Country Name:Germany、VAT Rate:19%

メタデータリレーション項目の使用

https://trailhead.salesforce.com/ja/modules/custom_metadata_types/units/custom_metadata_types_create_md_relationships

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 以下内容のカスタムメタデータ型を作成してください。
    • 表示ラベル:Agency Service Providers
    • 以下のカスタム項目を作成してください
      • データ型:メタデータリレーション、関連先:Entity Definition、項目の表示ラベル:Object Type
      • データ型:メタデータリレーション、関連先:Field Definition、項目の表示ラベル:Agency Field、制御項目:Object Type
      • データ型:メール、項目の表示ラベル:Agency Owner Email

カスタムメタデータ型およびレコードの保護

https://trailhead.salesforce.com/ja/modules/custom_metadata_types/units/custom_metadata_types_manageability

  • 説明:日本語
  • Challenge:日本語選択問題

カスタムメタデータ型のパッケージ化

https://trailhead.salesforce.com/ja/modules/custom_metadata_types/units/custom_metadata_types_packaging

  • 説明:日本語
  • Challenge:日本語選択問題

カスタム設定の変換

https://trailhead.salesforce.com/ja/modules/custom_metadata_types/units/custom_metadata_types_convert

  • 説明:日本語
  • Challenge:日本語選択問題

Trailhead モジュール:Big Object の基礎

※この内容は2018/4時点のものです。

Big Object の使用開始

https://trailhead.salesforce.com/ja/modules/big_objects/units/big_objects_get_started

  • 説明:日本語
  • Challenge:日本語選択問題

カスタム Big Object の定義

https://trailhead.salesforce.com/ja/modules/big_objects/units/big_objects_define_custom_big_objects

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 以下内容でカスタムBig Object:Rider_History__b.object を定義してください。
    • 項目
      • Start_Location_Lat__c
        • 項目の表示ラベル(Label): Start Location Latitude
        • 必須項目(Required): False
        • データ型(Type): 数値(Number)
        • ユニーク(Unique): False
        • 桁数(Precision): 7
        • 小数点の位置(Scale): 4
      • Start_Location_Long__c
        • 項目の表示ラベル(Label): Start Location Longitude
        • 必須項目(Required): False
        • データ型(Type): 数値(Number)
        • ユニーク(Unique): False
        • 桁数(Precision): 7
        • 小数点の位置(Scale): 4
      • Start_Time__c
        • 項目の表示ラベル(Label): Start Time
        • 必須項目(Required): True
        • データ型(Type): 日付/時間(DateTime)
        • ユニーク(Unique): False
      • End_Time__c
        • 項目の表示ラベル(Label): End Time
        • 必須項目(Required): False
        • データ型(Type): 日付/時間(DateTime)
        • ユニーク(Unique): False
      • Service_Type__c
        • 項目の表示ラベル(Label): Service Type
        • 文字数(Length): 16
        • 必須項目(Required): False
        • データ型(Type): テキスト(Text)
        • ユニーク(Unique): False
      • Rider_Account__c
        • 項目の表示ラベル(Label): Rider Account
        • 文字数(Length): 16
        • 必須項目(Required): True
        • データ型(Type): テキスト(Text)
      • Rider_Rating__c
        • 項目の表示ラベル(Label): Rider Rating
        • 必須項目(Required): False
        • データ型(Type): 数値(Number)
        • ユニーク(Unique): False
        • 桁数(Precision): 2
        • 小数点の位置(Scale): 1
    • インデックス
      • 名前(Full name): Rider_History_Index
      • 表示ラベル(Label): Rider History Index
      • インデックス項目
        • Rider_Account__c
          • ソート(Sort): DESC
        • Start_Time__c
          • ソート(Sort): DESC
  • 以下内容で権限セット rider_history.permissionset を定義してください。
    • インデックス項目以外の全項目に対し、参照アクセス権、編集アクセス権を付与してください。
  • あなたの組織に作成したカスタム Big Object:Rider_History__b.object の定義をリリースしてください。

Big Object のクエリ

https://trailhead.salesforce.com/ja/modules/big_objects/units/big_objects_querying

  • 説明:日本語
  • Challenge:日本語選択問題

Trailhead モジュール:AppExchange アプリケーション開発

※この内容は2018/3時点のものです。

AppExchange 開発環境について

https://trailhead.salesforce.com/ja/modules/isv_app_development/units/isv_app_development_landscape

  • 説明:日本語
  • Challenge:日本語選択問題

パートナー開発組織の作成と管理

https://trailhead.salesforce.com/ja/modules/isv_app_development/units/isv_app_development_env_hub_dev_orgs

  • 説明:日本語
  • Challenge:日本語選択問題

AppExchange アプリケーションのパッケージ化

https://trailhead.salesforce.com/ja/modules/isv_app_development/units/isv_app_development_packaging

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

このChallengeでは、管理パッケージを作成、配布するための組織(Org1)と作成したパッケージをインストールする組織(Org2)が必要です。
Org1には通常のDeveloper Edition組織、または環境ハブから作成したPartner Developer Edition組織が使用できます。
「Challengeを確認」は、Org2にて行います。
注意:Trailheadでは名前空間をサポートしていないため、管理パッケージを作成、配布するための組織(Org1)を他のChallengeで使用しないでください。

  • Org1で以下作業を実施してください。
    • 名前空間を設定してください。
    • 以下のカスタムオブジェクトを作成してください。
      • オブジェクト名:Module
      • 表示ラベル:Module
      • 表示ラベル(複数形):Modules
        • ※著者注:設定項目に「表示ラベル(複数形)」が表示されない場合は、組織情報にて言語のデフォルト値を「英語」に設定してください。
    • 上記カスタムオブジェクトを含むアプリケーションを作成してください。アプリケーション名は「Module Tracker」としてください。
    • 管理パッケージを作成してください。
  • Org2に、Org1で作成した管理パッケージをインストールしてください。

注意:Challengeを完了するには、Org2をTrailheadに接続する必要があります。

AppExchange アプリケーションのテスト

https://trailhead.salesforce.com/ja/modules/isv_app_development/units/isv_app_development_testing

  • 説明:日本語
  • Challenge:日本語選択問題