Skip to main content

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 とオープンソーステクノロジーをネイティブの Salesforce Platform オプションより優先して使用する意思決定を下すことになります。

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

外部プロセスでは、一括処理やトリガーイベント処理を 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 では、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 に戻します。

Heroku と外部サービスについての詳細は、「Extend Flows with Heroku Compute: An Event Driven Pattern (Heroku Compute を使用したフローの拡張: イベント駆動型パターン)」ブログ投稿を参照してください。

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

統合手法の比較

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

Heroku Connect

Salesforce Connect

REST API

コールアウト

セキュリティモデル

インテグレーションユーザー

インテグレーションユーザーや指定ユーザーなど、さまざま

OAuth

アプリケーションユーザー

制限

制限から除外

ソース、オブジェクト、項目の最大数

API の制限

API の制限

SObject 機能

すべての標準機能

参照のみ

数式項目、積み上げ集計項目なし

トリガー、承認プロセスなし

入力規則なし

項目履歴管理

メモ、添付ファイルなし

すべての標準機能

N/A

データ戦略

リアルタイム BiDi 同期または OData

OData またはプロキシ

参照とコピー

ペイロード

エンドユーザー

匿名、顧客

Salesforce ユーザー

すべて

なし

プロトコル

SQL

Apex

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 にコールアウトを使用します。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む