本記事では CData サポート担当からこんなことを聞かれたらどこを確認すべきか?という観点で、よく頂くお問合せ内容をご紹介します。
記事はこちら →Pure R スクリプトおよび 標準SQL を使って、R およびJava をインストール可能なあらゆるマシン上でMoney Forward Expense にアクセス。CData JDBC Driver for MFExpense とRJDBC package を使って、R でリモートMoney Forward Expense data を利用できます。CData Driver を使うことで、業界が認めた基準で書かれたドライバーを活用して、オープンソースでポピュラーなR 言語のデータにアクセスできます。この記事では、ドライバーを使ってMoney Forward Expense にSQL クエリを実行する方法、および標準R 関数を呼び出してMoney Forward Expense をビジュアライズする方法について説明します。
マルチスレッドのMicrosoft R Open を実行すること、またはBLAS/LAPACK ライブラリにリンクされたオープン R を実行することによって、マルチスレッドおよびマネージドコードから利益を得られたドライバーのパフォーマンスにマッチできます。ここでは、Microsoft R Open 3.2.3 を使用します。CRAN レポジトリのJan. 1, 2016 snapshot からパッケージをインストールするために事前設定されています。このsnapshot は再現性を保証します。
ドライバーを使うにはRJDBC パッケージをダウンロードします。RJDBC パッケージをインストールしたら、次のコードを入力してパッケージをロードします。
library(RJDBC)
下記の情報を使いMoney Forward Expense にJDBC データソースとして接続します。
dbConnect やdbSendQuery のようなDBI 関数は、R にデータアクセスコードを書くための統一インターフェースを提供します。
driver <- JDBC(driverClass = "cdata.jdbc.mfexpense.MFExpenseDriver", classPath = "MyInstallationDir\lib\cdata.jdbc.mfexpense.jar", identifier.quote = "'")
これで、DBI 関数を使ってMoney Forward Expense に接続しSQL クエリを実行する準備が整いました。dbConnect 関数を使ってJDBC 接続を初期化します。一般的なJDBC 接続文字列は次のとおりです。
conn <- dbConnect(driver,"OAuthClientId=MyOAuthClientId;OAuthClientSecret=MyOAuthClientSecret;InitiateOAuth=GETANDREFRESH")
MoneyForward Expense はOAuth 2 認証標準を利用しています。MoneyForward Expense にアプリケーションを登録し、OAuthClientId およびOAuthClientSecret を取得する必要があります。認証方法については、ヘルプドキュメントの「MoneyForward Expense への接続」を参照してください。
また、ほとんどのテーブルを操作するためにOfficeId プロパティを指定する必要があります。
ドライバーはMoney Forward Expense API をリレーショナルデータベース、ビュー、ストアドプロシージャとしてモデルします。次のコードを使ってテーブルリストを検出します。
dbListTables(conn)
dbGetQuery 関数を使ってMoney Forward Expense API がサポートするすべてのSQL クエリを実行できます:
offices <- dbGetQuery(conn,"SELECT Id, Name FROM Offices")
次のコマンドを使って、結果を[data viewer]ウィンドウで見ることができます。
View(offices)
CRAN レポジトリで利用可能なあらゆるデータ初期化パッケージを使ってMoney Forward Expense を分析する準備が整いました。ビルトインバーのplot 関数を使って簡単なバーを作成できます。
par(las=2,ps=10,mar=c(5,15,4,2)) barplot(offices$Name, main="Money Forward Expense Offices", names.arg = offices$Id, horiz=TRUE)