« 2015年7月 | メイン | 2015年9月 »

2015年8月

2015年8月27日 (木)

HerokuPostgresにまつわる小ネタ

こんにちは、徐々に涼しくなってきて活力を取り戻しつつある浅野です。

今日は、Heroku Postgresにまつわる小ネタ

  1. Heroku Postgres の Rollbackの意図がわかった気がした
  2. 環境変数 DATABASE_URLが変更不可になった

の2つを紹介します。

Heroku Postgres の Rollbackの意図がわかった

Heroku Postgres のロールバックがどんなものかは過去に紹介しております。 ここでも指摘している通り、誤解を招きやすい名前ですよね。

このロールバック、こんな風に理解すれば確かにロールバックだ、と納得するのではという気付きがありました。

これ、 heroku releases:rollback (アプリを過去のリリースバージョンに戻す)とセットで使う想定でロールバックの名前が与えられたのでは、と思ったのです。

「本番環境に意図せぬ状態のアプリをデプロイしてしまった時に、DBスキーマのマイグレーションも動いてしまった」という状況で、 アプリを安定版に戻すには heroku releases:rollback、DBを安定版のスキーマ/データに戻すには、postgresql の rollback機能を使用する と思えば腑に落ちる名前だなと。

と思ったら、公式の Heroku Postgres Rollback

just as heroku releases:rollback allows you to roll back to an older deployment of your application.

って書いてありました…。

環境変数 DATABASE_URLが変更不可になった

アプリにHeroku Postgresアドオンを追加した時に自動的に付与される環境変数 DATABASE_URL の値が変更できなくなりました。(と同僚のおっぴー先生に教えてもらいました)

DashBoardからこの環境変数の値を変更して保存すると、以下のようなエラーメッセージが表示されます。

Heroku_error


複数の Heroku Postgresを使っていて、主となるDB(DATABASE_URLの環境変数で接続できる)を切り替える時にダッシュボードから環境変数を直接変更していたから非常に困る、と思った方にはこちらheroku pg:promote コマンドをお使いください。

上記のケースを除くとDATABASE_URLの値を任意の値へ変更できて嬉しいことあるっけ?と思いつつも、変える必要のない値を変更できなくなると一層安心して使えますね。こういう地味な改善、素敵です。

2015年8月21日 (金)

Node のアプリケーションから RDB を利用する。

こんにちは、Swift 2.0 と watchOS 2 が気になっている三宅ですが、今回も Node.js についてです。

Node.js のアプリケーションといえば MongoDB というイメージが強いですが、従来の RDB を利用したい場面も出てくると思います。
とくに Heroku では Heroku Postgres がオフィシャルで提供されており、 PGBackups や Fork などの便利な機能を利用することができます。
そこで今回は Node のアプリケーションで RDB を使う際に便利な、次の 3 つのプラグインを紹介したいと思います。

  1. Sequelize
  2. Sequelize CLI
  3. Epilogue

Sequelize

Sequelize は PostgreSQL をはじめ、MySQL や MariaDB、SQLite へのアクセスを提供する Node.js のライブラリです。

sequelize/sequelize

オブジェクトとテーブル間の関連の定義を行う ORM 機能、モデルの定義に基づくテーブルの自動生成、トランザクションなどの機能を提供します。
また、モデルへのアクセスやテーブルの操作などは Promise ベースのメソッドで提供されており、Node のプログラミングスタイルとマッチしていて違和感なく利用することができます。

npm でインストールすることができ、各 DB へアクセスするためのライブラリを合わせてインストールするだけで使い始めることができます。
以下は PostgreSQL で利用する場合のコマンドです。

$ npm install --save sequelize
$ npm install --save pg pg-hstore

開発も活発でドキュメントも詳しく、安心して利用することができると思います。
Seqeulize

Sequelize CLI

継続的な開発やチーム開発などでは、データベースのマイグレーションの管理が重要となってきます。
Sequelize 単体でも定義されたモデルに基づきテーブルを変更する機能は提供されていますが、バージョン管理などを行うことはできません。
sequelize/cli はデータベースへの変更をコードとして定義し、バージョン管理を容易にするためのコマンドラインツールです。

$ npm install -g sequelize-cli

gulp や Grunt と同様に、コマンドを利用するためにグローバルにパッケージをインストールする必要があります。
Heroku などグローバルにインストールできない環境ではローカルにインストールし、node_modules/.bin 以下の実行モジュールを指定してコマンドを実行してください。

Seqeulize CLI では、マイグレーション定義に基づくマイグレーションの実行、モデルの作成と対応するマイグレーション定義の生成などを行う事ができます。

$ seqeulize init

上記のコマンドでモデルを定義するディレクトリや DB 接続の設定を行うファイルが生成され、CLI の機能を利用する準備が整います。

モデルの作成は以下のように行います。

$ sequelize model:create --name User --attributes first_name:string,last_name:string

/models 配下に user.js が作成されるのとともに、/migrations の下にマイグレーションのためのコードが記述されたファイルが生成されます。
そして、以下のコマンドでマイグレーションを実行します。

$ seqeulize db:migrate

DB には自動的にマイグレーションの実行履歴を管理するためのテーブルが作成され、実行されたマイグレーションの履歴が管理されます。
これらのファイルをバージョン管理する事で、データベースも含めアプリケーションを任意のバージョンに戻す事ができ、またアプリケーションのデプロイ環境の切り替えが容易になります。

Epilogue

dchester/epilogue は Express や Restify のアプリケーションに対し、 Seqeulize のモデルに基づく REST API を作成するためのライブラリです。

var epilogue = require('epilogue');

epilogue.initialize({
  app: app,
  seqeulize: seqeulize
});

var userResource = epilogue.resource({
  model: User,
  endpoint: ['/users', '/users/:id']
});

上記のコードで、Seqeulize で定義した User の REST API が作成されます。
モデルとエンドポイントの指定が必要となるため、モデルの数が多くなると煩雑になってしまうのですが定型的なエンドポイントの名前で構わないのであれば、以下のコードで一気に作成する事ができます。

// 英単語の複数形を取得する事ができる npm ライブラリ
var plural = require('plural');

// Seqeulize が作成した models ディレクトリへのパス
var db = require('../models');

// Resource オブジェクトを保持するオブジェクト
var resources = {};

Object.keys(db.sequelize.models).forEach(function(modelName) {
  var apiName = plural(modelName.toLowerCase());
  var resource = epilogue.resource({
    model: db[modelName],
    endpoints: ['/api/' + apiName, '/api/' + apiName + '/:id']
  });
  resources[modelName] = resource;
});

Seqeulize によって作成される models/index.js は定義済みのデータベース接続情報によって作成された Seqeulize のオブジェクトを保持するオブジェクトをエクスポートしています。
seqeulize オブジェクトは定義されたモデルをモデル名をキーとした models オブジェクトを保持しているので、そのオブジェクトをもとに REST API を作成します。
上記の例では、モデル名を小文字にして複数形にした上で、/api/{models} の形で REST API を作成しています。

開発の初期段階などで、とりあえずモデルの CRUD を行うための API を用意したいときなどには有効かと思います。


今回は Node で RDB を利用する際に便利なライブラリを紹介しました。
MongoDB と mongoose の組み合わせはよく紹介されていますが、もちろん、RDB も利用することができます。
今のプロジェクトでは Express + Seqeulize + Heroku Postgres の組み合わせで開発を進めています。
その際に気づいたことがあれば、またこの場で共有できればと思います。

2015年8月12日 (水)

【Herokuお絵かき】Herokuにデプロイする!

こんにちは、なかやまです。

前回に引き続きキャラクターを使って、Herokuにデプロイするところをお絵かきしてみたいと思います!

Heroku2_01

前回(【Herokuお絵かき】Herokuってな~に?)、

じーちゃんにアプリを作るならHerokuがおすすめだよと言われました。

 

#2.Herokuにデプロイする

たろうはPlay Framework(以下play)をつかってデプロイすることにチャレンジするようです。

がんばれたろう!

Heroku2_02_2

 

じーちゃんの教えにより、まずはローカル環境でちょっとだけ動くプログラムを書いてみることになりました。

Heroku2_03

 

やる気いっぱいのたろう。

Heroku2_04

 

・ローカル環境を作る

Macをつかって開発環境をつくるようです。PVM(Play Version Manager)入れて、playをインストールして、、Eclipseの準備も整ったようですよ!

Heroku2_05_2

 

ローカル環境を作るのも結構大変。

たろうがんばれー!

Heroku2_06

playをEclipseの設定ファイルを生成する

https://www.playframework.com/documentation/ja/1.2.x/ide

 

・gitの設定

ローカル環境でプログラムが動いたら、次はgitにコミットします。

Heroku2_08_2

 

・Herokuの設定

Herokuアカウントの作成と、Heroku Toolbeltのインストールを行いましょう。

Heroku2_09

 

・Herokuにデプロイする(git push heroku master)

Herokuにデプロイしますよ!いけーー!

Heroku2_10

 

Herokuではgit pushを確認すると、Dynoに展開するためのslugという塊を作ってくれます。

あわせてgitにコミットされたファイルを見ながら、どの言語・フレームワークを使っているから、このビルドパックを使う、ということもHerokuが判断してくれます。

playだと「/conf/application.conf」ファイルがあるのでplayだね!となるわけです。

ビルドパックを自作することもできるそうです。

参考)HerokuのSlugとその動き

Heroku2_11

 

指定されたライブラリのダウンロードなど、コンパイルが行われます。

Heroku2_13_2

 

コンパイルに成功するとslugという塊ができます。

このslugですが、サイズがあまりにも大きい場合にはデプロイできないので注意しましょう。

すばやく展開するためにも、サイズは小さいほうがよいです。

https://devcenter.heroku.com/articles/slug-compiler#slug-size

Heroku2_13

 

slugの作成に成功すると、指定された数のDynoが起動します。

Heroku2_14

 

100Dynoだといっぱいです。

Heroku2_15

 

ローカル環境のモジュールをデプロイできたようですね。

ですが、playのバージョンが1.3でデプロイされてしまったようです。。

ローカル環境では1.2で動いていたのに、なぜだろう?

Heroku2_17_2

ビルドのログはActivityタグから確認ができますよ。

Activity

 

ビルドパックの説明をみると、定義ファイルにバージョンを指定しない場合はデフォルトの1.3が指定されると書いてました。なるほどなるほど。

設定ファイル(dependencies.yml )にバージョンきちんとかいてみましょう。

Heroku2_18_3

https://github.com/heroku/heroku-buildpack-play

 

モジュールに変更があった場合は、再度gitのコミットと、git push heroku masterをしましょう!

Heroku2_19_3

 

・heroku run bash

run bashコマンドを使うとDynoにアクセスできます。

ここではインストールされたplayのバージョンを聞いてみました。

Heroku2_19

正しいバージョンでインストールできたようです!よかったねたろう!

 

 

 

・おたより

そういえば、おたよりが届いてました!2通目です!ありがたや。

Heroku2_22

 

前回のHeroku説明について「あってますよ」というメッセージをいただきました。

ありがとうございますー。

Heroku2_23_2

フィードバックいただけるとうれしいです。m(_ _)m

Heroku2_24

おたより(なかやま直通)

2015年8月 5日 (水)

【速報】HerokuのPerformanceDynoがさらなるPerformanceを獲得

はい、どうも。 中2日、2連投のおっぴーです。

タイトルですべてを要旨は全て言い尽くしておりますが、HerokuでもっともパワフルなDynoであるPerformanceDyno、いわゆるPXDynoのパフォーマンスが向上しました。

もともと6GBだったメモリが14GB、ディスクもSSDになったということです。

さらに嬉しいのはお値段が据え置き(っぽい)ということろで、無償のアップグレードと考えられます。

Herokuを利用しているとダッシュボードなど、少しずつ改善されている部分もあるのですが、こうした大きなアップグレードを聞くとやはりうれしいですね。

Herokuの公式発表は下記のURLで見られます。

https://devcenter.heroku.com/changelog-items/690

すでにPXDynoを利用しているユーザーは、72時間以内にあらたなPXDynoに切り替わるようです。 こうしたアップグレードが簡単なところもPaaSの良い所ですね。

「とくに2XDynoとPXDynoの間を埋める性能の新Dynoの登場があるとうれしい」(弊社、浅野)という意見もありますので、今後もさらなる進化を期待しています。

参考情報

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