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

Salesforce と Heroku のインテグレーションの開始

学習の目的

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

  • Salesforce と Heroku を統合する、さまざまな理由を理解する。
  • Salesforce と Heroku を統合する方法について説明する。

Heroku が、さまざまな使用事例で、Salesforce と統合したアプリケーションの実行に適した場所となることを Salesforce 開発者は理解しています。しかし、その理由は正確には何なのでしょうか。また、インテグレーションの最適な方法は何なのでしょうか。読み進めれば、その答えはすぐに明らかになります。

Salesforce と Heroku を統合する理由

最新のエンタープライズシステムは多くの部品から構成されており、さまざまな種類のユーザ用にいろいろなインターフェースが用意されています。これらのインターフェースは、多くの場合、さまざまなデータソースからデータを引き出します。システムの断片を切り離し、メンテナンスが簡単で個別にリリースできるサービスにして、さまざまなシステムをまとめるエンドポイントを提供する方法として、マイクロサービスアーキテクチャが出現しました。Heroku は、さまざまな統合方法によって Salesforce と併用できるアプリケーションとマイクロサービスの実行に適した場所です。

アプリケーションを Heroku で Salesforce と統合する、一般的な理由は次の 4 つです。

  • データ複製
  • データプロキシ
  • カスタムユーザインターフェース
  • 外部プロセス

このモジュールのこのすぐ後で、それぞれの理由について詳しく説明します。

データ複製によるインテグレーション

データ複製は、Salesforce と別のシステムとの間でデータをコピーしたり同期したりすることです。データ複製をデータウェアハウスに使用すれば、データソースを横断したレポートや分析をすることが可能になります。データ複製を使用して従来のシステムを操作し、Salesforce のデータを利用したり、Salesforce にデータを供給したりすることもできます。Heroku と Salesforce の最も一般的な使用事例は、オープンソーステクノロジを利用して構築したお客様対応アプリケーションに、スループットが高くて遅延が少ないインターフェースを提供することです。

たとえば、膨らますことができるユニコーンパーティハットを販売しているとします。価格設定や在庫などの商品情報を記録するシステムは Salesforce であり、公開 Web サイトは、Node.js、Rails、Java などで構築されています。この Web サイトでは、そのデータを使用して在庫があることを表示し、発注機能を提供しています。公開 Web アプリケーションを Heroku で実行し、商品情報を Heroku のデータストアに複製することは有意義です。遅延を少なくして多くのリクエストに応えることができるためです。たとえば、公開サイトのユーザが商品を「いいね!」と評価したら、データ複製を使用して「いいね!」の数を Salesforce に伝達し、マーケティングチームで利用できるようにします。

データプロキシによるインテグレーション

データプロキシではさまざまなデータストアが集計されますが、データ複製とは異なり、データはコピーされません。データはオンデマンドで参照のみとなります。このアプローチでは、データサイエンス、ビジネスインテリジェンス、レポート、ダッシュボードなどのツールにより、ストレージや陳腐化などのデータ同期の課題を気にせずに、複数のデータストア間でデータを照合できます。従来のシステムと外部システムをデータプロキシによって統合して、Salesforce にデータを提供でき、Salesforce が外部システムにデータを提供することもできます。

Salesforce ユーザが在庫レポートを実行して、Salesforce の商品データを外部システムの倉庫データと相関させる必要がある場合は、ETL (extract transform and load) などの遅い手法を使用せずに、データプロキシでその情報を提供できます。レポートを実行すると、Salesforce によって外部システムから必要なデータが取得されますが、データは保存されません。これと同じことが、反対方向でも動作します。Heroku で動作しているアプリケーションが Salesforce と別のシステムのデータプロキシとなり、セキュリティと変換のレイヤを提供します。これについては後で説明します。

カスタムユーザインターフェースによるインテグレーション

Salesforce のカスタムユーザインターフェースは、さまざまなテクノロジ、2 つ挙げるとすれば、Visualforce と Lightning コンポーネントを使用して簡単に作成できます。Java、Node.js、PHP などのオープンソーステクノロジを利用してインターフェースを構築すると、Heroku 上で実行して、Salesforce UI または Salesforce アプリケーションのデータと統合できます。従来のシステムまたは外部システムがユーザインターフェースを提供しており、それを Salesforce UI で表示しなければならないこともあります。

たとえば、CRM に Salesforce を使用している会社が、カスタムシステムを Java で構築している会社を買収したとします。簡単な一流の方法でこれらのシステムを統合するには、Java システムを Heroku 上で実行し、Salesforce で表示します。Java システムを Heroku 上で実行すると、拡張と操作の負担を軽減して、カスタムシステムのリリースアーキテクチャで標準化できます。スタンドアロンユーザインターフェースを Heroku 上で実行して Salesforce アプリケーションのデータと統合すると、Salesforce のバックオフィスおよびお客様対応 Web アプリケーションとモバイルアプリケーションが拡張されます。カスタムユーザインターフェースには、ライブラリ、機能、開発者スキルセットが含まれることがあるため、Heroku とオープンソーステクノロジをネイティブの Force.com オプションより優先して使用する意思決定を下すことになります。

外部プロセスによるインテグレーション

外部プロセスでは、バッチ処理、ワークフロー、トリガイベント処理を Heroku のアプリケーションにオフロードできます。この手法が役立つかどうかは、完了する必要がある仕事の種類および関連する労力の量によって決まります。データサイエンス、機械学習、画像と動画の処理、従来のシステムや外部システムとのインテグレーションが、外部処理を Heroku にオフロードする理由となることがあります。

たとえば、不動産会社が、販売中の各住宅の写真をアップロードしているとします。これらの写真は特大であるため、サイズを変更して読み込み時間を短縮し、ストレージコストを削減する必要があります。この仕事は、Heroku の外部プロセスに簡単にオフロードできます。写真が Salesforce にアップロードされるたびに、写真は Heroku のアプリケーションに送信されて処理され、サイズ変更済みの画像が Salesforce に保存されます。外部プロセスを処理する Heroku のアプリケーションが担当するのは、システムのその部分のみです。この場合、そのアプリケーションをマイクロサービスとみなして、その他のシステム連動関係なしで個別にリリースできます。

統合手法の概要

ここまでで、データ複製、データプロキシ、カスタムユーザインターフェース、外部プロセスがすべて、Heroku と Salesforce を組み合わせる、大きな理由であることを理解できたと思います。ところで、これは実際にどのように行うのでしょうか。このような種類のインテグレーションを成し遂げるには、次のように多くの手法を利用できます。

  • Heroku Connect
  • Salesforce Connect
  • Salesforce REST API
  • コールアウト
  • キャンバス

ここで、それぞれの手法について詳しく説明しますが、はじめに概要を説明します。

Heroku Connect

Heroku Connect では、データ複製とデータプロキシの両方が Salesforce に提供されます。データ複製では、Salesforce と Heroku Postgres データベースとの間でデータが同期されます。同期は、設定方法に応じて一方向か双方向になります。Heroku Connect を使い始める前に、Trailhead プロジェクト「クイックスタート: Heroku Connect」を確認してください。Heroku Connect では、Heroku 外部オブジェクトが使用されて、OData プロトコルによって Salesforce にデータプロキシも提供されます。Heroku 外部オブジェクトにより、OData ラッパーが Heroku Postgres データベースに提供され、Heroku Connect は接続を維持します。この機能により、その他の Web サービスが、ラッパーによって生成された RESTful エンドポイントを使用して、特定の Heroku Postgres データベース内からデータを取得できるようになります。

矢印がまず Salesforce から中間コンポーネントへ、次に Heroku へ向かい、取引先責任者が挿入されたらまた Salesforce に戻ることを示す図

Heroku Connect をデータ複製に使用して得られる最大の利益として、Heroku のアプリケーションが Salesforce アプリケーションのデータの一部に速く簡単にアクセスできることが挙げられます。アプリケーション開発者は、クエリ用に標準的な SQL を通常の場合と同じように作成するだけですみます。Heroku Connect と Postgres では、遅延が少なくてスループットが高い方法で Salesforce アプリケーションのデータにアクセスできます。

Salesforce Connect

Salesforce Connect (以前の Lightning Connect) はデータプロキシとして使用して、OData またはその他のデータソースを Salesforce にオンデマンドで引き出すことができます。データは Salesforce データベースにコピーされません。エンドポイントを実行して Heroku で OData 2.0 を公開したり、外部システムによって提供されているかのようにエンドポイントを実行したりできます。前述のように、Heroku Connect で Heroku Postgres データベースを OData として公開して、それを Salesforce Connect で消費できます。Salesforce では、Salesforce Connect カスタムアダプタにより、XML や JSON による REST と SOAP など、Apex でやり取りできる、どのようなデータソースでもプロキシできます。

外部オブジェクトを使用して、SAP、Oracle、Workday、Heroku を通じて使用できる外部データに外部的に接続できることを示す画像

Salesforce Connect の主な利点として、外部データが Salesforce UI に持ち込まれて、データが Salesforce 内に存在するかのように表示されるが、外部データソースからオンデマンドでプロキシされたものであることが挙げられます。このプロセスにより、Salesforce ユーザは、さまざまなデータソースを簡単に照合できます。

Salesforce REST API

Salesforce REST API では、Heroku のアプリケーションが、簡単な JSON 形式の HTTP 要求で Salesforce アプリケーションのデータにアクセスできます。このインテグレーションは、データプロキシとカスタムユーザインターフェースのために使用できます。オープンソーステクノロジを利用して構築し、Heroku 上で実行しているアプリケーションでは、OAuth を使用してカスタムユーザインターフェースでユーザを認証し、ユーザに代わって Salesforce アプリケーションのデータを操作できます。ユーザインターフェースがないインテグレーションの使用事例では、Salesforce と外部システムとの間でデータを仲介できます。

Salesforce のオブジェクトと Heroku との REST インターフェースを介した接続を示す画像

コールアウト

Salesforce からコールアウトを使用して、Heroku 上の外部プロセスをコールできます。Apex でコールアウトを作成するか、ワークフローアウトバウンドメッセージを使用して、Salesforce のイベントから Heroku 上のプロセスの実行をトリガします。そのプロセスは、多くの場合、前述の統合手法のうちいずれかを使用して、処理結果を Salesforce に戻します。

アウトバンドメッセージからトリガされたか送信された Salesforce とデータイベントを含むボックスを示す図。ボックスからの矢印と Heroku でホストされるすべてのアプリケーションを含む別のボックスへの参照

キャンバス

キャンバスでは、外部ユーザインターフェースを Salesforce に読み込んで、JavaScript API によって Salesforce アプリケーションのデータを操作できます。外部 UI を Heroku 上で実行し、オープンソース Web テクノロジを利用して外部 UI を構築できます。キャンバスアプリケーションが行うデータ要求は、Salesforce ユーザのコンテキストで実行されます。

Heroku アプリケーションがキャンバス Javascript ブリッジを介して Salesforce とやりとりできることを示す図

統合手法の比較

Salesforce と Heroku の各統合手法には、手元の開発者スキルセットと使用事例に応じた適所があります。統合オプション間には、基本的な違いがいくつかあります。

Heroku Connect Salesforce Connect REST API コールアウト キャンバス
セキュリティモデル インテグレーションユーザ インテグレーションユーザや指定ユーザなど、さまざま OAuth アプリケーションユーザ アプリケーションユーザ
制限 制限から除外 ソース、オブジェクト、項目の最大数 API の制限 API の制限 要求の制限
SObject 機能 すべての標準機能 参照のみ
数式項目と積み上げ集計項目なし
トリガ、ワークフロー、承認プロセスなし
入力規則なし
項目履歴管理
メモ、添付ファイルなし
すべての標準機能 N/A すべての標準機能
データ戦略 リアルタイム BiDi 同期または OData OData またはプロキシ 参照とコピー ペイロード キャンバス API
エンドユーザ 匿名、顧客 Salesforce ユーザ すべて なし Salesforce ユーザ
プロトコル SQL Apex HTTP HTTP HTTP

インテグレーションの一般的な提案事項は次のとおりです。

  • Salesforce と Heroku の間でデータを複製するには、Heroku Connect を使用します。
  • Heroku Postgres データベースを Salesforce に公開するには、Heroku Connect 外部オブジェクトを使用します。
  • OData、SOAP、XML、JSON のデータソースを Salesforce にプロキシするには、Salesforce Connect を使用します。
  • カスタム UI が Heroku 上にあってユーザが Salesforce によってログインする場合など、Heroku Connect が適合しない場合は、Salesforce REST API を使用します。
  • Salesforce データイベントの処理のオフロードまたは拡張を行うには、Salesforce から Heroku にコールアウトを使用します。
  • Heroku またはその他の外部 Web アプリケーションから Salesforce にカスタム UI を埋め込むには、キャンバスを使用します。

リソース