kintone データをシンガポールの会計ソフト SQL Account にインポート

by 赤塚誠二 | 2024年03月26日

kintone2SQL Account

SQL Account はシンガポールのApscom Solutions 社が提供しているシンガポール地域向けの会計ソフトで、27万社以上の企業が導入しており、お隣のマレーシアでも大きなシェアを占めています。

今回はマレーシアにも拠点がある kintone で管理しているマスター情報を CData Arc を使って SQL Account にインポートするシナリオにトライしてみましょう。

Apscom Solutions Pte Ltd.

https://www.sql.com.my/accounting-software/

SQL Account

Accounting Software for Small Business | SQL Account SG (sqlaccounting.sg)

CData Arc について

CData Arc はファイル転送(MFT)と kintone をはじめとするSaaS データ連携をノーコードで実現できるデータ連携ツールです。今回利用するXMLファイルを含む各種ファイルフォーマット・データベース・SaaS API、オンプレミスやクラウドにある様々なデータをノーコードでつなぐ事ができます。

https://arc.cdata.com/jp/

シナリオの概要

CData Arc を使い、kintoneで管理している顧客情報を、SQL Account に取り込む。

kintone2SQL Account


SQL Account が提供している自動のデータの取り込み機能「Auto Import」は サーバー版でのみ対応 で、無料トライアルで使用可能なスタンドアロン版では非対応のため、今回はCData Arc でkintone からインポート用データを作成して「Auto Import」用フォルダに出力し、図の一番右側にある Auto Import の部分は手動で行うことまでをスコープとしました。

SQL Account におけるデータの取り込み方法

詳細はSQL Accounting Linking マニュアルを参照します。

https://wiki.sql.com.my/wiki/SQL_Accounting_Linking

今回は SQL Account から提供されている以下4パターンのうち、XMlL形式での取り込みを検証しました。

なおデータのエクスポート機能も提供されていますが、こちらはSQL Account のバックアップ用のため外部のシステムとの連携には非対応のようです。

1 SDK Live

https://wiki.sql.com.my/wiki/SDK_Live

ユーザーが管理する外部プログラムとSQL Account を直接ライブリンクするための連携機能を自前で開発するためのSDK です。

2 SQL Acc XLS n MDB Import 

https://wiki.sql.com.my/wiki/SQL_Acc_XLS_n_MDB_Import

Excel、CSV、TXTファイルを使ってSQL Account に以下のデータをインポートすることができる外部シェアウェアプログラムです。

システム要件として Microsoft Access Database Engine 2010  (AccessDatabaseEngine.exe - 32 bits) が必須のため今回の検証候補からは除外しました。

3 SQL XML Import - XML File

https://wiki.sql.com.my/wiki/SQL_XML_Import

データインポート用のプログラム「SQL Financial Accounting Text & XML Import V5」を使用してマスタファイルとトランザクションをXML形式でインポートできます。

※  Auto Import 機能にも対応

4 SQL Text Import - CSV/TXT File

https://wiki.sql.com.my/wiki/SQL_Text_Import

マスタファイルとトランザクションをセミコロン区切りのCSVファイル形式(拡張子はtxt)でSQLAccount にインポートできる外部プログラムです。

※ Auto Import には非対応

SQL Account のインストール

SQL Account はWindows 環境のみ対応しています。

以下のページでフリートライアルを申し込むと、メールでソフトウェアのダウンロードリンクが送られてきますのでインストーラを実行してインストールを実施します。

https://www.sqlaccounting.sg/free-trial-download

インストール方法は動画でも確認可能です。途中でサンプルデータを使用するか聞かれますので検証用にYESを選択します。

https://www.sqlaccounting.sg/getting-started

インストールが完了するとデスクトップに SQL Account のアイコンが追加されましたので、実際にアプリケーションを起動してみます。

kintone2SQL Account

問題なく起動してサンプルデータも確認できました。

kintone2SQL Account

データインポートツール SQL Financial Accounting Text & XML Import V5 のインストール

以下のリンクの「SQL Import Program Download」の項目にある「SQL Import V5」のリンクからソフトウェアをダウンロードし、SQL Account と同じ環境にインストールします。

https://wiki.sql.com.my/wiki/SQL_XML_Import#SQL_Import_Program_Download

こちらもインストールが完了するとデスクトップにアイコンが作成されますので、アプリケーションを起動してみましょう。

kintone2SQL Account

XMLでの手動インポート

まずは以下のマニュアルを参考に、手動でのデータ取り込みを行なって基本的な操作方法やサンプルデータのフォーマットを確認しておきます。

手動インポートの概要

データの取り込みは以下の2ステップです。

  1. マニュアルの「01. Click Folder Icon button to select the zip file which content of XML file.」で、サンプルデータ「Example-XML.zip」を選択
  2. データインポート後、SQL Financial Account を起動してデータを取り込んだモジュールを開き、問題なくデータが追加されていることを確認

kintone2SQL Account

参考 : Auto Import への対応

インポートを自動化する場合は以下のマニュアルに従って Auto Import 機能を有効化し、「SQL Financial Accounting Text & XML Import V5」のプログラムをWindows 標準のスケジュール機能で定期的に実行します。

https://wiki.sql.com.my/wiki/SQL_Text_Import#Auto_Import_Settings

CData Arc 側での対応

CData Arc 側で作成するフローの概要は以下です。

  1. CData Arc 環境の準備
  2. CData Arc で今回用に作成した kintone アプリから顧客情報を取得
    サンプルデータ「AR_Customer.300-A0002.xml」を元にSQL Account のデータ構造に合わせたKintone アプリを用意しました。ここは必要に応じてカスタマイズを行ってみてください。
  3. SQL Account にインポート可能なフォーマットのXMLを作成
  4. 作成したXMLデータを一つのZIPファイルにまとめる
  5. 所定のフォルダにZIPファイルを出力

kintone2SQL Account

1 CData Arc 環境の準備

CData Arc は一ヶ月間の無料トライアルが可能ですので、SQL Account をインストールしたWindows 環境にインストールします。

https://arc.cdata.com/jp/

2 CData Arc kintone アプリから顧客情報を取得

今回取得するアプリのデータ構造は以下です。

アプリ名 : kintone_import (サンプルデータ内のROWDATAに該当)

サブテーブル名 : kintone_import_テーブル (サンプルデータ内のsdsBranchに該当)

kintone コネクタでkintone に接続

kintone2SQL Account

kintone への接続は CData Arc が標準で提供しているkintone コネクタを使用します。

今回kintone 上に作成した顧客情報のアプリは基本情報を管理するアプリにサブテーブルの支店情報が紐づく親子関係になっているため、CData Arc のデータソース系コネクタで利用できる「Child Tables」機能を使用します。

「Child Tables」機能の詳細は以下をご参照ください。

https://www.cdata.com/jp/blog/cdataarc-feature-childtables-kintone

kintone2SQL Account

3 SQL Account にインポート可能なフォーマットのXMLを作成

SQL Accounting にインポート可能なXML ファイルの仕様は以下の通りです。

3 - 1 1レコード(親テーブル)につき1つのXML ファイルにまとめる

サブテーブルのデータは子要素として複数登録可能

3 - 2 XML ファイルのフォーマット

サンプルデータから AR_Customer.schema.xml のようにスキーマファイルを作成し、XMLマッパーでkintone 側のデータとXMLファイルの要素をマッピングします。

用意したスキーマファイルのイメージ(AR_Customer.schema.xml)

<?xml version="1.0" standalone="yes"?>
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="CODE" fieldtype="string" required="true" WIDTH="10"/>
<FIELD attrname="CONTROLACCOUNT" fieldtype="string" WIDTH="10"/>
...
<FIELD attrname="EMAIL" fieldtype="string" WIDTH="200"/>
</FIELDS>
<PARAMS/>
</FIELD>
</FIELDS>
<PARAMS/>
</METADATA>
<ROWDATA>
<ROW CODE="" CONTROLACCOUNT="" COMPANYNAME="" COMPANYNAME2="" COMPANYCATEGORY="" AREA="" AGENT="" BIZNATURE="" CREDITTERM="" CREDITLIMIT="" OVERDUELIMIT="" STATEMENTTYPE="" CURRENCYCODE="" OUTSTANDING="" ALLOWEXCEEDCREDITLIMIT="" ADDPDCTOCRLIMIT="" AGINGON="" STATUS="" PRICETAG="" CREATIONDATE="" TAX="" TAXEXEMPTNO="" TAXEXPDATE="" REGISTERNO="" GSTNO="" ATTACHMENTS="" REMARK="" NOTE="">
<sdsCreditControl/>
<sdsBranch>
<ROWsdsBranch DTLKEY="" CODE="" BRANCHTYPE="" BRANCHNAME="" ADDRESS1="" ADDRESS2="" ADDRESS3="" ADDRESS4="" ATTENTION="" PHONE1="" PHONE2="" FAX1="" FAX2="" EMAIL=""/>
</sdsBranch>
</ROW>
</ROWDATA>
</DATAPACKET>
```

XMLのフォーマットが値ではなく属性に情報を持つ独特な構造になっていますが、CData Arc 側では問題なく対応できました。

「Child Tables」機能で取得したサブテーブルのレコードが複数ある場合の対応について、XMLMap では、末端の要素(ROWsdsBranch)自体は繰り返し(Mapping Loop)のポイントに出来ないため、仮想のループポイントを設けて foreach loop をサブテーブル側にマッピングする対応を行っています。

kintone2SQL Account

3 - 3 ファイル名

XML ファイルの名前は所定の命名規則に従って作成する必要があり、各モジュールごとに若干ファイル名の規則が異なります。

詳細はマニュアルとサンプルデータにて確認が可能です。

https://wiki.sql.com.my/wiki/SQL_XML_Import#Guideline_&_Example

命名規則の例 ; BizObject.DocNo.CompanyCode.xml for AR, AP, SL & PH

サンプルレコードでの例は以下です。

AR_Customer.300-A0002.xml の場合

    • BizObject = AR_Customer (Maintain Customer のデータでは AR_Customer で固定)
    • DocNo = 省略 (Maintain Customer のデータではDocNoの項目がないため)
    • CompanyCode = 300-A0002  (サンプルレコード ROW タグ内の CODEが該当)

今回の命名規則への対応についてはxmlmap で取得した値をメッセージヘッダーに入れ、Script コネクタでファイル名を付け直して後続のコネクタに情報を渡しています。

kintone2SQL Account

なおローカルファイルスキームプロパティでは静的な名称のみでなく、 filename.yyyyymmdd のような動的な日付の値にも対応可能です。

https://cdn.cdata.com/help/AZJ/jp/mft/Architecture.html#message-headers

4. 全てのXML ファイルを1つのZIPファイルにまとめる

複数のファイルをZIP ファイルにまとめる処理についてはBatchCreate コネクタのオートメーション機能を用いて一定間隔でXMLファイルのデータをひとまとめにした上でZIP コネクタに渡します。

今回は検証のため自動実行を1分間隔に設定していますが、それ以外はデフォルトのままです。

上記バッチデータをZIPコネクタに渡すと、複数のXMLファイルを一つのZIPファイルにできました。

ZIPファイルの名前は任意で良いため、BatchCreate コネクタが標準で出力した「Batch-20240319101340204.zip」の形式のままにしています。

kintone2SQL Account

5 所定のフォルダにZIPファイルを出力

ZIPコネクタは繋いだだけで、設定はデフォルトのままです。

kintone2SQL Account

最後にファイルコネクタでファイルを出力したいフォルダのパスを指定します。

パス:C:\eStream\Utilities\SQLAccTxtImp\Pending

なお、実際にインポート処理を自動化する際には以下のドキュメントのようにSQL Account のネットワークサーバー版にてファイルアップロードの設定を行った後でWindows のタスクスケジューラで実行するスケジュールを指定する流れになります。
https://wiki.sql.com.my/wiki/SQL_Text_Import#Auto_Import_Settings

kintone2SQL Account

以上でkintone のアプリから SQL Account へのデータ連携に必要な処理が完成しましたので、 SQL Financial Accounting Text & XML Import V5 を使って手動で取り込みを行なってみます。

kintone2SQL Account

SQL Account 側でも確認ができました!

kintone2SQL Account

SQL Account が指定しているファイルのフォーマットに合わせてXMLファイルを作成したりZIPにまとめる処理はCData Arc の得意分野ですので、一見複雑そうな処理もシンプルに実装できました。

なお、今回は全てのソフトウェアを同じ環境上にインストールしましたが、CData Arc では FTP/SFTPなどへの対応も可能なため、基幹システムのサーバーが分散している場合でも対応が可能です。

まとめ

今回の連携では CData Arcの特性を活かして以下のような処理を実施しています。

  • シンプルな設定でサブテーブル構成への対応
  • XML の属性に値を持たせるようなケースへの柔軟な対応
  • 複数のファイルを一つのZIPファイルに取りまとめ
  • オンプレミス環境への対応
  • 登録するレコード単位にファイルを分ける処理への対応

 CData Arc では基本的な使い方を体験できる無料のオンラインセミナーも開催しています。

ぜひお気軽にご参加ください

関連コンテンツ

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

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