CData Software Blog

クラウド連携のCData Software の技術ブログです。

ユビレジのデータをASTERIA Warp経由でSQL Server に連携

https://cdatajbuilds.s3-ap-northeast-1.amazonaws.com/Ubiregi/ubiregi.gif

こんにちは。CData Software Japanリードエンジニアの杉本です。

今回はETLツールのASTERIA Warpを利用し、ユビレジのデータをSQL Server に同期する方法を紹介します。

ユビレジとは

ユビレジはiPadで手軽に利用できるクラウドベースのPOSレジサービスです。

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

https://ubiregi.com/

f:id:sugimomoto:20210216153943p:plain

ユビレジ APIでは、メニュー・商品情報、顧客情報や支払い情報を取得するAPIが提供されています。

https://ubiregiinc.github.io/ubiregi-api/

f:id:sugimomoto:20201027111246p:plain

ASTERIA Warpとは

ASTERIA Warpは簡単なGUIを用いて作成するフローによって既存のデータベース、ファイルシステム、各種業務システム、各種クラウドサービスと簡単に接続、連携することのできるデータ連携ツールです。

www.asteria.com

f:id:sugimomoto:20210216153951p:plain

実現イメージ

この記事では ユビレジ APIに対してETLツールのASTERIA Warpから接続します。しかしながら、各APIは単純にツールと接続・連携することはできません。

各ツールがどのようにWeb API側へリクエストを投げるべきかの判断材料や各種認証方法の処理、メタデータの情報等が無いためです。そのためには基本的にカスタムコネクタを作るか、プログラムを組まなければいけません。

そこで、CData API Driver を用いて、このボトルネックを解決します。

まず、各ツール(今回の記事ではASTERIA Warp)からはODBCJDBCインタフェースでSQL(Select文)をCData API Driverに向けて発行してもらいます。そのリクエストを受け取った CData API Driverは、ユビレジ の API のエンドポイントに対して、SQL文を解釈し、HTTPリクエスト発行します。

リクエスト後、JSONフォーマットで返ってきたデータをCData API Driverが各種インタフェースフォーマットにデータを変換してツールに返します。

f:id:sugimomoto:20210216153918p:plain

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

今回はこのAPI Driver と ETLツールのASTERIA Warpを組み合わせて、ユビレジのメニュー情報を自動的にSQL Server に登録するフローを作成してみました。

出来上がりイメージは以下のようになります。

f:id:sugimomoto:20210216154020p:plain

手順

ユビレジ API 利用準備

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

まず、設定画面にアクセスし「システム連携」→「API アクセストークン」をクリックします。

https://ubiregi.com/a/account/apps

f:id:sugimomoto:20201027111305p:plain

次に「新しく作成」をクリックし

f:id:sugimomoto:20201027111313p:plain

任意の名前を入力し、「作成」をクリックすることでAPI Tokenが生成されます。

f:id:sugimomoto:20201027111318p:plain

作成完了後、「表示」をクリックすることで生成されたAPI Tokenを取得できます。

f:id:sugimomoto:20201027111324p:plain

この以下の文字列のTokenを後ほど利用するので、控えておきましょう。

f:id:sugimomoto:20201027111329p:plain

CData JDBC Driverのインストール

次に、CData Driverの準備を行います。以下のダウンロードページからAPISQL ServerJDBC Driver インストーラをそれぞれダウンロードしてください。

ダウンロードしたフォルダの中にあるsetup.jarをダブルクリックするとインストーラが起動しますので、それぞれウィザードに従ってインストールを行ってください。

API データ処理用 設定ファイルを作成

CData JDBC Driverと合わせて、ユビレジ の API を CData API Deiver が解釈できるように設定ファイル(API Profile)を作成します。

すでに私が作成したものがあるので、以下のURLからダウンロードしてください。

https://cdatajbuilds.s3-ap-northeast-1.amazonaws.com/APIProfiles/Ubiregi.apip

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

コネクションの追加

それでは、ASTERIA Warpでの操作を進めていきましょう。

ASTERIA Warpでは、フローデザイナーを使って、データ処理のプロセスを作成します。

フローデザイナーの基本的な利用方法についてはWarpフローデザイナー操作ガイドをご覧ください。

まずASTERIA WarpでCData JDBC Driverを使用するために接続を追加します。

ここではAPI Driver へのコネクションの作成方法を紹介しますが、SQL Server についても同様の手順でコネクションを作成します。

画面左のコネクションペイン上にある[]ボタンをクリックをクリックすると、「コネクションの作成」ダイアログが表示されます。

f:id:sugimomoto:20210216154030p:plain

「接続種別」として「RDB」を選択、「名前」に分かりやすい名前を設定し「OK」をクリックします。

f:id:sugimomoto:20210216154035p:plain

作成したコネクションをダブルクリックすると、画面右のインスペクタに接続プロパティが表示されます。 「基本」タブでドライバーのパスとURLをそれぞれ設定します。

f:id:sugimomoto:20210216154041p:plain

ドライバーのパス

前節でインストールした API JDBC Driverファイルへの参照を指定します。

デフォルトではC:\Program Files\CData\CData JDBC Driver for API 2020J\lib\cdata.jdbc.api.jarです。

URL

ユビレジに接続するための接続文字列を指定します。

jdbc:api:Profile=C:\APIProfiles\Ubiregi\Ubiregi.apip;ProfileSettings="MenuId=XXXX;APIKey=XXXXX;";
プロパティ名 備考
Profile C:\APIProfiles\Ubiregi\Ubiregi.apip 予めダウンロードしたUbiregi.apipのパスを指定します。
ProfileSettings APIKey=XXXXX;MenuId=XXXX; APIKeyには予め取得したAPI Tokenを指定します。MenuIdはユビレジ管理画面、メニュー設定のURLから取得できる5桁の数値です。

SQL Server の接続情報

SQL Server のコネクションも同様の手順で作成してください。設定情報は以下の通りです。

ドライバーのパス

前節でインストールしたSQL Server JDBC Driverファイルへの参照。 デフォルトではC:\Program Files\CData\CData JDBC Driver for SQL Server 2020J\lib\cdata.jdbc.sql.jarです。

URL

SQL Server に接続するための接続文字列を指定します。CData SQL Server JDBC Driverのヘルプ

プロジェクトの作成

コネクションを追加したら、実際にフローを作成していきましょう。

フローデザイナーのメニューから「新規作成」→「プロジェクト」をクリックし

f:id:sugimomoto:20210216154048p:plain

任意の名称で新規フローを作成します。

f:id:sugimomoto:20210216154055p:plain

データの読み込み処理の構成

フローでは、はじめにユビレジが保持するデータを読み込んでみます。

データベースタブにある「RDBGet」のコンポーネントをフローに配置し、ダブルクリックします。

f:id:sugimomoto:20210216154101p:plain

コネクションの選択ウインドウが表示されるので、先程作成したユビレジのコネクションを選択しましょう。

f:id:sugimomoto:20210216154106p:plain

その後、SQLビルダーが表示されるので、取得したいデータが格納されている、任意のテーブルとカラムを選択します。

今回はMemuItemsを以下のように選択しました。

f:id:sugimomoto:20210216154110p:plain

あとは、「モデルにSQLを適用する」をクリックし「SELECTテスト」でデータが正常に取得できているかを確認します。

以下のようにデータが参照できれいればOKです。設定を保存してSQLビルダーを閉じます。

f:id:sugimomoto:20210216154116p:plain

データの追加処理の構成

続いてデータ追加処理部分を構成していきます。

データ追加のコンポーネントは「RDBPut」を使いますが、その前に連携先の項目にデータをマッピングするための「Mapper」コンポーネントを配置しておきましょう。

f:id:sugimomoto:20210216154120p:plain

続いて、「RDBPut」を配置してコンポーネントをダブルクリックします。

f:id:sugimomoto:20210216154125p:plain

事前に構成していたSQL Server コネクションを選択します。

f:id:sugimomoto:20210216154130p:plain

コネクション選択後、データ追加を行う対象のテーブルとフィールドの設定画面が表示されるので、追加先となる任意のテーブルとカラムを指定します。

f:id:sugimomoto:20210216154135p:plain

マッピングの構成

追加先テーブルとフィールドの設定が完了したら、最後にMapperを編集しましょう。

f:id:sugimomoto:20210216154141p:plain

以下のように各項目のマッピング画面が表示されるので、取得元から追加先に対して、項目を合わせます。

f:id:sugimomoto:20210216154147p:plain

あとは、フローを終了するためのコンポーネントを配置すれば、フローの完成です。

f:id:sugimomoto:20210216154153p:plain

実行

それでは実際にフローを動かしてみましょう。

画面上の「実行」ボタンから、フローを実行できます。

f:id:sugimomoto:20210216154200p:plain

実行後、以下のようにステータスに「正常終了」と表示されれば完了です。

f:id:sugimomoto:20210216154204p:plain

実際にSQL Serverを確認してみると、以下のようにデータが正常に登録されていました。

f:id:sugimomoto:20210216154210p:plain

おわりに

今回はASTERIA WarpとCData JDBC Driverを用いてユビレジのデータをSQL Server に同期する方法を紹介しました。

SQL Server 以外にも、CData JDBC Driver・ASTERIA Warpを利用することで、ユビレジ と200を超えるクラウドサービスとのデータ連携がノーコードで実現できます。

f:id:urabe_shintaro:20200131184240p:plain

是非自社で利用しているサービスに合わせて、連携を実現してみてください。