スマレジ APIをドライバー化：各種ツールから接続してみた

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/72dd55a6-b895-9e7a-61b4-16660c77f417.png)

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

# 追記：※2020/06/24

正式にスマレジドライバーがリリースされました。

https://www.cdata.com/jp/drivers/smaregi/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56301/42b349cf-0ca3-f633-3b66-f4d345e699c2.png)



# 対象 API

スマレジはクラウドベースのPOSTシステムとシンプルなレジ機能をメインとしたSaaS型アプリケーションです。

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

https://smaregi.jp/

スマレジ APIでは、現在以下のようなエンドポイントが提供されています。商品や在庫の管理はもちろん、取引情報や会員情報の管理も実施できます。

- 部門情報
- 商品情報
- 会員情報
- 在庫情報
- 取引情報
- セール情報
- 会員ポイント情報　等

今回は商品情報の参照機能をドライバー化してみました。

なお、ドキュメントは以下の手順でダウンロードすることが可能です。されています。

[WebAPIの仕様書のダウンロード方法](https://help.smaregi.jp/hc/ja/articles/224295527-WebAPI%E3%81%AE%E4%BB%95%E6%A7%98%E6%9B%B8%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E6%96%B9%E6%B3%95)

# 実現イメージ

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/d5da3351-2420-29df-fb28-f521a012cd4f.png)

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

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

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/88e218ca-18a2-781c-8bb1-a2ee3bbb6bd7.png)

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

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

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

- 各種CData REST Driver
- Excel（Excel-addinで利用）
- Access（ODBC接続で利用）
- PowerBI (ODBC 接続で利用)

## スマレジ API 利用準備

最初にスマレジのAPIを利用するために、スマレジ側でAPIの有効化設定を行います。

有効化には管理者権限を持ったユーザーが必要ですので注意してくだい。

スマレジ管理画面から「設定」→「システム連携」→「スマレジAPI連携」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/0cad902e-441c-ed97-5232-6cc62de5e392.png)

受信設定タブから「受信機能を利用する」を「利用する」に変更し、契約IDとURL、アクセストークンを取得します。アクセストークンは初期状態では表示されていませんので、右側のボタンをクリックして取得できるようにします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/c83b8b9e-8940-388f-1423-989b11512ecc.png)

次に受信設定タブの下に表示されている機能設定から利用したい機能を確認し「利用する」へ変更しておきます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/5e412c66-c8d4-f39e-1a4b-f595535e72a5.png)

設定後、更新ボタンをクリックすることで反映されます。

以上でスマレジ API 側の設定は完了です。

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

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

サンプルとしてスマレジの商品（Product）系テーブルを取得するための設定ファイルを作成していますので、以下のGitHubから保存して、利用してみてください。

[CData.REST.Smaregi](https://github.com/sugimomoto/CData.REST.Smaregi)

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/7312fb6d-7427-acb6-b996-0e72895319d5.png)

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

各種ツールとスマレジ 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設定のウィンドウが立ち上がります。

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

Otherにはそれぞれ事前に取得したcontract_id（契約ID）、access_token（アクセストークン）を設定してください。

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

- その他
    - Other　：contract_id=abcd1234;access_token=12345678901234567890123456789012;

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/1aff0658-ed9b-8ad6-04eb-90387c262cd2.png)

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

## Excel から スマレジ 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/fc9d1eeb-9891-6c55-6ea0-889471f042ac.png)

クリック後、対象のデータが一括で取得できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/1f2e15b8-1ab7-be6d-cde2-caa0742cdcbb.png)

## Access リンクテーブル から スマレジ API に接続（CData REST ODBC Driver）

次はCData ODBC Driverを利用して、Access リンクテーブルから接続してみたいと思います。

あらかじめ新規にAccessを立ち上げて、空のデータベースを作成しておきましょう。

続いて「外部データ」タブから「新しいデータ ソース」→「他のソースから」→「ODBC データベース」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/3086b073-b1fb-1061-2c2e-4cb68417cd41.png)

ウィザードが表示されるので「リンクテーブルを作成」を選択し、「OK」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/866579b4-b480-5563-a784-43f3aed5d4c3.png)

データソースの選択では「コンピューターデータソース」から事前に作成したCData REST Driver用DSNを選択し「OK」をクリック

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/287bf526-8a8d-96b7-5a25-3ee1cc133f04.png)

テーブルの一覧が表示されるので、任意のテーブルを選択し「OK」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/9849ab14-17e9-c8fc-dfc7-e3214ac5c4ab.png)

固有レコードの識別選択では通常キーとなる情報を設定しますが、今回はUpdate等は行わないため、何も指定せずに「OK」をクリックしてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/d5f43eb2-6285-c559-627d-1eb5b5383d5c.png)

設定後、リンクテーブルが追加され、以下のように商品データを閲覧することができるようになります。もちろん、通常通りクエリデザイナーでも使用可能です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/9bb1f4fe-d791-264f-e6d5-3497d7c7eb95.png)

##  PowerBI から スマレジ API に接続（CData REST ODBC Driver）

最後にCData ODBC Driverを用いて、Power BIからスマレジの商品データを取得します。

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)

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/da8bfa3b-39d8-48bd-567b-331f19b7c202.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/9d149ca8-03c0-035f-3d0b-86372ccffad8.png)

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/08a6e7b2-bb96-562e-5c28-532c2fd61145.png)

以下のようにスマレジの商品データを読み込みことができます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/92faffb0-7d15-57d8-013f-fa492f13a2ff.png)

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/56301/17b69101-fab0-283c-e740-55acb5a4e3d0.png)

# 終わりに

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

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

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

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