JRuby を使って Salesforce のデータを操作する:CData JDBC Driver

by 杉本和也 | 2020年07月08日

こんにちは。CData Software Japan リードエンジニアの杉本です。

最近 JRuby というJVM上で動かすことができる Rubyインタプリタ の Java実装を知りました。

https://www.jruby.org/

以下のWikiでも書かれている通り、JRuby は Javaプラットフォームのクラスを参照して、利用することが可能になっています。面白いですね。

ja.wikipedia.org

include Java

frame = javax.swing.JFrame.new()
frame.getContentPane().add(javax.swing.JLabel.new('Hello, World!'))
frame.setDefaultCloseOperation(javax.swing.JFrame::EXIT_ON_CLOSE)
frame.pack()
frame.set_visible(true)

そこで今回はJRuby から CData JDBC Driver を使って、Salesforceに接続するというのをやってみました。

手順

必要なもの

  • JRuby
  • CData Salesforce JDBC Driver
  • Salesforce アカウント(トライアルの取得方法はこちらを参照)

今回は予めJDKがインストールしてあるWindowsマシンで試しています。

jRuby本体の入手

以下からJRuby本体を入手して、任意のフォルダに展開しました。

https://www.jruby.org/download

f:id:sugimomoto:20200703155114p:plain

環境変数でPathを通して実行できる状態にしておきます。

> jruby -version
> jruby 9.1.17.0 (2.3.3) 2018-04-20 d8b1ff9 OpenJDK 64-Bit Server VM 11.0.1+13 on 11.0.1+13 +jit ```

Salesforce JDBC Driver のインストール

続いて、CData Salesforce JDBC Driver をインストールします。トライアルは以下のURLから入手できます。

https://www.cdata.com/jp/drivers/salesforce/jdbc/

f:id:sugimomoto:20200116122206p:plain

ダウンロード後、exeファイルを実行し、セットアップを進めます。

f:id:sugimomoto:20200116122213p:plain

インストール完了後「C:\Program Files\CData\CData JDBC Driver for Salesforce 2019J\lib」にDriver本体であるjarファイルが生成されます。

f:id:sugimomoto:20200703155121p:plain

JRuby で CData JDBC Driver へアクセスする

まずシンプルなプログラムでアクセスしてみたいと思います。JRubyはJavaのクラスやメソッドをそのまま呼び出せるので、CData JDBC Driverのヘルプに書かれているコードを参考に実装することができます。

http://cdn.cdata.com/help/RFE/jp/jdbc/pg_JDBCqueries.htm

単純にAccount一覧を取得するプログラムを書いてみました。

gist.github.com

実行すると、以下のようにJDBC経由でデータを取得できました。

>jruby -S Sample.rb

0012x000009VGSvAAO GenePoint CDataUpdate
0012x000009VGStAAO United Oil & Gas, UK
0012x000009VGSuAAO United Oil & Gas, Singapore
0012x000009VGSlAAO Edge Communications
0012x000009VGSmAAO Burlington Textiles Corp of America
0012x000009VGSnAAO Pyramid Construction Inc.
0012x000009VGSoAAO Dickenson plc
0012x000009VGSpAAO Grand Hotels & Resorts Ltd
0012x000009VGSrAAO Express Logistics and Transport
0012x000009VGSsAAO University of Arizona
0012x000009VGSqAAO United Oil & Gas Corp.
0012x000009VGSwAAO sForce

システムテーブル参照・プリペアドステートメント・INSERT・UPDATE

JDBC Driverは各種テーブルやカラム情報を取得するためのシステムテーブルや、プリペアドステートメント・INSERT・UPDATEもサポートしています。

ざっといろんな機能を試したソースコードが以下の通りになります。

基本的にはJDBC実行の文法さえおさえておけば、Javaと同様のアプローチで実行できます。

gist.github.com

以下のような結果を得ることができました。問題なくJavaからの実行と同等の機能が得られています。

> jruby -S SampleCodeForSalesforce.rb


                                    

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。