- はじめに
- 事前準備(CDataドライバ入手)
- 事前準備(Google Cloud Platform)埋め込みクレデンシャル方式
- 事前準備(Google Cloud Platform)OAuthクライアントID作成方式
- 事前準備(CDataドライバの接続テスト)
- 事前準備(DBVisualizerでの接続テスト&データ参照確認)
- 事前準備(Payaraへの接続設定)
- TALONでの接続
- おわりに(独自のアプリケーションでOAuth認証を行う方式のメモ)
はじめに
ローコード開発ツール「TALON」は様々なデータを柔軟に扱うことが出来ますが、今回はGoogleのデータを扱う方法を紹介します。基本的にGoogleサービスのデータをAPI経由で利用する場合はGoogle Cloud Platformを使ってAPIの接続設定を行います(最近は埋め込みクレデンシャル方式があり、より簡単に接続できます。当記事では両方を紹介します)。今回はGoogle Analyticsのデータを扱いますが基本的にGoogleのサービスであればどのサービスでもAPI提供されていれば設定方法は似た物になりますので参考にして頂ければと思います。
TALONではRDB(PostgresやSQLServerなど)以外のデータを扱う場合はCData社の接続ドライバ(JDBC)を利用する事が可能です。これにより外部のAPIに対してプログラムを組み込んで接続するという手順を踏まずに設定だけで扱うことが出来ますので非常に楽に扱えます。現在は240種類以上の接続先に対応しています。
CData社のサイトにもTALONと接続した記事がありますので以下の記事も併せて参考にしてください。こちらはマイクロソフトのOffice365との接続記事です。こちらの記事ではOffice 365のスケジュールを参照するだけでなく、データの登録・更新・削除もTALONで実施する所までを解説しています。
Payara ServerからOffice 365に接続する方法
ローコード開発ツールTALONでOffice 365のスケジュール編集画面を作成する
事前準備(CDataドライバ入手)
接続用のCDataドライバをダウンロードして、接続するPCやサーバにセットアップをします。体験版として30日間無償で利用できますので是非試してみて下さい。JDBCドライバをダウンロードします。
https://www.cdata.com/jp/jdbc/
今回は上記サイトの中にある「Google Analytics JDBC Driver」をダウンロードしました。
ダウンロード後にセットアップを実施します。
事前準備(Google Cloud Platform)埋め込みクレデンシャル方式
OAuth2認証は通常ClientID,ClientSecretを生成し、その情報を使って認証を行っていたのですが、埋め込みクレデンシャルという方式により、非常に簡単に接続が出来るようになっています。
※埋め込みクレデンシャル方式で設定を行う場合は次章の事前準備(Google Cloud Platform)OAuthクライアントID生成の設定は不要になります。この段階での準備は特にありませんのでこのままその次の事前準備(CDataドライバの接続テスト)へお進みください。
埋め込みクレデンシャル方式についてはCData社の方が解説したページがありますのでそちらをご覧ください。
OAuth認証系DriverがClientID・ClientSecretを設定しなくても認証できるようになりました(埋め込みクレデンシャル)
事前準備(Google Cloud Platform)OAuthクライアントID生成方式
※当設定部分は埋め込みクレデンシャル方式で実施する場合は不要です。通常は埋め込みクレデンシャル方式の方がシンプルですので、細かい認証フローが必要な場合など以外はそちらをお試しください。
Google系のサービスにAPI経由で接続する場合、アプリベースで認証するには、GCPで設定を行う必要があります。様々な設定があり複雑なのですが、ここでは最低限、Google Analyticsに認証・接続出来て、データを取得出来る所までを解説します。
まず、Google Cloud Consoleにアクセスします。
https://console.cloud.google.com/
今回接続用のプロジェクトを作ります。画面上部にある「プロジェクトを選択」をクリックしてダイアログを開きます。以下の画面にあるボタンをクリックします。
これでプロジェクトが作成されます。この状態で当プロジェクトで扱うAPIの設定を行っていきます。画面左上のハンバーガーメニューから「APIとサービス」→「ライブラリ」を選択します。
検索バーに「Analytics」とセットして検索し、今回は「Google Analytics API」と「Google Analytics Reporting API」を有効化します。各APIをクリックし、「有効にする」をクリックします。
有効化が成功すると「有効なAPIとサービス」の中に当該APIが表示されます。
2つのAPIを有効にしたら、このAPIを使用する為に認証情報を作成します。今回はOAuthの認証情報を作成します。
画面左側にある「認証情報」をクリックします。
まずは「同意画面を構成」でアプリケーションを外部からAPI呼出する為の同意を行います。以下の同意画面でUser Typeを選択します。こちらはGoogleとどのような契約をしているかや、使い方によって選択してください。今回は「外部」を選択しました。
作成ボタンを押下後にアプリ情報の設定を行います。アプリ名とユーザサポートメール、デベロッパーの連絡先情報が必須なので入力します。それ以外はテスト接続であれば空白でも構いません。
続いてスコープの設定を行います。必要に応じてスコープを設定してください。今回は接続テストですので特に設定をしていません。
続いてテストユーザの設定を行います。ここで設定したユーザで後ほど認証しますので、Googleのアカウントを+ADD USERSで追加します。
最後に同意画面になれば同意は完了です。
続いて認証情報の作成を行います。「認証情報」をクリックします。画面上部にある「+認証情報を作成」をクリックし「OAuthクライアントID」を選択します。
以下のようにウェブアプリケーションの種類を「ウェブアプリケーション」とし、名前を任意の物にします。リダイレクトURIには、送信元のURIを指定します。今回はローカルPCから接続する検証ですのでhttp://localhost:33333 としました。
作成ボタンを押下すると、OAuthクライアントが作成されます。ここで、クライアントIDとクライアントシークレットが出来ますので情報を保存します。JSONでのダウンロードも可能です。また、GoogleAnalyticsへの接続は、どのアナリティクスに接続するかを指定する必要があります。これはプロファイルIDとなります。プロファイルIDは以下の方法で確認が出来ます。
Google AnalyticsのプロファイルIDをカンタンに確認する方法
これでGoogle側の準備は完了です。
CData JDBCドライバからGoogle Analyticsへの接続テスト
ここまでで、CDataドライバのインストールと、Google Cloud Consoleでプロジェクト作成、APIの有効化、認証設定が完了しました。これでようやくCDataドライバを使ってGoogle Analyticsへ接続が出来るようになりました。早速接続テストを行います。今回の最終目的はTALONでの利用ですので、あらかじめTALONで接続する想定の作業を行ってしまいます。
セットアップしたCDataドライバから、libフォルダにある以下の2ファイルをコピーします。
cdata.jdbc.googleanalytics.jar
cdata.jdbc.googleanalytics.lic
コピーしたファイルを以下のフォルダに貼り付けます。
C:\payara5\glassfish\domains\domain1\lib\
※バージョンによってフォルダ構成が異なりますが、Payaraのクラスパスが通っているフォルダに置いてください。Linuxの場合は適宜構成を読み替えて下さい。
置いたファイルの内、cdata.jdbc.googleanalytics.jarをダブルクリックして開きます。
こちらの接続テスト画面に先ほどの認証情報などをセットしていきます。セットする必要があるのは以下の通りです。
埋め込みクレデンシャル方式 の方で認証を行う場合
- InitiateOAuth = GETANDREFRESH を選択
- OAuthSettingLocation = デフォルトだとPayaraが読み込めない可能性があるので、Payaraが読めるフォルダにします。例えば C:\talon\cdata\googleanalytics\OAuthSettings.txt など。ファイル名はOAuthSettings.txtとしてください。
OAuthクライアントID生成 の方で認証を行う場合
- Profile = プロファイルIDをセット
- InitiateOAuth = GETANDREFRESH を選択
- OAuthClientID = 先ほど生成したクライアントIDをセット
- OAuthClientSecret = 先ほど生成したクライアントシークレットをセット
- OAuthSettingLocation = デフォルトだとPayaraが読み込めない可能性があるので、Payaraが読めるフォルダにします。例えば C:\talon\cdata\googleanalytics\OAuthSettings.txt など。ファイル名はOAuthSettings.txtとしてください。
- Other = CallbackURL=http://localhost:33333 をセット
この状態で「接続テスト」をクリックするとブラウザが開き、Googleの認証画面になります。Google Cloud Platformで認証可能にしたユーザを選択して、ログインを行うと警告が出ますが「続行」をクリックし、さらに進めていくと認証できます。
認証に成功すると以下の画面になります。
これでCDataドライバ経由でGoogleのAPIへ認証が通るようになりました。先ほど「OAuthSettingLocation 」に設定したフォルダにOAuthSettings.txtが生成されている事を確認してください。これで接続は出来るようになりました。接続テスト画面の下にある「コピー」をクリックして、接続文字列を保存します。この後で利用します。※クリップボードにコピーされる内容が「接続文字列」エリアに表示されている情報の後に ;_persist_oauthrefreshtoken=1//0eymnKyEuy5U6CgYIA・・・・のような文字列が含まれますが、これは以後利用する接続文字列情報には不要ですので、「接続文字列」エリアに表示されている内容のみをお使いください。
事前準備(DBVisualizerでの接続テスト&データ参照確認)
この段階で接続出来ますのでTALONからの利用も可能になりました。ただし、まずは実際に目的のデータを取得する事が出来るかをデータ管理ツールを使って確認してみます。実際は当内容は行わなくてもTALONとの接続をする事が出来ますが、問題の切り分けに非常に役に立ちますのでこちらでの確認をまずする事を強くお勧めします。
DBVisualizerのセットアップ
CData社のブログにも設定方法がありましたので参考にリンクしておきます。
CData JDBC Driverを使って、DbVisualizerからGoogle BigQueryのSQLを実行する
DBVisualizerを起動したら、Tools→Driver Managerを開き、+ボタンを押下してドライバを追加します。以下の設定を行います。
- Name = Google Analyticsなど任意の名前を付ける
- フォルダアイコンをクリックし、cdata.jdbc.googleanalytics.jar を選択します。これで
Driver Class = cdata.jdbc.googleanalytics.GoogleAnalyticsDriver が選択されます。 - URL Format = jdbc:googleanalytics と設定
Driver Managerは閉じて、メイン画面の左ペインにある「Database」タブにあるConnectionを右クリックし、CreateDatabaseConnectionを選択→No Wizardを選択して新しい接続を作ります。
- Name = Google Analytics Connectなど任意の名前
- DatabaseTyep = 先ほどDriver Managerで作ったGoogleAnalyticsを選択
- Database URL = CDataの接続テスト時にコピーした接続文字列をセット
これで「Connect」をクリックすると接続してデータを確認できるようになります。以下の様に左ペインでTABLE、VIEWにある仮想テーブルをダブルクリックし、右ペインの「Data」タブでデータが確認できます。ここで目的のデータを参照・更新する事が出来ればTALONでも参照・更新可能となります。いよいよTALONでの接続設定に入ります。
事前準備(Payaraでの接続設定)
ここからはTALONで接続する為の準備となります。これまでの設定で上手くいかない箇所がある場合は、この章に入る前に解決していないとここから先の設定は行えません。また、TALONはセットアップ済みである前提になります。
現在の時点で、JDBCドライバはPayaraが利用できる場所に配置してあります。以下のファイルがあるかを念のため確認してください。
C:\payara5\glassfish\domains\domain1\lib\cdata.jdbc.googleanalytics.jar
C:\payara5\glassfish\domains\domain1\lib\cdata.jdbc.googleanalytics.lic
上記が確認できたら、DB接続設定を行います。
※TALONの複数DB接続機能を使って行います。複数DB接続の設定詳細はTALONのマニュアルをご確認ください。
複数DB接続設定のマニュアル(構築支援サイトへのログインが必要です)
まずはproperieファイルの設定から行います。
- C:\payara5\glassfish\domains\domain1\lib\classes\talonJdbc.properties の編集
【Ver5系】
1.jndi.name=jdbc/googleAnalytics
1.dialect=jp.talon.common.jdbc.doma.CdataDialect
【Ver6系】
1.jndi.name=jdbc/googleAnalytics
1.dialect=jp.talon.common.jdbc.doma.cdata.CdataDialect
※数値の1については適宜変更してください。
- C:\payara5\glassfish\domains\domain1\lib\classes\user.properties
※埋め込みクレデンシャル方式の場合(C:\XXXXX部分は適宜変更してください)
1.BATCH_DB_URL=jdbc:googleanalytics:InitiateOAuth="GETANDREFRESH";OAuthSettingsLocation="C:\XXXXX\OAuthSettings.txt"
※OAuthクライアントID方式の場合 (XXXX部分は適宜変更してください)
1.BATCH_DB_URL=jdbc:googleanalytics:Profile="XXXXX";InitiateOAuth="GETANDREFRESH";OAuthClientId="XXXXXX";OAuthClientSecret="XXXXX";Other="CallbackURL=http://localhost:33333;";
※数値の1については適宜変更してください。またここで設定しているjdbc:から始まる文字列は先ほどの接続テストで使った接続文字列になりますのでそのままここに貼り付けて下さい。
この時点でPayaraを再起動してください。続いてPayaraの管理コンソールで設定を行います。管理コンソールにログインし、リソース→JDBC→JDBC接続プール で、「新規」で接続プールを作ります。設定する内容は、
- プール名 = GoogleAnalyticsPoolなど任意の名前
- リソースタイプ = java.sql.Driver を選択
「次」をクリックし、
- ドライバ・クラス名 = cdata.jdbc.googleanalytics.GoogleAnalyticsDriver を入力
さらに下にいき、追加プロパティで「プロパティの追加」を行います。
- 名前 = URL
- 値 = 接続テストで使ったjdbcで始まる接続文字列をセット
「終了」を押下し、作成したGoogleAnalyticsPoolを選択して、Pingをクリック。成功すると「pingが成功しました」となります。
続いてJDBCリソースの設定を行います。 管理コンソールのリソース→JDBC→JDBCリソースで「新規」をクリックし、新規のJDBCリソースを作ります。
- JNDI名 = jdbc/googleAnalytics ※talonJdbc.propertiesに設定した jndi.name と同じ名前を設定
- プール名 = GoogleAnalyticsPool を選択。 ※先ほどJDBC接続プールで作成した物
ここまででPayaraの設定は完了となります。これでいよいよTALONから接続する事が出来るようになりました。この段階でPayaraを再起動します。
TALONでの接続
TALONにログインし、機能構築→テーブル更新権限設定 を開き、検索を押下すると新たにGoogleAnalyticsのテーブル情報が出てきます。扱いたいデータに対して更新チェックを付けて設定ボタンを押下します。
ようやくTALONの機能開発を行えるようになりました。ここまで来ると後は普通にTALONで機能構築するだけです。RDBと同じように扱うことが出来ます。データ表示したり、ガントチャート表示やグラフ・カレンダなどビジュアル的なUIも自由に作ることが出来ます。
ここではまずはデータの一覧参照機能を作ってみます。
メニュー→機能構築→機能設定画面 を開き、新規機能を作ります。
機能IDと機能名をセットしたら、ブロック領域にある「設定」ボタンをクリックしてブロック設定画面に遷移します。SELECT式タブを開き、DB接続先を「jdbc/googleAnalytics」にセットして、ブロック設定画面左下の「SELECT式作成画面」をクリックします。
ここではSiteContentデータを参照してみます。複数テーブルをSQLでJOINさせる事も可能です。設定ボタンを押下すると以下の様にSELECT文が自動生成されます。このSELECT文を直接編集する事も可能です。
画面左下の「項目情報生成」をクリックし、「項目情報」タブを確認します。
後は必要に応じて検索条件を付けたり、TALONの設定をします。右下の「設定」ボタンを押下して、機能構築のメイン画面に戻ります。ユーザグループの権限設定を行い、右下の「設定」ボタンを押下して機能構築が完成になります。
画面上部にある「PREVIEW」ボタンをクリックしてTALONの機能を開きます。
以下のようにデータが検索できることが確認できました。
これでTALONからGoogleAnalyticsに接続してデータ参照するまでの設定が出来ました。後は複数のデータをSELECT文結合して複雑な分析を行ったり、グラフやガントチャート、カレンダで表示したりという風に色々な機能を作ってみて下さい。以下、様々な画面イメージのサンプルです。
今回はGoogle Analyticsの接続をご紹介しましたが、Google系のサービスであれば基本的に同じ流れで設定できますので是非色々とチャレンジしてみてください!また、Google系だけでなく、その他240種類以上のサービスとも接続可能ですので是非ご検討ください。
おわりに
ここまででTALONへの接続についての説明は終了になります。最後に、CDataドライバを使う際にCDataの接続アプリなどを利用せずに、独自のアプリケーションだけでOAuth認証を行う場合の手順を備忘録として残しておきます。※TALONの接続では特に利用する必要は無い方式ですが、念のため。
- GoogleのコンソールでClientId/ClientSecretを生成・取得
- CData社のドライバで接続文字列(JDBC URL)に以下の指定をして接続
InitiateOAuth=”NONE”;OAuthClientId=XXX,OAuthClientSecret=XXX; - ストアドプロシージャを実行する
EXEC GetOAuthAuthorizationURL CallbackURL=’http://<コールバックを受け付けるURL>’
を実行するとGoogleの認可コード取得用のURLが取得できるので、そちらにブラウザをリダイレクトさせる - 認可されるとコールバックURLにリダイレクトされるので、そちらで認可コード(codeパラメータ)を取得
- 取得した認可コードで以下のストアドプロシージャでOAuthAccessToken, OAuthRefreshTokenを取得
EXEC GetOAuthAccessToken Verifier=’受け取った認可コード’, CallbackURL=’③と同じURL’ - 再度以下の接続文字列で接続すると、OAuthSettingsLocationにOAuthSettings.txtが生成され、以降のクエリでドライバ側でAuthorizationヘッダの送信やリフレッシュトークンの更新が行われます。
InitiateOAuth=”REFRESH”;OAuthClientId=XXX,OAuthClientSecret=XXX;OAuthAccessToken=XXX;OAuthRefreshToken=XXX;
以上です。