#せっかくJSON で連携してるのに、アプリ側ではテーブルデータをSQL したいという矛盾
RDBからWebAPIをポイント&クリックで作成 のようにAPI を簡単に作れるAPI 管理ツールが充実してきています。API を作るというハードルはどんどん下がってきました。ところが、「作ったAPI をカスタムアプリや、BI、ETL などのツールから使う方が面倒」という声も聞かれるようになりました。
元々DB やCSV を直つなぎして、アプリケーション、BI、帳票、ETL ツールなどから使っていた訳です。データの基本はテーブル型でスキーマの付いたデータで、処理言語はSQL です。ところが、今どきのデータ連携はの主流はWeb API での連携です。しかし、これまで使っていたアプリケーション資産や分析、データ連携のツールをすべてREST/JSON ベースのものに置き換えることは容易ではないです。つまり、データ形式がJSON になっても、アプリ側では、JSON ではなく、RDB データをSQL で扱う仕様になっているというギャップがあります。
さらに言えば、REST API はただのアーキテクチャデザインであって、メタデータを提供されない限り、アプリケーションで使いやすい形でデータを提供しているとは言えないという事情もあります。
「なら、API をアプリ側でODBC/JDBC で叩けるようにすればいいんだ。」
そこで、CData API Server で作ったAPI をアプリケーション、ツール側でODBC/JDBC に直してAPI をSQL で使えるようにするのがCData API Driver (ODBC/JDBC/ADO.NET)です。
#CData API Server でDB やCSV からREST API を生成
RDBからWebAPIをポイント&クリックで作成 をご参照。
#API Server のAPI をODBC で使えるようにする
API を使う側で、今度はAPI Server のエンドポイントをSQL で扱えるようにします。
##CData API Driver をダウンロード
API Server ODBC Driver ダウンロード からダウンロードして、インストールします。この記事ではWindows 版のODBC Driver です。ODBC Driver はMac OS 版とUnix/Linux は別途あります。
そのままインストールを進めます。インストールが完了するとODBC のDSN 構成画面が開きます。
DSN 構成画面のAuthentication の以下のプロパティに接続するAPI Server の認証情報を入力します。
- Url:API Server のURL: https://myAPIServer.com/api.rsc
- Auth Token: API Server のユーザーを登録した際に生成されるAuth Token
- Auth Scheme: NONE
ちなみに、BASIC 認証やWindows 認証を選択することも可能です。
認証情報を入力したら、「接続のテスト」をクリックして接続の確認を行います。確認出来たらOK を押して接続を確立します。
これでODBC の設定は終わりです。
次にいくつかのアプリケーション・ツールからAPI をODBC で叩いてみます。
#Visual Studio からの使用
「サーバーエクスプローラー」から「新しい接続の追加」をクリック。データソースの選択画面で「Microsoft ODBC データソース」を選択して、「続行」を押します。
接続の追加画面で、データソースは、ODBC のまま。
「ユーザーデータソース名またはシステムデータソース名を使用」のドロップダウンで先ほど追加したAPI Server のODBC ソースを選択します。
ログイン情報は入力不要で、「テスト接続」→OK で設定を完了します。
これでサーバーエクスプローラーで、API Server のエンドポイントがテーブル・ビュー・ストアドプロシージャにモデル化されて表示されます。API のエンドポイントですが、見た目はRDB と変わりません。
データを見るとRDB のようにスキーマが定義されています。
通常のSELECT、UPDATE、INSERT、DELETE といったSQL でクエリが可能です。クエリ結果はテーブルデータとして返されます。開発者としてはRDB を叩いている感覚でAPI をコールすることができます。
このように開発IDE からODBC 接続でAPI を呼び出すことができます。今回はVisual Studio で行いましたが、Mac ODBC、Unix ODBC のドライバーを使えば、Python、Ruby、PHP、Go といった言語でもODBC インターフェースでのAPI 連携開発が可能です。Java アプリケーション向けにはJDBC Driver があります。
#BI ツールのTableau からAPI にODBC 経由でアクセス
BI ツールのTableau も汎用ODBC インターフェースに対応しています。
データ接続画面の「その他データベース(ODBC)」を選択し、DSN のドロップダウンから設定したAPI Server ODBC ソースを選択します。「接続」を押し、接続が完了したら「サインイン」を押します。
Tableau のデータソース画面で、左側のデータベースのドロップダウンから「CData」を選択。
左側の「表」で、検索の🔍マークをクリックすると、ODBC 経由でAPI Server の利用可能なエンドポイントがリストされます。Tableau で利用するエンドポイントをドラッグして使うことができます。二つ以上のエンドポイントのJOIN などもこの画面でRDB と同じようにUI から行うことが可能です。
あとは、テーブルデータとしてTableau で分析を行うだけです。
#まとめ
API で連携するニーズがあっても、データを連携して利用する側のアプリケーションがテーブルデータ/SQL をデフォルトとしたアプリケーションやツールである場合には、無理にJSON のままのデータを使うのではなく、ODBC Driver やJDBC Driver の利用がお勧めです。アプリケーションがGUI からSQL を自動生成している場合などは特にドライバー利用の価値が大きいです。
CData API Server では、生成したAPI に最適化されたODBC Driver・JDBC Driver を簡単に作れます。