« Wercker v2でHerokuっぽい環境を作ってテストを動かす | メイン | 【速報】HerokuのPerformanceDynoがさらなるPerformanceを獲得 »

2015年8月 3日 (月)

HerokuConnectでお手軽なデータ連携。クリーム玄米ブランでお手軽な朝食。

はい、どうも。 最近の朝食はもっぱらクリーム玄米ブランのおっぴーです。 さくさくと食べごたえがあり、冷たいアイスコーヒーとの相性抜群。 夏バテや朝の忙しから、朝食をついつい抜いてしまうあなたにおすすめの組み合わせです。

ということで、今回はおすすめのHeroku謹製のアドオンHerokuConnectのご紹介です。 約1年前からGAとなっているアドオンであり、SalesforceとHerokuのデータ連携を行えるという便利さは理解されているものの、なかなか情報を手に入れることが難しい印象ですが、今年の2月からdemoというプラン名で無料で使えるようになっておりました。

また、最近はHerokuConnectで利用するSalesforceのAPIのCall数は利用回数には加算されないという発表もされるなど、さらにHerokuとSalesforceの親和性を高めてくれる、個人的にはとても注目しているアドオンです。

今回は基本的な使い方ついて、ご紹介したいと思います。

作業自体は簡単なものの、かなり(がんばって)丁寧に記事を書いた結果、少々長くなってしまったので、先に3行で結論を。

  • HerokuPostgresにデータ連携をするSalesforceのオブジェクトのテーブルが作られます
  • SaleforceとHerokuPostgresの双方向のデータ登録、更新が可能です
  • 上記の設定はとっても簡単です

herokuアプリの作成

まずは、herokuアプリを作ります。 今回は、heroku-connect-flect-demoという名前のアプリを作成します。 ちなみに、herokuアプリ名は世界中で一意である必要があるので、実際に試される際は適宜、変更してください。

heroku create heroku-connect-flect-demo

HerokuConnectの追加

さて次は、HerokuConnectを追加します。 今回は無料版として、demoというプラン名を指定して登録をします。

heroku addons:create herokuconnect:demo --app heroku-connect-flect-demo

追加に成功すると、下記のようなメッセージが表示されます。

Creating smiling-stably-8670... done, (free)
Adding smiling-stably-8670 to heroku-connect-flect-demo... done
Setting HEROKUCONNECT_SCHEMA, HEROKUCONNECT_URL and restarting heroku-connect-flect-demo... done, v3
Use 'heroku addons:open herokuconnect' to finish setup
Use `heroku addons:docs herokuconnect` to view documentation.

表示されているコマンドを実行すると、HerokuConnectの設定画面が開かれます。

heroku addons:open herokuconnect --app heroku-connect-flect-demo

おっと、まずはHerokuPostgresを追加しないといけませんね。

Heroku_connect1

ボタンを押して追加もできますが、HerokuPostgresをコマンドから追加しましょう。

heroku addons:create heroku-postgresql:hobby-dev --app heroku-connect-flect-demo

追加が完了したら、登録中の画面の「Refresh」を押して登録を続けましょう。

画面がリフレッシュされると追加したHerokuPostgresの情報が表示されます。

その下に、Enter schema nameとありますがこれはSalesforceのオブジェクトの情報をHerokuPostgres上で管理するために作成されるSchema名を入力し、決定する項目です。 今回はそのまま「salesforce」にしておきましょう。 では、次の設定画面に進むため「Next」ボタンをクリックしましょう。

Saleforceアカウントの作成

次に進むとSalesforceアカウントとの接続設定を行う画面が表示されます。 が、そのまえにSalesforceアカウントを作成し、連携をおこなうカスタムオブジェクトを作成しましょう。

今回は、無料で利用できるSalesforceのデベロッパーアカウントを作成します。 まずは、https://developer.salesforce.comに接続し、「サインアップ」のボタンをクリックします。

Salesforce1

つぎに必要情報を入力し、契約内容に同意を示すチェックをいれたら、「サインアップ」ボタンをクリックします。

Salesforce2

下記の画面が表示された登録は完了です。 表示されているメッセージに従い、入力したメールアドレスにメールが届いているか確認し、アクティベーションしましょう。

Salesforce3

連携用(テスト用)のカスタムオブジェクトの作成

作成したSalesforceアカウントにログインし、カスタムオブジェクトを作成します。 画面右上の「設定」をクリックし、左端に表示される項目から「作成」→「オブジェクト」をクリックします。

その後、「新規カスタムオブジェクト」をクリックすると独自のオブジェクトが作成できます。 ちなみにSalesforceに馴染みのない方に大雑把な説明をしますと、SalesforceのオブジェクトはRelationalDatabaseでいうところのTableとほぼ同義のものと捉えていただくとわかりやすいかと思います。

Salesforce4

今回はHerokuConnectのテストに利用するオブジェクトのため、単純にHerokuConnectTestという名称でオブジェクトを作成します。 必要な情報を入力して、「保存」をクリックするとカスタムオブジェクトの作成は完了します。

Salesforce5

次に、作成したカスタムオブジェクトのHerokuConnectTestにカスタム項目を追加します。 カスタム項目を追加するには、「カスタム項目&リレーション」で「新規」をクリックします。

Salesforce6

項目の属性としてSalesforceではさまざま用途に合わせて選択できますが、今回は単純にテキストを選択します。

Salesforce7

次に項目名と文字列の桁数を定義します。 今回は「testText」という項目名で 最長の文字列長の255文字で定義しましょう。

Salesforce8

次は、項目にたいする権限の設定を行います。 Salesforceには、「プロファイル」というユーザーをグループわけを行う概念があり、この「プロファイル」単位に今回、作成した項目についての「閲覧も修正(登録含む)もできない」、「閲覧のみ可能」、「閲覧も修正(登録含む)も可能」の3つから選択する画面です。

今回は、ブログ用のデモなのですべてのプロファイルにたいして「閲覧も修正(登録含む)も可能」にしていますが、実運用においては、用途に合わせて慎重に決める必要がある項目です。

Salesforce9

最後に、作成している「testText」項目をどのページに表示するか、という選択を行います。 ここでは「HerokuConnectTest」オブジェクトを作成した際に、同時に自動で作成されるページに表示することを選択します。 選択しない場合は、どこにも表示されず値の登録などもできないので、このまま表示されるように設定し、登録を完了します。

Salesforce10

以上でカスタムオブジェクトの作成とカスタム項目の追加が完了です。 さて、HerokuConnectの設定にもどりましょう!といいたのですが、もう少しだけSalesforceで作業を行います。

カスタムタブの作成

カスタムオブジェクトを作成し、そのオブジェクトにたいしてカスタム項目を追加しただけでは、Salesforce上でオブジェクトの編集はできません。

そのためにはカスタムタブ、という独自のタブを作成する必要があります。 画面の左から「作成」→「タブ」をクリックします。

表示された画面にはいくつかの「タブ」についての種類が表示されます。 今回は「カスタムオブジェクト」のタブを作成するため、「カスタムタブ」の新規作成を行います。 カスタムタブの左に表示されている「新規」をクリックしましょう。

Salesforce11

次にタブの詳細を選択します。 色々入力する必要はありますが、今回のデモで重要なのはオブジェクトの欄で上記で作成した「HerokuConnectTest」を選択することです。 選択をし、「タブスタイル」も適当に選択したら「次へ」をクリックして先に進みましょう。

Salesforce12

ここでもカスタム項目と同様にプロファイルにたいしてタブの操作を可能にするかどうかの選択を行う画面が表示されます。 ここもカスタム項目と同様にすべてのプロファイルにたいして操作を許可します。

Salesforce13

最後に作成したカスタムタブをどのアプリケーションから利用できるようにするか、を選択します。 このアプリケーションという概念ですが、これはSalesforceが提供する様々な機能へアクセスをおこなうためのタブをグループ分けするものと考えて良いと思います。 添付の画像では、「セールス」や「コールセンター」などの名称のアプリケーションがご確認いただけると思います。 これらは「標準アプリケーション」と呼ばれるもので、Salesforceが標準で提供するアプリケーションです。

今回は、これらのどのアプリケーションにたいしても、作成しているカスタムタブが追加されて問題はないので、すべてのアプリケーションから利用可能にして登録します。 ということで、「保存」をクリックして作成を完了します。

Salesforce14

完了すると、カスタムタブが追加されているのが確認できます。

Salesforce15

設定は以上で完了です。 が、ついでに「HerokuConnectTest」オブジェクトのレコードが作成できるか、確認してみましょう。

追加された「HerokuConnectTest」タブをクリックすると、画面が切り替わり「新規」というレコードを作成するためのボタンが表示されますので、そのボタンをクリックしましょう。

Salesforce16

入力項目に適当な値を入力し、「保存」をクリックするとレコードの登録は完了です。 ちなみに「HerokuConnectTest」という作成した覚えのない項目が必須入力の項目として存在していますが、これは、オブジェクトを作成するときに自動で作成される項目です。 一意の値である必要もなく、レコードのID(SalesforceはオブジェクトIDと呼びます)は別に生成されて保存されているため、IDのような存在でもありません。 検索結果の表示などで利用される値です。

Salesforce17

以上で、Salesforceの設定も完了しました。

HerokuConnectの設定

Salesforceへの接続設定

さて、HerokuConnectの設定の続きです。 HerokuConnectからSalesforceへの接続を行うための認証の途中でしたね。 まずは、接続先にSalesforceの環境を選択しましょう。 「Production」、「Sandbox」、「CustomDomain」と3つの選択肢が表示されますが、今回は「Production」を選択します。 ちなみにSandboxはSalesforceのステージング環境、CustomDomainはSalesforceを独自ドメインで運用している際にもちいる選択肢です。

選択したら右上の「Authorize」ボタンをクリックしましょう。

Heroku_connect4

「Authorize」をクリックするとSalesforceへの接続認証を行うために、ユーザー名とパスワードの入力を求められます。 HerokuConnectで接続したいSalesforceアカウントのユーザー名とパスワードを登録し、ログインボタンをクリックします。

Salesforce18

HerokuConnectにたいしてSalesforceへの接続をふくめた権限を与えてよいか、が問われますので、「許可」ボタンをクリックしましょう。

Salesforce19

認証が完了すると、HerokuConnectのダッシュボードが表示され、HerokuConnectを利用して接続しているHerokuのアプリケーション名とSalesforceのユーザー名が確認できます。

Heroku_connect6

さて、いよいよSalesforceとHerokuPostgresの接続、Mappingを行いましょう。 画面左下にある「Create Mapping」をクリックすると画面が設定画面へと切り替わります。

画面にはズラッとSalesforceのスタンダードオブジェクト(Salesforceが標準で提供するオブジェクト)とカスタムオブジェクトが並びます。 お目当てのオブジェクト名を、画面の右にある検索ペインを利用して絞り込むと簡単に探せます。 お目当てのオブジェクト、今回は上記で作成したHerokuConnectTestオブジェクトを接続する対象としてクリックします。

Heroku_connect7

ReadOnlyModeとRead / Write Mode

表示されている画面がHerokuConnectのメインとも言える画面です。 SalesforceのオブジェクトとHerokuPostgresのTableの結びつけやデータの連携の設定を行います。

Heroku_connect8

画面を眺めつつ、すこしHerokuConnectと考え方と操作の結びつきについて説明をします。 HerokuConnectにはReadOnlyModeとRead/WriteModeという2つの概念があります。 Salesforce→Herokuのデータ反映をReadOnlyModeと呼び、それにくわえてHeroku→Salesforceのデータ反映を行うことをRead/WriteModeと呼びます。

ですので、これらのモードは、モードそのものを指定するというよりは、Heroku→Salesforceのデータ反映を行うことを選択する(画面の「Write to Salesfore any updates to your database.」にチェックをつける)と、Read/WriteModeを選択したことになるのです。

画面では、「Write to Salesfore any updates to your database.」にチェックをつけているため、Read/WriteModeの選択をしています。

また、前後しますがSalesforceからHerokuPostgres(画面では「Salesforce→Database」と表示されていますが)の設定では、ポーリングをするか、Streaming APIを利用するかのどちらかが選択できます。 ポーリングはHerokuからSalesforceへ、Salesforce側のオブジェクトのレコードに変更がないか問い合わせを行うモードで、Streaming APIはSalesforceのオブジェクトに変更があった場合、即時でHerokuPostgresにデータを連携させる動きを行います。 ドキュメント(少々、古い気がするのですが。。。)では、Streaming API の利用を推奨しているので今回は、こちらを選択しています。

最後に、連携する項目についての選択を行います。 これについては説明は不要でしょう。連携が必要な項目にチェックをつけましょう。 今回は、上記で作成した「testText」と標準項目の「Name」を選択しています。

以上の設定をおこなったのち、「Save」をクリックするとHeorkuConnectの設定は完了です。

Heroku_connect9

完了するとマッピングの情報に行が追加されていることが確認できます。 また、余談ですがこの画面ではSalesforcのAPIの利用量も確認できます。 が、APIの利用量については気にしないで良いはずなので、今後はなくなるかもしれませんね。

以上で、HerokuConnectを利用したSalesforceとHerokuPostgresの接続作業は完了です。

Heroku_connect10

少し時間がたつと設定内容にしたがってSalesforceからHerokuPostgresにデータ連携がおこなれ、その結果がグラフに表示されているのがわかります。

HerokuPostgresの確認

さてさてこの状態でHerokuPostgresはどのような変化が起きているでしょうか。

まずはHerokuPostgresに接続してみましょう。

heroku pg:psql --app heroku-connect-flect-demo DATABASE_URL

接続が完了したら、上記で作成した「salesforce」Schemaの状態を見てみましょう。

\dt salesforce.*;

上記のコマンドを打つと、Schemaで定義されているTableの一覧が表示されます。 複数のテーブルがあるのですが、今回、詳細な説明は割愛させていただきます。 注目は最下部にある「herokuconnecttest__c」テーブルです。 HerokuConnectでデータ連携の設定を行うと、SalesforceのAPI名がすべて小文字で定義されたテーブルが作成されるのですね。

Herokupostgres1

では、その「herokuconnecttest__c」テーブルにデータが連携さているかを見てみましょう。

select * from salesforce.herokuconnecttest__c;

上記をコマンドを実行すると下記のように連携されたデータが見ることできました。

Herokupostgres2

ということで、無事、HerokuConnectのダッシュボードで確認できたように、データがHerokuPostgresに反映されていることが確認できました。

ほんとにお手軽

このブログを書くにあたっては、いちいちキャプチャをとっていたので時間がかかったのですが、HerokuもしくはSalesforceのどちらかの操作に慣れている方でであれば、この作業は30分もかからず完了できるはずです。

それだけお手軽にSalesforceとHerokuのアプリケーションでデータが活用できるとなると俄然、利用の検討の余地が出てくるというものです。

さらに、大事なことなので二回言います。 HerokuConnectによるSalesforceのAPIコール数は、APIの利用上限数には加算されません。 一度、連携させてしまえば利用制限を気にすることなく、CRMのデータを活かしたWebサービスの構築も可能になってしまいます。

今度は、といいつつなかなか続編を書かないのですが、HerokuConnectについてはさらに、詳細の利用方法を現在まとめております。

次回の更新では、更に踏み込んだ操作や動き、実際の利用の際の考慮点についてなども書いてみたいと思います。

コメント

コメントを投稿

採用情報

株式会社フレクトでは、事業拡大のため、
Salesforce/Force.comのアプリケーション
開発
HerokuやAWSなどのクラウドプラッ
トフォーム上でのWebアプリケーション開発

エンジニア、マネージャーを募集中です。

未経験でも、これからクラウドをやってみた
い方、是非ご応募下さい。

フレクト採用ページへ

会社紹介

株式会社フレクトは、
認定コンサルタント
認定上級デベロッパー
認定デベロッパー
が在籍している、
セールスフォースパートナーです。
heroku partnersにも登録されています。
herokuパートナー
株式会社フレクトのSalesforce/Force.com
導入支援サービス
弊社の認定プロフェッショナルが支援致します。
・Visualforce/Apexによるアプリ開発
・Salesforceと連携するWebアプリ開発
も承っております。
セールスフォースご検討の際は、
お気軽にお問合せください。
Powered by Six Apart