進行状況の追跡を始めよう
Trailhead のホーム
Trailhead のホーム

ユーザインターフェース API の使用開始

学習の目的

この単元を完了すると、次のことができるようになります。
  • ユーザインターフェース API が Salesforce プラットフォームのどこに収まるかを説明する。
  • どのような場合にユーザインターフェース API を使用するかを説明する。
  • どのような場合にユーザインターフェース API を使用してはならないかを説明する。

Salesforce Platform にそれぞれのレベルでアクセス

Salesforce が優れているのは、ユーザや顧客にとって効果のあるカスタマイズができる点です。Salesforce が UI の再構築を決定したとき、表面的な変更ではなく、強力なプラットフォームを構築して、Salesforce のカスタマイズ機能をさらに拡張しました。それが Lightning です。

Lightning は、Salesforce のユーザエクスペリエンス (Lightning Experience)、プラットフォーム、および UI フレームワーク (Lightning コンポーネントフレームワーク) です。Lightning では、Salesforce プラットフォームのさまざまなレイヤへのアクセスが可能になり、ユーザのスキルや要件に効果のあるレベルで Salesforce をカスタマイズできます。このモジュールでは、ユーザインターフェース API を使用してプラットフォームにアクセスする方法を学習します。Lightning Experience は、この API を使用して Salesforce からデータとメタデータを取得しています。

少し背景を説明しましょう。Lightning Experience を構築するにあたり、私たちには新しい API が必要でした。既存の API は必要なものすべてにはアクセスできず、ユーザインターフェース構築ではなくデータインテグレーション用に設計されていました。そうした中から、明るい未来を目指してユーザインターフェース API は誕生しました。

私たちは Salesforce 社内の開発者と緊密に協力して、どのジョブが困難で時間がかかるかを明らかにし、そうした問題を解決しました。この新しい REST API は公開されました。つまり、皆さんは、Salesforce が Lightning Experience、Salesforce for Android、Salesforce for iOS の構築に使用するのと同じ API を使用して Web アプリケーションやモバイルアプリケーションを作成できます。

Lightning のテクノロジスタックの概要

Lightning にアクセスして、ユーザや顧客の作業を容易にする Salesforce アプリケーションを作成する方法は沢山あります。Lightning テクノロジスタックの各レイヤを見て、ユーザインターフェース API がどこに位置するか、どのような場合に使用するかを把握しましょう。Salesforce プラットフォームのレイヤ。UI API の上には Lightning データサービスがあり、さらにその上には Lightning コンポーネントがあります。

スタックを上るほど、Lightning プラットフォームがユーザの代わりに行うことが増え、開発者が容易になります。スタックの最上部では、コードは記述せず、ポイント & クリック操作を行います。スタックの最下部では、多くのコードを記述します。

  • Lightning アプリケーションビルダーで事前作成済みの Lightning コンポーネントをドラッグする。
  • カスタム Lightning コンポーネントを開発する。
  • Lightning データサービスを使用して、Lightning コンポーネントで Salesforce データにアクセスする。
  • ユーザインターフェース API を使用して、Salesforce プラットフォーム以外から Salesforce に接続するカスタムの Web およびモバイルアプリケーションを作成する。

では、スタックの最上部、「コードのない」ソリューションを見てみましょう。ボタン、入力、アイコンなどの Lightning 基本コンポーネントは、UI のビルディングブロックです。Lightning アプリケーションビルダーでは、コードを一切使用せずに、コンポーネントを組み合わせて Salesforce で稼働するアプリケーションを作成できます。Salesforce プラットフォームでホストされるスタンドアロンアプリケーションを作成することもできます。

スタックを下がると、独自の Lightning コンポーネントを作成できます。少しのコードで、Lightning データサービスを使用してレコードの作成、参照、更新、削除ができます。Lightning データサービスは (スタックで直下にある) ユーザインターフェース API を使用してデータを Salesforce から取得します。LDS ではキャッシュを利用できるため、サーバとの往復が最小限になり、同じデータを使用するすべてのレコードを更新できます。

Lightning スタックの基礎はユーザインターフェース API です。これにより、UI 構築用に構造化された Salesforce データおよびメタデータのペイロードが提供されます。お気に入りの Web フレームワークと言語を使用して、あらゆるカスタム Web アプリケーションやネイティブモバイルアプリケーションを作成できます。思い浮かぶだけでも React、Vue、Angular、iOS、Android などがあります。HTTP 要求を実行できるなら、ユーザインターフェース API を使用できます。

ユーザインターフェース API で簡単に UI を開発

Salesforce には多くの API があり、やるべきことに最適なツールを判断するのが難しい場合があります。カスタム Web またはモバイルアプリケーションを作成していて、ユーザが Salesforce レコードを表示、作成、編集、削除できるユーザインターフェース、つまり Salesforce のような外観と動作のユーザインターフェースが必要な場合、UI API が適しています。

ユーザが連動選択リストやルックアップを編集できるユーザインターフェースを作成する場合は、間違いなくユーザインターフェース API が適しています。ユーザインターフェース API には、こうした作業を大幅に容易にするリソースが含まれています。連動選択リストエディタには、国、言語、都道府県、市区郡のメニューが表示されます。

前述のとおり、Salesforce ではユーザインターフェース API を使用して Lightning Experience を構築しています。UI API は、Salesforce のある社内エンジニアグループによって開発され、Lightning Experience を開発する別の社内エンジニアグループの作業を大幅に容易にしました。今度は皆さんがこの API で何を作るのか、とても楽しみです!

現実には、Salesforce ユーザインターフェースは複雑です。特定のユーザ向けの適切な UI は、さまざまなルール、権限、ページレイアウト設定と連動します。システム管理者は、こうした連動関係を変更して、ビジネスニーズへの適合性を高めることができます。たとえば、システム管理者は、ページレイアウトの項目の追加または削除、項目の必須指定、プロファイルへのページレイアウトの割り当てを行うことができます。

かつて、カスタムアプリケーションでレコードを処理するための動的 UI を作成することは困難でした。それは、システム管理者が組織のメタデータを変更するたびに、UI を更新するコードを書く必要があったからです。

これは、私たちが UI API を構築し、リリースごとに新機能を追加している理由の 1 つです。UI API では、UI が実行時にメタデータの変更に反応するため、Salesforce 組織内のルールと権限に従うカスタムユーザインターフェースを構築するのが簡単になりました。大切なことなのでくりかえします。システム管理者が権限、レイアウト、項目レベルセキュリティ、共有ルールを変更しても、アプリケーションを変更する必要はありません。実際、こうした変更がないかチェックするコードを書く必要もありません。UI API が代わりに行います。

UI API ができる前は、多くのコールを実行して、レイアウト (項目はページ上のどこにあるか)、メタデータ (オブジェクトにはどの項目があるか、それは必須か)、レコードデータ (項目値は何か) に必要な情報を取得する必要がありました。UI API はこうしたコールを代わりに実行し、解析しやすい応答をユーザに返します。つまり、レイアウト描画エンジンの作業を行うため、ユーザが自分で作成する必要はありません。空いた時間でリフレッシュしましょう。

しかも、UI API の API 制限は Enterprise API と同じであるため、新しい API 制限の追跡方法を学習する必要もありません。

効率的なペイロード
ユーザがレコードを操作するためのフォームを作成するには多くの情報が必要です。オブジェクトにはどの項目があるのか? それらは必須か? レイアウトのどこに配置されているか? すべての項目の値は何か? UI API のペイロードにはデータとメタデータが集約されるため、何回も API 要求を実行する必要はありません。
表示値の書式設定とローカライズ
UI API は項目値をユーザが選択した言語で表示できる状態で返します。日付でも通貨でも、適切な書式が設定されます。項目のデータ型に関係なく、コードは displayValue プロパティを使用するだけです。
項目レベルセキュリティと共有ルール
UI API ではこれらが考慮されます。ユーザに項目へのアクセス権がない場合、その項目は応答に含まれません。すごいでしょう? 自由になった時間を楽しみましょう。
ビジネスロジック
どの開発者でも直面する問題があります。たとえば、ユーザがレコードをコピーするためのユーザインターフェースを開発するには、ユーザがレコードを作成するためのユーザインターフェースを開発するときとは必要な情報が異なります。コピーフォームには、コピー元のレコードからデータ値を含めるのに対し、作成フォームのデータ値のほとんどは null です (所有者と所有者 ID は null ではありません)。UI API には、こうした使用事例のユーザインターフェースを開発するのに必要な情報を返すリソースがあり、それらは、Salesforce が Lightning Experience、Salesforce for Android、Salesforce for iOS の開発に使用するのと同じリソースです。Salesforce に表示されるのと同じデフォルト値を取得できます。
レイアウト種別とフォーム要素
デバイス、タブレット、デスクトップのいずれでもアプリケーションが機能するようにしますか? 当然そうでしょう。UI API の応答は、フルとコンパクトのレイアウト種別、小、中、大のフォーム要素を提供できます。
アクセスモード
ユーザが Salesforce レコードを操作するためのアプリケーションを作成するには、さまざまな種類の作業に対して異なるユーザインターフェースを構築する必要があります。ユーザはレコードに対して表示、作成、コピー、編集のどれを行いますか? こうしたアクセスモードごとにペイロードを要求できます。(ただし、コピーでは編集モードを使用するので、モードは作成、編集、表示の 3 つのみです)。

ユーザインターフェース API を使用してはいけないケース

ユーザインターフェース API をシステムインテグレーションに使用しないでください。データのアップロードまたは抽出のための自動インテグレーションの作成にも、データの一括アップロードまたは抽出にも使用しないでください。こうしたタスクには Enterprise API または Bulk API を使用してください。

Lightning コンポーネントを作成する場合は、UI API を直接使用せずに、Lightning データサービス (LDS) を使用してください。

LDS は、ユーザインターフェース API に基づいて構築されていますが、応答をキャッシュし、データ変更の影響を受けるすべてのレコードを更新することもできます。LDS を使用する場合、REST コールの実行と結果のキャッシュについて心配する必要はありません。LDS が代わりに実行します。さらに、データが変更されたら、LDS がすべての関連コンポーネントを更新します。LDS によってコンポーネント間のデータの不整合がなくなるだけでなく、ユーザがオフラインで作業し、オンラインに戻ったときにデータを同期することもできます。素晴らしいですね!

最後に、Salesforce UI 全体の再構築にユーザインターフェース API を使用しないでください。(そんなことをする理由があればの話です)。

ユーザインターフェース API リソースの概要

UI API リソースはいくつかのカテゴリに分類されます。この Trailhead モジュールでは、レコードおよびレイアウトリソースについて詳細を説明しますが、ここではその他のカテゴリで何ができるかを簡単に確認しましょう。リソースの完全なリストについては『User Interface Developer Guide』 (ユーザインターフェース開発者ガイド) を参照してください。

ヒント

ヒント

このモジュールでは、リソースエンドポイントという用語はほとんど同義です。

レコードとレイアウト

これらのリソースは、Salesforce レコードの作成、参照、更新、削除に使用します。

この中心的な UI API リソースは、1 つ以上のレコード ID を取り込み、データ、メタデータ、およびレイアウト情報を返します。そうです。アプリケーションは HTTP 要求を 1 回実行し、レコードの表示に必要なすべての情報を入手できます。このリソースについては次の単元で詳しく説明します。

/ui-api/record-ui/{recordIds}
UI API には、これらと同じレイアウト、オブジェクトメタデータ、データ応答を個別に取得するためのリソースもあります。
/ui-api/layout/{objectApiName}
/ui-api/object-info/{objectApiName}
/ui-api/records/{recordId}
後の単元で、レコードのコピーまたは作成のための UI を作成するのに必要なデフォルトの項目値を取得するためのリソースについて説明します。
/ui-api/record-defaults/create/{objectApiName}
/ui-api/record-defaults/clone/{recordId}
このリソースを使用して、特定のレコードタイプの全選択リスト項目の値を取得する方法についても説明します。
/ui-api/object-info/{objectApiName}/picklist-values/{recordTypeId}

リストビュー

Salesforce ユーザは、多くの時間をかけてリストビューをカスタマイズし、レコードを表示して分析できるようにしています。UI API を使用すると、レコードのリストとリストビューメタデータを取得できます。/ui-api/record-ui/{recordId} リソースと同様に、これらのリソースは、1 つの応答でデータとメタデータを返します。
/ui-api/list-ui/${listViewId}
/ui-api/list-ui/${objectApiName}/${listViewApiName}
ユーザは、独自のリソースでデータとメタデータを取得することもできます。
/ui-api/list-info/${listViewId}
/ui-api/list-info/${objectApiName}/${listViewApiName}
/ui-api/list-records/${listViewId}
/ui-api/list-records/${objectApiName}/${listViewApiName}

アクション

アクションを使用すると、ユーザは Salesforce ですばやく簡単にタスクを実行できます。アクションは、オブジェクトの作成、メールの送信、活動の記録などに使用します。アクションは、モバイルアプリケーションのアクションバーと、Lightning Experience のアクションリボンに表示されます。UI API ができる前、アプリケーションは SOQL を使用して使用可能なアクションを見つける必要がありました。今では、Salesforce アプリケーション、グローバルアクションヘッダー、レコードの詳細および編集ページ、関連リストなどでユーザが使用できるアクションのリストを取得できます。
/ui-api/actions/global
/ui-api/actions/record/${recordIds}
/ui-api/actions/record/${recordId}/record-edit
/ui-api/actions/record/${recordId}/related-list/${relatedListIds}
// There are more actions resources! Check the User Interface API Developer Guide! 

現在、アクションエンドポイントを使用してアクションのリストを取得できますが、アクションを実行することはできません。クイックアクションを使用する場合、Visualforce の上書きがある場合、または、表示されるアクションに基づいて CRUD を判断する場合にアクションのリストを取得すると便利です。たとえば、[New (新規)] アクションがある場合、ユーザはレコードを作成できます。[Edit (編集)] や [Delete (削除)] の場合も同様です。

お気に入り

Lightning Experience のヘッダーの星には、お気に入りのレコードとリストビューが含まれます。Salesforce では、ユーザはお気に入りを追加してすばやく移動することができます。UI API には、お気に入りの作成、表示、更新、削除を行うリソースがあるため、カスタムアプリケーション内にこれと同じお気に入り操作を作成できます。
/ui-api/favorites
/ui-api/favorites/${favoriteId}
/ui-api/favorites/batch
/ui-api/favorites/${favoriteId}/usage

ルックアップ

Salesforce オブジェクトには、多くの場合、2 つのレコードを関連付ける参照項目が含まれます。たとえば、取引先責任者レコードには、その取引先とその取引先責任者に関連付けられている [Account (取引先)] 参照項目があります。レコードの編集ページでは、参照項目を使用して編集中のレコードに関連付けるレコードを検索できます。 取引先名のルックアップ UI。ドロップダウンリストには提案が表示されています。

ルックアップと連動ルックアップのユーザインターフェースの作成は困難ですが、ユーザインターフェース API によってはるかに容易になりました。こうしたリソースを使用してユーザインターフェースを作成すると、ユーザは Lightning Experience で表示内容を照合する完全な先行入力検索を実行できます。
/ui-api/lookups/{objectApiName}/{fieldApiName}
/ui-api/lookups/{objectApiName}/{fieldApiName}/{targetApiName}