こんにちは。CData Software Japanリードエンジニアの杉本です。
今回はETLツールのASTERIA Warpを利用し、ユビレジのデータをSQL Server に同期する方法を紹介します。
ユビレジとは
ユビレジはiPadで手軽に利用できるクラウドベースのPOSレジサービスです。
詳しくは以下のURLからどうぞ。
https://ubiregi.com/
ユビレジ APIでは、メニュー・商品情報、顧客情報や支払い情報を取得するAPIが提供されています。
https://ubiregiinc.github.io/ubiregi-api/
ASTERIA Warpとは
ASTERIA Warpは簡単なGUIを用いて作成するフローによって既存のデータベース、ファイルシステム、各種業務システム、各種クラウドサービスと簡単に接続、連携することのできるデータ連携ツールです。
www.asteria.com
実現イメージ
この記事では ユビレジ APIに対してETLツールのASTERIA Warpから接続します。しかしながら、各APIは単純にツールと接続・連携することはできません。
各ツールがどのようにWeb API側へリクエストを投げるべきかの判断材料や各種認証方法の処理、メタデータの情報等が無いためです。そのためには基本的にカスタムコネクタを作るか、プログラムを組まなければいけません。
そこで、CData API Driver を用いて、このボトルネックを解決します。
まず、各ツール(今回の記事ではASTERIA Warp)からはODBCやJDBCインタフェースでSQL(Select文)をCData API Driverに向けて発行してもらいます。そのリクエストを受け取った CData API Driverは、ユビレジ の API のエンドポイントに対して、SQL文を解釈し、HTTPリクエスト発行します。
リクエスト後、JSONフォーマットで返ってきたデータをCData API Driverが各種インタフェースフォーマットにデータを変換してツールに返します。
これにより、各種ツールからアドホックにSQLによるリクエストがあったタイミングで最新のデータをユビレジ API から取得することが可能となります。
今回はこのAPI Driver と ETLツールのASTERIA Warpを組み合わせて、ユビレジのメニュー情報を自動的にSQL Server に登録するフローを作成してみました。
出来上がりイメージは以下のようになります。
手順
ユビレジ API 利用準備
最初にユビレジのAPIを利用するために、ユビレジ側でAPIの有効化設定を行います。
まず、設定画面にアクセスし「システム連携」→「API アクセストークン」をクリックします。
https://ubiregi.com/a/account/apps
次に「新しく作成」をクリックし
任意の名前を入力し、「作成」をクリックすることでAPI Tokenが生成されます。
作成完了後、「表示」をクリックすることで生成されたAPI Tokenを取得できます。
この以下の文字列のTokenを後ほど利用するので、控えておきましょう。
CData JDBC Driverのインストール
次に、CData Driverの準備を行います。以下のダウンロードページからAPI、 SQL Server のJDBC 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 についても同様の手順でコネクションを作成します。
画面左のコネクションペイン上にある[]ボタンをクリックをクリックすると、「コネクションの作成」ダイアログが表示されます。
「接続種別」として「RDB」を選択、「名前」に分かりやすい名前を設定し「OK」をクリックします。
作成したコネクションをダブルクリックすると、画面右のインスペクタに接続プロパティが表示されます。
「基本」タブでドライバーのパスとURLをそれぞれ設定します。
ドライバーのパス
前節でインストールした 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のヘルプ
プロジェクトの作成
コネクションを追加したら、実際にフローを作成していきましょう。
フローデザイナーのメニューから「新規作成」→「プロジェクト」をクリックし
任意の名称で新規フローを作成します。
データの読み込み処理の構成
フローでは、はじめにユビレジが保持するデータを読み込んでみます。
データベースタブにある「RDBGet」のコンポーネントをフローに配置し、ダブルクリックします。
コネクションの選択ウインドウが表示されるので、先程作成したユビレジのコネクションを選択しましょう。
その後、SQLビルダーが表示されるので、取得したいデータが格納されている、任意のテーブルとカラムを選択します。
今回はMemuItemsを以下のように選択しました。
あとは、「モデルにSQLを適用する」をクリックし「SELECTテスト」でデータが正常に取得できているかを確認します。
以下のようにデータが参照できれいればOKです。設定を保存してSQLビルダーを閉じます。
データの追加処理の構成
続いてデータ追加処理部分を構成していきます。
データ追加のコンポーネントは「RDBPut」を使いますが、その前に連携先の項目にデータをマッピングするための「Mapper」コンポーネントを配置しておきましょう。
続いて、「RDBPut」を配置してコンポーネントをダブルクリックします。
事前に構成していたSQL Server コネクションを選択します。
コネクション選択後、データ追加を行う対象のテーブルとフィールドの設定画面が表示されるので、追加先となる任意のテーブルとカラムを指定します。
マッピングの構成
追加先テーブルとフィールドの設定が完了したら、最後にMapperを編集しましょう。
以下のように各項目のマッピング画面が表示されるので、取得元から追加先に対して、項目を合わせます。
あとは、フローを終了するためのコンポーネントを配置すれば、フローの完成です。
実行
それでは実際にフローを動かしてみましょう。
画面上の「実行」ボタンから、フローを実行できます。
実行後、以下のようにステータスに「正常終了」と表示されれば完了です。
実際にSQL Serverを確認してみると、以下のようにデータが正常に登録されていました。
おわりに
今回はASTERIA WarpとCData JDBC Driverを用いてユビレジのデータをSQL Server に同期する方法を紹介しました。
SQL Server 以外にも、CData JDBC Driver・ASTERIA Warpを利用することで、ユビレジ と200を超えるクラウドサービスとのデータ連携がノーコードで実現できます。
是非自社で利用しているサービスに合わせて、連携を実現してみてください。
関連コンテンツ