はじめに
SalesforceとHerokuの連携システムを構築する中で、SalesforceからHerokuのデータを閲覧したいという要望が多く寄せられます。代表的なユースケースは以下の2つです:
- Herokuで構築したお客様向けWebサイトからの購入データなどをSalesforceに連携
- Salesforceのデータストレージ制限を超えるデータをHerokuに保存し、Salesforce画面から主に閲覧目的で使用
本記事では、これらの要望を満たすための2つの方法、「Heroku Connect」と「Salesforce Connect」について詳しく解説します。
Heroku ConnectとSalesforce Connectの主な違い
これら2つの手法の最大の違いは、Salesforce内にデータを保持するかどうかにあります:
- Heroku Connect: Salesforce内にHerokuと同じデータを保持します。
- Salesforce Connect: Salesforce内にデータを保持せず、Herokuのデータを直接閲覧できるようにします。

この違いにより、各ビジネスケースに適した方法を選択し、最適なシステム構成を実現することができます。以降では、混同しやすいこの2つの手法の特徴、設定手順、メリット、注意点などを詳細に説明していきます。
【Heroku Connect】Heroku Connectとは?
先述したように、Heroku ConnectはSalesforceとHeroku間で実レコードを双方向で同期するソリューションです。このツールを使用することで、両プラットフォーム間のデータ連携を効率的に行うことができます。
具体的なユースケース
Heroku Connectの最も一般的なユースケースは、Salesforceを社内管理画面として、Herokuをお客様向けのポータル画面として提供するパターンです。
具体例を挙げてみましょう:
- Salesforceで管理している商品情報をHerokuに連携
- Herokuで連携された商品情報をお客様に訴求
- お客様が商品を購入した情報を、HerokuからSalesforceに逆連携
このようなフローを実現することで、社内の商品管理とお客様向けの販売活動をシームレスに連携させることができます。

上の例では、購買レコードが実際にSalesforce内のレコードとして保存されます。そのため、この購買レコードは手動で作成したレコードと全く同じように活用できます。具体的には、レポートやダッシュボードでの使用、値の変更を契機としたビジネスプロセスの実行などに適用可能です。
また、Heroku ConnectではSalesforceとHeroku間で双方向の同期が可能です。これにより、Salesforce内での変更をHerokuのポータル画面に反映させることができます。例えば、購買レコードのステータス(受理、配送開始、配送完了など)の変更を、顧客が閲覧しているポータル画面にリアルタイムで表示することが可能になります。
Heroku Connectの設定手順
それでは、Heroku Connectの具体的な設定手順を見ていきましょう。
まずAdd-onのインストールからです。Heroku PostgresとHeroku ConnectをAdd-onとしてインストールします。

設定を続けていきます。
Heroku Connectのリンクをクリックして設定画面に遷移します。

Setup Connectionから設定を行っていきます。


Authorizeをクリックして、接続対象のSalesforce組織への認証および認可を行います。



次にSalesforce組織との連携の設定をしていきます。Mappingタブで行っていきます。

Create Mappingをクリックします。

連携するオブジェクトを選択します。今回は最も一般的なAccount(取引先)を連携します。

連携するカスタム項目/フィールドを選択します。
これで完了です。Explorerタブで保存結果を簡単に確認することも可能です。

ノーコードで専門的な知識を必要とせず、とても簡単に設定できます。

こちらの例は、Heroku側でRuby on Railsを使用してWebアプリケーションを構築する際によく行うユーザー管理部分のデータモデル連携設定です。このモデルはExperience Cloudのデータモデルとよく似ており、Salesforceの取引先・取引先責任者のデータモデルとの親和性が高いです。
さらに、このuserデータモデルは、Railsで認証処理を行う際によく使用されるdevise gemとも相性が良く、OmniAuthなどのgemを併用することで、他のIDaaS系SaaSとのSSO連携も無理なく拡張できます。userとContactが分離されているため、認証と業務データの区分けが明確です。これにより、「ユーザー認証は停止したいが、これまでの業務データは残したい」といったケースにも柔軟に対応できます。
これらの利点から、当社ではこのモデルを使用してシステムを構築することが多いです。
【Heroku Connect】Heroku Connectのメリットと留意すべき事項
これまでHeroku Connectの特徴や設定について詳細に説明してきました。ここで、Heroku Connectのメリットと留意すべき事項について改めて整理します。
メリット
Heroku Connectの最大のメリットは、ノーコードで非常に簡単に双方向同期が実現できる点です。この特徴により、以下のような利点が得られます:
- 開発工数の大幅な削減
- 連携システムの保守・運用コストの低減
- リアルタイムデータ同期による業務効率の向上

留意すべき事項
一方で、Heroku Connectを使用する際は以下の点に注意が必要です:
課金体系と容量計算: Heroku Connectは連携レコード件数で課金されます。そのため、同期対象のレコードを適切に選定しないと、予想外にランニングコストが増加する可能性があります。システム構築時点で正しく容量計算を行い、Heroku Postgresに保存されるレコード件数、同期により連携されるレコード件数を精度高く計算することが必要です。

【Salesforce Connect】Salesforce Connectとは?
続けて、Salesforce Connectの説明に移ります。Salesforce Connectは、外部のデータソースの情報をSalesforce上でレコードとして扱えるようにするソリューションです。このツールの特徴は、Salesforce内に実際にデータを保存せずに外部データにアクセスできる点にあります。
重要な点として、この投稿ではHerokuとの連携を中心に説明していますが、Salesforce ConnectはHerokuに限定されたものではありません。Salesforce Connectが要求する連携形式に準拠していれば、他のデータソースとも同様に連携が可能です。
この記事が扱うHeroku Postgresの場合では、Heroku External Objectsという機能が提供されています。この機能がHeroku PostgresのODataラッパーとして機能するため、Salesforce ConnectによりHeroku Postgresに接続することができるようになります。
当社が扱うユースケースとして一般的な使用例は、Salesforceのデータストレージ制限を超える大容量のデータを扱う場合です。Salesforce Connectを利用することで、これらの大規模データセットをSalesforce内に直接保存することなく、Salesforceの管理画面から簡単に閲覧・操作することが可能になります。この例として、以下のようなシナリオが考えられます:
- Webのアクセスログのような大量のデータを外部ストレージに保存し、Salesforceから参照する
- IoTデバイスから収集された膨大なセンサーデータを外部ストレージで管理し、Salesforceから閲覧する
- 移行前のレガシーシステムのデータをSalesforce Connectを介してSalesforceから参照する

【Herokuの設定】Salesforce ConnectとHeroku External Objectsの設定手順
それでは、Salesforce ConnectとHeroku External Objectsを使用して、HerokuのデータをSalesforceから閲覧する設定手順を見ていきましょう。

先程のHeroku Connectの画面から設定を行います。”External Objects”のタブに開き、”Create credentials”のボタンをクリックします。

【Salesforceの設定】外部データソースと外部オブジェクトの作成
続けてSalesforce側も設定していきます。

外部データソースのページを開き、”新規外部データソース”のボタンをクリックします。

種別を、Salesforce Connect OData 4.0を選択し、先程Herokuの画面で払い出した認証情報をセットして作成します。

その後、”検証して同期”をクリックします。

以上で設定は完了です。この設定により、外部データをあたかもSalesforce内に保存されているかのように参照することが可能になります。重要な点は、これらのデータが実際にはSalesforce内に保存されているわけではないということです。Salesforce Connectは外部データソースへのリアルタイムアクセスを提供しているだけであり、データ自体は元の場所にのみ保存されています。この仕組みにより、ストレージ使用量を抑えつつ、大量データを保持するテーブルへのSalesforce画面上からのアクセスが実現できます。

【Salesforce Connect】Salesforce Connectのメリットと留意すべき事項
Heroku Connecの際と同じように、Salesforce Connectのメリットと留意すべき事項について改めて整理します。
メリット
Salesforce Connectの最大のメリットはSalesforceのデータストレージを消費せずに、大量データを保持するテーブルのデータを参照できるようになる点です。
- データストレージの節約: Salesforceのデータストレージを消費せずに、大量のデータを扱うことができます。
- リアルタイムアクセス: 外部データソースの最新情報をリアルタイムで参照できます。

留意すべき事項
一方で、Salesforce Connectを使用する際は以下の点に注意が必要です:
機能の制限: あたかもSalesforce内に保存されているように見えますが、「レコードタイプの概念が無い」「数式が作れない」など制限も一定数ある為、システム構築時の機能要件により、Salesforce Connectを採択するかどうかを検討する必要があります。

まとめ
本記事では、SalesforceとHerokuのデータ連携に関する2つの主要な方法、Heroku ConnectとSalesforce Connectについて詳しく解説しました。どちらの方法を選択するかは、プロジェクトの具体的な要件、データ量、予算、必要な機能などを総合的に考慮して決定する必要があります。Heroku Connectは、一定量までのデータの双方向同期が必要な場合に適しており、Salesforce Connectは大量データの参照が主な目的の場合に適していると考えられます。
適切な方法を選択することで、SalesforceとHerokuの強みを最大限に活かしたシステム構築が可能となり、ビジネスプロセスの効率化と顧客体験の向上を実現できますので、ぜひ参考にして頂けると嬉しいです。