Sansan APIをドライバー化：各種ツール・IDEから接続してみた


# はじめに

本記事は、各種 Web API を ODBC / JDBC / ADO.NET といった標準のDB接続規格でアクセスできるようにするCData REST Driverを用いて、名刺管理ツールであるSansan の API を各種ツールから接続する方法をまとめたものです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/80cc60ef-8d34-b09b-affb-5102ce401f16.png)

ExcelやPower BIなどのエンドユーザーが利用するUIベースのツールはもちろん、Visual StduioやEclipseといった開発ツールからも接続してみました。

# 対象 API

Sansanは名刺管理機能をメインとしたSaaS型クラウドアプリケーションです。

詳しくは以下のURLからどうぞ。

https://jp.Sansan.com/

Sansan APIでは、現在以下の7種類のエンドポイントが提供されています。どれも名刺に関連したエンドポイントです。今回はその中でもベーシックな名刺Set取得の条件指定をベースにAPIを利用しています。

- 名刺Set取得（期間指定）
- 名刺Set取得（条件指定）
- 名刺取得
- 名刺画像取得
- 名刺のタグSet取得
- 人物取得
- タグSet取得

なお、ドキュメントは以下のURLで公開されています。

https://docs.ap.sansan.com/ja/api/index.html

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/b6c5867e-f761-500c-e7fb-602f2ecc3759.png)

# 実現イメージ

今回はAPIの連係対象BIツールやIDEでから接続しますが、各APIは単純にツールと接続することはできません。
各ツールがどのようにWeb API側へリクエストを投げるべきかの判断材料やメタデータの情報が無いためです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/375ef60d-24a7-b94f-3160-e42f8ef94032.png)

そこで、CData REST ベースの各種 Driverを用いて、このボトルネックを解決します。

まず、各ツールからはODBCインタフェースでSQL（Select文）をCData REST ODBC Driverに向けて発行してもらいます。そのリクエストを受け取った、CData ODBC REST Driverは、SansanのWebAPIのエンドポイントに対して、SQL文を解釈し、HTTPリクエスト形式に変換して、Getメソッドを発行します。

リクエスト後、Jsonフォーマットで返ってきたデータセットはCData REST ODBC DriverがODBCインタフェースのResultsetに変換してツールに返します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/afae20ab-397d-f3cc-84b0-e7d98c13ac69.png)

これにより、各種ツールからアドホックにSQLによるリクエストがあったタイミングで最新のデータをSansanから取得することが可能です。

# 各種接続シナリオと必要なツール

CData REST Driverは様々なツールとの接続に利用できますが、今回は以下のツールを用いて接続する方法を解説していきます。

- 各種CData REST Driver
- Excel（Excel Addinで利用）（https://www.cdata.com/jp/drivers/rest/excel/）
- PowerBI (ODBC 接続で利用)（https://www.cdata.com/jp/drivers/rest/odbc/）
- Visual Studio（ADO.NET 接続で利用）（https://www.cdata.com/jp/drivers/rest/ado/）
- Eclips（JDBC接続で利用）（https://www.cdata.com/jp/drivers/rest/jdbc/）

## Sansan Web API 利用準備

まず、SansanへWeb APIアクセスするにあたって必要となるAPIキーを取得します。

Sansanログイン画面へ移動し、ログインを行います。

https://ap.Sansan.com/v/SSLogin.aspx

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/1c2f957b-3173-24f7-9ea3-f5fbeeba7996.png)

TOPページに表示されている「外部サービス連携」をクリックし

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/7cb3ded2-986e-4940-3ca3-d18319c08930.png)

「API」タブから対象ユーザーを選択し「発行」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/022ddaeb-6121-64d8-5da7-12194ca73246.png)

すると、以下のようにAPI Keyが発行されます。このAPI Keyを後ほど使用するので、控えておいてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/0b4d11ae-f1d7-ad38-f247-b72559e7d50f.png)

以上でSansan側の準備は完了です。

## REST データ処理用 RSDファイルの作成

続いて、SansanのWeb APIをCData 各種 REST DeiverがSQLとして解釈できるように設定ファイルを作成します。

サンプルとしてSansanの名刺データ (bizcard)のデータを取得するための設定ファイルを作成していますので、以下のGitHubから保存して、利用してみてください。

[CData.REST.Sansan/bizcard.rsd](https://github.com/sugimomoto/CData.REST.Sansan/blob/master/bizcard.rsd)

保存先フォルダは後ほど使用するので「C:\CData_REST\Sansan」といった書き込み可能な任意のフォルダに配置してください。

## CData 各種 REST Driverのインストール

各種ツールとSansanのAPIを繋ぐために必要となるCData REST Driverをインストールします。

基本的なインストール・設定方法は各種Driver共通ですので、ここではODBC Driverを例に説明します。

まず、CData REST ODBC Driverの30日間の評価版をダウンロードします。ダウンロードの際には、Emailの登録が必要となります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/dbb5b845-9543-4d62-d088-9b748998bd7f.png)

ダウンロードしたsetup.exeファイルをBIツールがインストールされているマシンにインストールします。インストールウィザードに従い、EULAを確認した上でインストールを完了します。

※途中、ライセンスサーバーへのオンラインアクティベーションが行われるためネットワーク環境に接続されている必要があります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/7a9f141f-b798-acfa-83a2-0367dc9f3312.png)

インストールが完了すると、ODBCのDSN設定のウィンドウが立ち上がります。

以下の項目をセットし、保存します。

- Schema
    - Location : 先程RSDファイルを配置したフォルダパス（例：C:\CData_REST\Sansan）   

- その他
    - Other　：　ApiKey=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX;range=all;

OtherのApiKeyには、先程取得したSansanのAPIキーを入力してください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/d4e231af-0a71-40f6-013f-72996a60fca9.png)

以上で、CData REST Driverの準備は完了です。

## Excel から Sansan API に接続（Excel Add-in for REST）

CData Excel Add-in for REST をインストール後、Excelを立ち上げるとCDataタブが追加されていることがわかります。このタブから各種操作を実施します。

接続を開始するには、CDataタブから［取得元REST］をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/8fb57b88-3fb6-fac3-df02-e8fce939e2c6.png)

最初に接続するためのウィザードが表示されるので、「CData 各種 REST Driverのインストール」の内容と同様に各種パラメータを入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/275a87f1-6f02-45a6-6e09-5ec2e1139000.png)

接続後、対象テーブルを選択し、「OK」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/2fe43733-f632-daa7-8ee5-ed3473c1a9dc.png)

クリック後、対象の名刺データが一括で取得可能です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/40964fac-05b0-0184-7608-e8c88b2e8d78.png)

## JDBC Driver で Sansan APIに接続

続いて、JDBC Driverをベースに、Eclipseを使用してJavaベースのコンソールアプリケーションを作成します。

まず、Eclipseを立ち上げて、新規プロジェクトを作成します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/35faeb4b-588f-2a2e-7f23-1e29d50d3bd3.png)

「Javaのビルド・パス」→「ライブラリー」を表示し「外部JARの追加」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/cbdc0625-0463-b3c5-69f0-9d825c4cb5dc.png)

CData JDBC REST Driver インストール後に生成される以下のフォルダへ移動し、「cdata.jdbc.rest.jar」を外部JARとして追加します。

「C:\Program Files\CData\CData JDBC Driver for REST 2017J\lib」

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/38d09c0b-3cd5-64e6-4dd6-7469bcdf0ac2.png)

最後に通常のJDBCを使用するのと同じ手順で、Driverへ接続しデータ取得処理を行うプログラムを記述します。

以下は、Sansanから名刺データを取得し、Consoleへ表示する簡単なサンプルコードです。接続先に併せて接続文字列を調整してください。

```java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Program {

	public static void main(String[] args) throws ClassNotFoundException {

		Class.forName("cdata.jdbc.rest.RESTDriver");

		try (Connection conn = DriverManager.getConnection("jdbc:rest:GenerateSchemaFiles=None;Location=C:\\\\CData_REST\\\\Sansan;Other=\"ApiKey=XXXXXXXXXXXXXXXXXX;range=all;\";");) {
			Statement statement = conn.createStatement();
			
			ResultSet rs = statement.executeQuery("SELECT * FROM bizcard limit 10");
			while (rs.next()) {
				System.out.println(rs.getString(1));
			}
		} catch (SQLException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}
}

```

以下のように取得することができます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/f89d9741-0213-4bc1-3862-6b584a260b3e.png)

## ADO.NET Provider で Sansan API に接続

続いて、ADO.NET Providerを用いて、Visual Studio標準のデータベース接続画面から、Sansanデータにアクセスしてみます。

Visual Studioを立ち上げて、サーバーエクスプローラーを表示し「データ接続」→「接続の追加」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/6b80e107-fd6e-60f5-568e-af057f15a9ef.png)

データソースの「変更」ボタンをクリックし、

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/15cfdfed-0d8c-6d4a-8c32-858031e1b7f9.png)

対象データソースとして「CData REST Data Source」を選択し、「OK」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/9418989e-895f-65af-d6c2-cb438b949f81.png)

各種接続プロパティを入力する画面が表示されるので、「CData 各種 REST Driverのインストール」の内容に合わせて入力を行います。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/c30e0a8b-6112-070e-10cc-1129f483c869.png)

接続完了後、テーブル一覧に対象テーブルが表示されるので、通常のDB接続と同じようにSQLを実行することで、Sansanの名刺データが取得可能です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/b4a5172d-9e62-3685-d954-7846e4b4f718.png)

## ODBC Driver で Sansan API に接続

最後にCData ODBC Driverを用いて、Power BIからSansanの名刺データを取得します。

PowerBI Desktopを起動して、「データを取得」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/e9d4a969-8628-0702-8830-d60cccdedfc2.png)

データ接続先一覧の中から「ODBC」を選択し、「接続」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/9d4328b2-a354-a81d-615a-a345fff83de5.png)

データソース名は先程登録したSansanを選択し「OK」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/4e5ffad4-0fe8-001e-07fb-65738ca17abf.png)

テーブルの一覧から対象となるテーブルを選択し「読み込み」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/4ff6830c-5472-2a69-6b7e-3f83c3b576f1.png)

以下のようにSansanの名刺データを読み込みことができます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/66b94506-9807-fc4d-6bd2-7afbe0343818.png)

あとはPoewr BIの機能を用いて、ビジュアライズすることが可能です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/33c94019-0979-523d-648d-48a3f745714f.png)

# 終わりに

いかがでしたでしょうか。

これ以外にもCData REST Driverは各種ETLツールや帳票ツールなどからも接続することが可能です。

以下のCData オンラインナレッジベースには、各種ツールからの接続方法を紹介した記事が多数掲載されているので、是非見てみてください。

https://www.cdata.com/jp/kb/