CData Arc - ArcScript(Python サポート)の活用例

by 色川穂高 | December 19, 2025

CData Arc - ArcScript(Python サポート)の活用例

こんにちは。CData Software Japan の色川です。

今年もクリスマスまで残すところ1週間。この時期恒例のQiita のアドベントカレンダーもラストスパートに入ってますね。Qiita のアドベントカレンダーといえば、AI 関連の記事をはじめ、最新の技術動向をキャッチアップできるトピックが多く毎年読むのが楽しみです。一方で、B2B データ連携の現場では、連携先の事情やシステム的な制約によって、選べる連携アプローチ(連携技術やインタフェース)が限られてしまうことも少なくありません。

ちょうど最近「連携元システムの制約上、欲しいデータを取得できるインタフェースが、システムからの「通知メール(の本文)」に限られます。通知メールをテキスト解析(パース)してデータを構造化した上で別システムに連携したいのですが・・・」というご相談を立て続けにいただきました。

こうしたシナリオは、企業におけるデータ連携の現場では、まだまだ「あるあるな話」だと思います。そして、この手のシナリオは「一般的なノーコード連携ツールではなかなかスマートにいかない」ケースも多いかと思います。Arc においても同様で、Arc のノーコード機能だけで考えると実現が難しいケースも多いです。しかしArc が持つ「ローコード」機能である ArcScript、特に今夏のアップデートで搭載された「Python サポート」を活用すると現実的な解決策も見えてきます。こういった少し泥臭い部分も含んだ「あるある」話は、アドベントカレンダーのネタにピッタリです。というわけで、この記事では「ArcScript(Python サポート)の活用例」についてご紹介します。

この記事は、CData Software Advent Calendar 2025 19日目の記事です。

CData Arc

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

CData Arc - ArcScript(Python サポート)の活用例

B2B データ連携における多くのシーンやシナリオにおいて、Arc では「ノーコード」によるコネクタ設定で連携フローを構成・運用できるようにデザインされていますが、一般的な利用シーンにフォーカスしたノーコード用コネクタの機能デザインではフィットしない一部のエッジ的なシナリオにおいては、高い自由度と応用性を備えたArc の「ローコード」機能が活躍します。ノーコード・ローコードの両面を備えるのも、CData Arc の大きな特長の1つです。

ArcScript(Python サポート)

ArcScript」は、CData Arc が標準で備える「ローコード」機能の実行エンジンであると同時に、データアクセスおよびプロセッシングのあらゆる側面の管理を可能にするハイレベルなプログラミング言語です。ArcScript はXML ベースのスクリプト言語で、カスタムの処理ロジックを記述するために使用できます。豊富なオペレーションやキーワードがサポートされており、ファイルやメッセージの変換や操作、HTTP リクエストや外部プロセスの実行など、さまざまなビジネスプロセスと統合することができます。

CData Arc - ArcScript(Python サポート)の活用例

さらに、今夏のアップデートではArcScript でのPython コードの記述・実行がサポートされました。ArcScript のPython サポートにより、Python の標準ライブラリはもちろん、NumPy やPyTorch のような科学計算用ライブラリなどを筆頭に、Python の豊富なサードパーティーライブラリを利用したデータ処理も、Arc の連携フローにシームレスに組み込めるように進化しています。

ArcScript でPython を利用するための事前準備

ArcScript でのPython サポートを利用する際には、Arc がインストールされている環境にPython のインストールが必要です。また、Python サポートを有効化するために最初に簡単なセットアッププロセスが必要です。

事前のセットアッププロセスはこちらで詳しくご案内していますが、.NET 版のArc を利用する場合は環境変数(PYTHONHOME)を指定することで必要な依存関係が解決されます。クロスプラットフォーム版(Java 版)のArc を利用する場合は、Jep ライブラリのインストールと環境変数(PYTHONHOME)の指定が必要です。また環境によっては、環境変数(LIBRARYPATH)でJep の共有ライブラリ(libjep.so)が存在する位置を指定する必要があります。

セットアッププロセスで一度有効化すれば、ArcScript の実行が許可されている場所であれば、どこでもPython スクリプトを記述することができます。

この記事のポイント

この記事で「通知メールの本文をテキスト解析(パース)してデータを構造化した上で別システムに連携したい」シーンを想像したときに、ポイントとなるのは「通知メールの本文をテキスト解析(パース)してデータを構造化」する部分です。この記事で取り上げている例は「通知メールが実質的にシステムのAPI」とも言えますが、「連携元サービス独特の規則で書かれた通知メールの件名や本文にある文字列群を(独特の規則にそって)パース」して、JSON なり、XML なり、扱いやすい形で構造化できれば、あとはArc のノーコード機能で連携先のシステムやデータストアにスムーズにつなげることができるでしょう。

もちろん、通知メールが連携のインタフェースであっても、その添付ファイルにCSV などで構造化された形でデータが提供されているならば、Arc はもちろん、一般的なノーコードツールでもスムーズに連携できそうです。しかし「連携元サービス独特の規則で書かれた通知メールの件名や本文にある文字列群を(独特の規則にそって)パースして取得する必要がある」ような場面では、一般的な利用シーンにフォーカスしたノーコードの機能性のみではなかなかフィットしないことが多いです。機械的に取得できる(≒ ロジック化可能な規則で書かれている)ことは前提として、可変部分や条件判断、取得値の妥当性検証や例外処理など、独特の規則に沿った実装を、シンプルなGUI による設定が主のノーコード機能のみで実現することはハードルが高く、自由度・応用度の高いローコード機能を活用する方がフィットするケースも多いでしょう。

この記事の例では、ポイントとなる「通知メールの本文をテキスト解析(パース)する」部分において、Python の標準ライブラリであるemail パッケージを利用しています。「ローコード」といっても、単なる文字列処理でゴリゴリと頑張るのでなく、email パッケージを利用することで、ヘッダーやMIME 構造の解析、文字コードやマルチパートの扱いなどをRFC に準拠した形で安全かつシンプルに実現することが可能です。

以下では「通知メール(本文)を受信」して、受信したメール(本文)を「テキスト解析(パース)してデータを構造化」する流れを、例を挙げて少し詳しく紹介していきます。

この記事で処理するメールイメージ(例)

この記事では、以下のような構成の通知メールを対象として、テキスト解析(パース)により、件名(Subject)や本文(Body)、送信日時(Date)を取得してデータを構造化(JSON 形式)する流れをイメージしています。

CData Arc - ArcScript(Python サポート)の活用例

CData Arc - ArcScript(Python サポート)の活用例

この記事では、件名(Subject)や送信日時(Date)はそのまま取得対象の値として。本文(Body)はハイライトした文字列部分を判別のための識別子(相当)として「続く空白のあとに出現した値以降、行末まで」を、それぞれ取得対象の値として扱うイメージで構成しています。この記事はあくまでイメージですが、機械的に取得可能な規則化(ロジック化)ができる条件にあれば、Python コードでの実装自体は一般の数多くの情報などを頼りにして進められると思います。

1. メール(本文)を受信(Email Receive コネクタ)

メールサーバからのメール受信には、Arc の「Email Receive コネクタ」が便利です。Email Receive コネクタは、現在主流であるIMAP プロトコルベースのメールサーバからのメール受信プロセスをシンプルな設定で実現することができます。

CData Arc - ArcScript(Python サポート)の活用例

Email Receive コネクタでは、メールメッセージ全体を eml 形式で受信することも、添付ファイルのみをダウンロードすることも可能です。新規メッセージのみを対象としたり、追加のIMAP フィルターもサポートしたシンプルな設定で利用できるパワフルなコネクタです。

この記事では、メール本文を処理対象としたいので、Download Type には「Message」を選択しています。

CData Arc - ArcScript(Python サポート)の活用例

この記事の例では、マルチバイト文字を含んだメールを利用していることもあり、取得されるメールの本文部分はBase64 エンコードされている状態で、Email Receive コネクタのアウトプットとして次のコネクタに渡されます。

CData Arc - ArcScript(Python サポート)の活用例

CData Arc - ArcScript(Python サポート)の活用例

2. テキスト解析してデータを構造化(Script コネクタ)

この記事の一番のポイントになるのが「Script コネクタ」です。Script コネクタは、ArcScript を記述・実行する目的で用意されたコネクタで、Python コードの利用を含め、幅広いカスタムロジックを実現できます。今夏のアップデートではArcScript でのPython サポートとともに、Script コネクタでのスクリプト開発支援機能が大きく強化され、より高度で柔軟なデータフロー設計をシンプルなプロセスで実装可能になっています。

CData Arc - ArcScript(Python サポート)の活用例

この記事でイメージしているメール本文の構成(Email Receive コネクタから渡されるアウトプット)を対象に、送信日時や件名(の識別子以降)、本文の3-7 行目(番号|種別|名称|場所|補足、の識別子以降)をプロパティとしたJSON オブジェクトとして構造化して、アウトプットファイルとして出力します。

CData Arc - ArcScript(Python サポート)の活用例

import email, json

from email.header import decode_header

from email.utils import parsedate_to_datetime

from pathlib import Path

with open(_ctx.params.filepath, "rb") as f:

  raw = f.read()

msg = email.message_from_bytes(raw)

# Date parse

dt = parsedate_to_datetime(msg.get("Date"))

date_value = dt.strftime("%Y/%m/%d %H:%M:%S")

# Subject decode

subject_value = "".join(

  b.decode(cs or "utf-8", "replace") if isinstance(b, bytes) else b

  for b, cs in decode_header(msg.get("Subject", ""))

).strip()

# Body decode

lines = (msg.get_payload(decode=True) or b"").decode("utf-8", "replace").splitlines()

# to JSON [送信日時 / 件名]

data = {

  "送信日時": date_value,

  "件名": subject_value

}

# to JSON [番号 / 種別 / 名称 / 場所 / 補足]

for s in (l.strip() for l in lines[2:7]):

  if not s:

    continue

  k, v = s.split(None, 1)

  data[k] = v.strip()

output.data = json.dumps(data, ensure_ascii=False)

output.filename = str(Path(_ctx.params.filename).with_suffix(".json"))

CData Arc - ArcScript(Python サポート)の活用例

このように扱いやすい形でデータを構造化して取得できれば、あとはArc のノーコード機能で連携先のシステムやデータストアにスムーズにつなげることができるでしょう。

例えば、ここまでのイメージで「通知メールの本文をテキスト解析(パース)してデータをJSON オブジェクトとして構造化」できていますので、このデータをkintone のアプリなどへマッピングして登録するような流れであれば「JSON コネクタ」でArc がフローで扱うXML 形式に変換して、「kintone コネクタ」のUpsert アクションでアプリへの登録・更新を設定した後に、「XML Map コネクタ」でメール由来のデータ(JSON コネクタのアウトプット)と、kintone コネクタ期待する形式(kintone コネクタのインプット)をマッピングすれば出来上がりです。

CData Arc - ArcScript(Python サポート)の活用例

まとめ

この記事では「通知メールの本文をテキスト解析(パース)してデータを構造化して、連携対象データとして利用したい」シーンを対象にして、「ArcScript(Python サポート)の活用例」についてご紹介しました。

もちろん、メール本文を対象としたテキスト解析的なアプローチでなく、連携元との間でDB アクセスやWeb API、構造が定義されたファイルフォーマットなどで連携できるのであれば、そちらのアプローチの方が望ましいケースが多いと思いますが、さまざまな制約でそういうアプローチを選択できない場面は企業におけるデータ連携の現場において、まだまだ「あるある」な話かと思います。そのような制約のあるアプローチで検討せざるを得ない場面(エッジケース)において、Arc のローコード機能が活用いただける可能性がイメージいただけたのではないでしょうか。この記事のフローは、まさにノーコードとローコードの「いいとこどり」とも言えそうです。

CData Arc はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで275を超えるアプリケーションへの連携を実現できます。

皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。
CData Arc - セキュアなデータ連携とマネージドファイル転送(MFT)

製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
CData Software Japan - Support Form


この記事では CData Arc™ 2025 - 25.3.9469.0 を利用しています