CData Arc でスマレジの取引データをCSV ファイルに出力する

by 色川穂高 | 2023年09月01日

 
こんにちは。CData Software Japan の色川です。
 
高機能なクラウドPOS「スマレジ」のデータを標準SQL でクエリできる「CData Drivers for Smaregi」は、数あるCData Drivers の中でも、人気の高いドライバの1つです。
 
もちろんCData Arc からも「CData Drivers for Smaregi」を利用して、スマレジとのデータ連携をノーコード・ローコードで実現することができます。スマレジからの売上データ(取引)の連携は、CData Arc で実現できる数多くのシナリオの中でも人気の高いシナリオの1つです。
 
直近でv23 がリリースされているCData Arc とCData Drivers は継続的に機能強化・改善を続けており、機能や設定の流れも従来より一層分かりやすく利用頂けるようになっています。この記事では、最新のCData Arc とCData Drivers for Smaregi を利用して「スマレジの取引データをCSV ファイルに出力する」方法をご紹介します。
 

スマレジ

スマレジはiPad/iPhone アプリを用いた高機能クラウドPOS レジです。商品管理、売上管理、在庫管理、顧客管理、売上分析など、豊富な機能が提供されています。
 
 
 

CData Arc

CData Arc は、CData 製品の中で「自動化/Automate」を担うデータ連携ツールです。「B2B 連携をもっとシンプルに」をコンセプトに、ファイル連携 & DB 連携 & API 連携といったB2B 連携に必要なすべてをノーコード・ローコードでつなぐことができるプラットフォームです。
 
 

最近のアップデート(ピックアップ) 

CData 製品では新しい機能の提供に限らず、既存の機能も継続的に機能改善が実施されています。ここでは今回の記事に関連する最近のアップデートを幾つかピックアップしてご紹介します。従来バージョンのCData Arc やCData Drivers for Smaregi をご利用頂いている方も、より便利になっている最新バージョンの活用をぜひご検討ください。
 

CData Arc

CData Arc にはCSV ファイルを出力する方法が幾つかありますが、この記事では「XMLMap コネクタ」でデータをフラット化して、「CSV コネクタ」でフラット化されたXML をCSV ファイルに変換します。
 
CData Arc では、よりシンプルにCSV 出力する方法もありますが、このパターンは最も広範に適用できる手順であり、CData Arc でCSV 変換するためのスタンダードな方法と言えます。このような変換の流れで活用できる機能として、CSV コネクタの「テストファイルをアップロード」と、XMLMap コネクタの「テストマッピング」を紹介します。
 

CSV コネクタ - テストファイルをアップロード

 
以前のCData Arc では、XMLMap コネクタでCSV ファイル側のデータ構造を表すXML スキーマ(テンプレート)を手動で記述して用意する必要がありました。これが最近のCData Arc では、CSV コネクタ等、多くのファイル変換系コネクタに搭載されている「テストファイルをアップロード」機能を利用することで、処理対象のCSV ファイルからXMLMap コネクタで利用できるマッピング用のスキーマ(テンプレートファイル)を自動生成することができます。
 
操作はシンプルで、実際に出力したいCSV ファイルをテストファイルとしてアップロードするだけで、XMLMap コネクタから自動認識可能なスキーマ情報がCSV コネクタに構成されます。
 
 
 

XMLMap コネクタ - テストマッピング

 
XMLMap コネクタはデータマッピングの機能を担う、CData Arc でも中核的なコネクタです。このXMLMap コネクタにはv23 からマッピング結果をテスト(プレビュー)できる機能が搭載されています。
 
マッピングや編集・加工(文字列編集・数値演算・日付書式・etc)の結果を即時に確認できる「テストマッピング」の便利さは最近のアップデートの中でも、とても好評を頂いています。
 
 

CData Drivers for Smaregi

従来のCData Drivers for Smaregi では、取引や取引明細を取得する際にフィルタリング条件の指定が必須でしたが、v23 のCData Drivers for Smaregi ではデフォルトのフィルタリング条件が構成され利便性が高まっています。この記事のように「直近の一定範囲を取得出来れば必要十分」といった利用シーンでは特に利便が高そうです。
 
取引や取引明細ではフィルタリング条件は、過去30日分のUpdDateTime に設定されています。30日はスマレジAPI 側の検索最大範囲です。
 
 

この記事のシナリオ

この記事では「スマレジから取引データを取得してCSV ファイルを出力する」シナリオを作成します。
 
 
記事の後半では、スマレジ連携で相談頂くことの多い「取置き状態の取引データを取得する方法」などもご紹介しています。ぜひごらんください。
 

事前準備

事前準備として、必要な製品のインストールや、連携元・連携先の構成を確認していきましょう。
 

CData 製品のダウンロードとインストール

この記事のシナリオでは、こちらの製品を利用します。30 日間のトライアルライセンスが提供されていますので、ぜひお手元で試してみてください。
 
CData Arc のインストールはこちらを参考にしてください。
 

スマレジ

スマレジは「取引履歴一覧」で確認できる、こちらの3件のデータを取得できる状態で実行しています。
 
 
スマレジからは取引情報と店舗情報を以下のような親子関係で取得しています。
 
取引情報:取引 TransactionHeads
取引情報:取引明細 TransactionDetails
店舗情報:店舗 Stores
 
 
スマレジAPI への接続に必要な設定は こちらの記事 を参考にしてください。

CSV

この記事では、以下の構造のCSV ファイルを出力します。
 
"注文番号","購入店舗名","店舗ID","注文日","税金","合計","スタッフID","商品コード","数量"
"1336","販売店A","1","2023-08-31","363","4000","1","4","8"
"1335","販売店A","1","2023-08-31","136","1500","1","3","3"
"1334","販売店A","1","2023-08-31","45","500","1","2","1"
 
出力したいCSV ファイルのサンプルとして、こちらのようなCSV ファイルを用意しました。このサンプルファイルは「テストファイルをアップロード」で利用します。
 
注文番号,購入店舗名,店舗ID,注文日,税金,合計,スタッフID,商品コード,数量
TransactionHeadId,StoreName,StoreId,TransactionDateTime,TaxInclude,Total,StaffId,ProductId,Quantity

 CData Arc スタートアップガイドとナレッジベース

CData Arc を使いはじめるときは、こちらも参考にしてください。
 
CData Arc に関するナレッジは、こちらにまとめています。あわせて参考にしてください。
 
それでは実際にそれぞれの連携フローを作成していきます。
 

連携フローの作成

このシナリオで作成する連携フローは以下のような流れになっています。
 
コネクタ 内容
1 CData スマレジからSelect
2 XMLMap 1 のデータを3 にマッピング
3 CSV XML からCSV に変換
4 File 3 で変換したCSV ファイルを指定フォルダに出力
 
 

CData コネクタ

CData コネクタを配置し「スマレジ からSelect」するための設定をします。コアカテゴリから「CData コネクタ」を選択・配置して、スマレジへの接続を構成します。コネクタの設定で、スマレジへの接続を設定します。事前準備で取得したAccess Token とContract Id を設定します。接続テストでスマレジへの接続を確認します。
 
 
CData コネクタ等のデータソース系コネクタでは、親子関係を持つ複数のテーブルを取得できる「ChildTable」と言う機構が用意されています。この記事では「ChildTable」機能を利用して、スマレジからデータを取得します。
 
アクションとして「Select」を選択して、テーブルの追加で「TransactionHeads」を選択します。
 
 
カラム設定で、取得対象のカラム(列)を選択します。
 
 
この記事では、取引区分が「通常」の取引データを取得します。
 
 
 
次にテーブルの追加で子テーブルとして取得する「TransactionDetails」を選択します。
 
 
カラム設定で、取得対象のカラム(列)を選択します。
 
 
フィルタ設定で、親テーブルである「TransactionHeads」と結びつけるための条件を構成します。
 
 
更にテーブルの追加で、取引(TransactionHeads)に対するもう1つの子テーブルとして取得する「Stores」を選択します。
 
 
カラム設定で、取得対象のカラム(列)を選択します。
 
 
こちらもフィルタ設定で、親テーブルである「TransactionHeads」と結びつけるための条件を構成します。
 
 
テーブルとそれぞれのフィルタ条件の設定ができたら「XML 出力をプレビュー」で取得されるデータをプレビューして確認しておきます。
 
 
 
ここで「サンプルデータを保存」しておくと、後続のXMLMap コネクタを構成する際に便利です。
 
 
CData コネクタでのSelect では、デフォルトでレコード単位にメッセージファイルを出力します。今回は取得するレコードを1つのCSV ファイルとして出力したいので、取得する段階でメッセージファイルが1つのファイルで生成されるように構成しておきます。高度な設定の「最大レコード数」を「-1」として構成して、コネクタの設定を保存します。
 
 

CSV コネクタ

次に、連携先(変換先)となるCSV コネクタを配置し「XML からCSV に変換」するための設定をします。コアカテゴリから「CSV コネクタ」を選択・配置して、CSV への変換を構成します。
 
 
今回の記事ではカラムヘッダー(列名を表す行)が存在するCSV ファイルに出力しますので「カラムヘッダーが存在します」を有効にします。
 
 
ここまでの設定だと、CSV コネクタが「どのような構造のCSV ファイルを扱う予定なのか」を判断できないため、XMLMap コネクタで別途スキーマファイルを構成する必要が生じます。そこで、アップデートで紹介した「テストファイルをアップロード」を利用して、CSV コネクタで扱う予定のCSV ファイルを明示し、スキーマ情報を自動生成します。インプットタブの「その他」から「テストファイルをアップロード」を選択します。
 
 
用意したCSV ファイルをアップロードします。これでXMLMap コネクタでのマッピング時にCSV ファイル側のスキーマを自動認識することができます。
 
 
 

XMLMap コネクタ

次に、XMLMap コネクタを配置し「1 のデータを3 にマッピング」するための設定をします。コアカテゴリから「XMLMap コネクタ」を選択・配置します。
 
 
フローをつなぐと、ソースファイル・デスティネーションファイルが選択できるようになり、マッピングでは同名項目は自動的にマッピングされます。
 
 
データソースと宛先の間で、それぞれ下記のようにマッピングしていきます。さきほど「サンプルデータを保存」しておいたので、データソース側では項目名とともにサンプルデータが表示されて便利です。
 
項目 テーブル フィールド
注文番号 TransactionHeads TransactionHeadId
店舗ID TransactionHeads StoreId
注文日 TransactionHeads TransactionDateTime
税金 TransactionHeads TaxInclude
合計金額 TransactionHeads Total
スタッフID TransactionHeads StaffId
商品コード TransactionDetails ProductId
数量 TransactionDetails Quantity
購入店舗名 Stores StoreName
 
 
TaxInclude やTotal の値を整数で出力するように編集・加工してみます。編集・加工する項目の「式」をクリックして式エディタを表示します。
 
 
今回は、算術フォーマッタの floor() を利用して、小数点以下を切り捨てて整数のみを出力してみます。
 
 
Total も同じように設定しました。
 
 
もう1つ、TransactionDateTime(注文日) も日付のみに編集・加工しておきます。ここでは date() を利用して、日付書式を指定して編集・加工しています。
 
 
編集・加工の設定で、期待通りの結果が得られるか「マッピングをテスト」します。さきほど「サンプルデータを保存」しておいたので、データソース側にはサンプルデータが表示され、そのままテストを実行できます。
 
 
 
「テスト」を実行すると、期待通りの結果が得られることが確認できました。
 
 
これでCSV ファイルを生成するまでのフローが出来上がりました。
 

File コネクタ

最後にFile コネクタを配置し「CSV ファイルを指定フォルダに出力」するための設定をします。コアカテゴリから「File コネクタ」を選択・配置します。
 
 
「パス」に出力先フォルダを設定します。この記事では「C:\Test」に出力しています。
 
 
File コネクタへのフローをつなぎます。これで「スマレジから取引データを取得してCSV ファイルを出力する」フローができあがりました。
 
 

連携フローの実行

作成したフローを実行して確認してみましょう。起点となるCData コネクタからフローを実行してみます。アウトプットタブから「受信」を実行します。
 
 
「詳しくはこちら」から表示できるメッセージビューアで、作成したフローの一連の実行状況を確認します。
 
 
指定したフォルダに、CSV ファイルが出力されていることが確認できます。
 
 

その他

ローカルフォルダではなくクラウドストレージに連携したい

この記事ではFile コネクタを利用してローカルフォルダに出力しましたが、CData Arc ではFTP やSFTP はもちろん、Amazon S3、Azure Blob、Google Storage やBox、Dropbox、Google Drive、OneDrive、SharePoint ライブラリといった多くのクラウドストレージへのファイルアップロード/ダウンロードに対応したMFT コネクタを提供していますので、ローカルフォルダ以外に連携したい、と言う場合も簡単です。
 
 

スマレジの「取置き」データを取得したい

上記のフローの中では、取引区分が「通常」のデータをフィルタ設定して取得しましたが、取引区分を指定することで、スマレジの管理画面からはCSV ダウンロードできない「取置き」のデータなどをCSV ファイルとして出力することも可能です。
 
 
 

CSV ファイルの文字コードをShift-JIS に変換したい

CData Arc のフローではデータの文字コードを「UTF-8」で扱います。UTF-8 は世界的にも最もポピュラーな文字コードで、多くのソフトウェアやサービスで標準的に採用されている文字コードです。
 
ただ、利用するシナリオによっては、CSV ファイルをShift-JIS として出力したいケースもまだまだ多いかも知れません。そう言った時はCSV コネクタで変換した後(File コネクタの前)に、Script コネクタを設定して、以下のArcScript を構成する事でShift-JIS に変換したCSV ファイルを出力することができます。
 
 
<arc:set attr="file.file" value="[FilePath]" /> 
<arc:set attr="file.encoding" value="UTF-8" /> 
<arc:call op="fileRead" in="file" out="out"> 
  <arc:set attr="fileOut.data" value="[out.file:data]" /> 
</arc:call> 
<arc:check attr="fileOut.data"> 
  <arc:set attr="fileOut.filename" value="[FileName]" /> 
  <arc:set attr="fileOut.encoding" value="Shift-JIS" /> 
  <arc:push item="fileOut" /> 
  <arc:else> 
    <arc:throw code="NoData" desc="No File Data."/> 
  </arc:else> 
</arc:check>

 

 

 おわりに

従来のバージョンから、多くのお客様で活用頂いているシナリオですが、それ以降も使い勝手を良くする機能強化・改善が数多く実施されています。この記事では、それら製品アップデートの一端をご紹介しました。
 
CData では国内発のSaaS へのDriver も数多くご提供していますが、スマレジAPI へSQL でのアクセスを可能にするCData Drivers for Smaregi はとても人気の高いDriver です。
 
CData Arc はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで250を超えるアプリケーションへの連携を実現できます。必要な連携を低価格からはじめられる事も大きな特長です。
 
皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。

 
製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
この記事では CData Arc™ 2023 - 23.2.8609.0 を利用しています

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。