はじめてのArcESBで悩んだところ

# はじめに
ArcESBはファイル転送やSaaS連携をノーコードで実現するシステムデータ連携ツールのひとつです。こういったノーコード系のツールは特有の考え方や使い方があるため、ノーコードとは言ってもいざ触るとなるとなかなかとっつきづらい部分があるかと思いますので、私が初めて触ったときに感じたことをまとめてみました。

# ArcESBのインストール
ArcESBのインストールについては[こちら](https://www.cdatablog.jp/entry/arcesb-install-windows)をご覧ください。とても詳細に記載されています。

# サービスの起動と管理画面のログイン方法
いきなり悩みました。インストール直後は良いのですが、いざサーバを再起動したとき、「あれ？どこからスタートするの？」「ログインURLなんだっけ？」となってしまいました。

- Windowsのスタートメニューから起動する方法

スタートメニューをクリックするとちゃんとメニューが登録されていますので、

1. Start ArcESB 2021 Serverでサーバを起動し
1. サーバが起動するまで少し待ったら、Launch ArcESB...でコンソールを起動します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/a4233c9a-b924-33f1-378f-d4351f630155.png)

- タスクメニューから起動する方法

タスクメニューにもアイコンが追加されているのでここからも起動、再起動させることが可能です。

タスクトレイで右クリックして

1. Start Server でスタートさせ、
1. Start Application...で管理コンソールを立ち上げます。（ブラザが開く）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/3883328d-1d3c-6cac-5109-bd5b3087ba3b.png)

# ワークスペースの単位で処理をまとめる。
ArcESBの連携処理は「FLOWS」上で作成していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/60a6d7e6-0c2c-f768-fc42-4d4a1dbf0a31.png)

`FLOWS` タブを選択すると最初に表示されるものがデフォルトのワークスペースと呼ばれ、ここにいくつもの連携処理を記載することができます。連携業務や処理毎に管理対象をまとめたいときにはこのワークスペースを新たにいくつも作成することができるようです。画面右上の歯車マークをみると新規作成やインポート、エクスポートできることがわかります。新たに追加されたワークスペースはタブを使って自由に切り替えることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/56d7883a-7759-3d34-d676-6f4ae96056d2.png)

ちなみにArcESBの画面上で複数作成されたワークスペースの実態は `C:\ProgramData\ArcESB\Workspaces` 内に保存されます。 `ProgramData` はプログラム用の隠しフォルダのため表示設定を行うか、エクスプローラ上で直接パスを入力してみてください。デフォルトのワークスペースは `C:\ProgramData\ArcESB\data` 配下になっているようです。なお、これらの保存先は設定ファイルで変更可能なようです。バックアップ時にはこのあたりの検討が必要になると思います。

## コネクタ毎にフォルダが生成される
ワークスペースフォルダ配下に処理フロー作成時に利用したコネクタ名と同じ名前のフォルダが生成されます。このフォルダ配下に設定ファイル、ログ、送受信したデータが保持されるようです。ログファイルを直接確認したい場合にはこちらを確認することになると思います。

# 起点となるコネクタから処理は実行される
ArcESBでは様々なコネクタが用意されており、そのコネクタをドラッグ＆ドロップで配置し、つなげることで処理フローを表現していくのですが、過去に私が利用していたツールでは処理フローの開始、終了位置を `Start`、`End` といったもので表現されていたため開始位置は理解しやすかったのですが、ArcESBではそういったものは用意されていないため、直感的にどこから始まるのか？ということがイメージしづらかったです。
下図にある `>` が点線で囲まれていて、どこもつながっていない状態のコネクタから処理がスタートします。ひとつのワークスペースでこのような起点となるコネクタを複数配置できるので、同時にいくつも処理を走らせることができます。ただ、一般的にはひとつのワークスペースでひとつの起点となる処理でまとめるケースが多いようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/6d1d47b2-0825-1056-cc40-cd9ee1ec84fe.png)

# コネクタの用途を理解して使い分ける

画面左側のメニューには複数のコネクタが表示されますが、いくつかの種類が用意されています。

- 外部アプリケーションとの連携用
    - CData Driversを利用すると本当に無数に存在します。
- データの変換用
    - CSV Map
    - XML Map etc...
- 処理フロー系
    - File（ファイルの移動）
    - Copy（ファイルのコピー）
    - Schedule（スケジュール起動） etc...

カテゴリは `Core`、`MFT`、`EDI`、`DataBase` 、 `Other` となっていて`Core`にはフロー系のものがあるので、こちらのカテゴリに属するコネクタを主に利用していくことになると思います。

# コネクタ設定で行うことを理解する

コネクタをワークスペース上に配置し、選択すると画面右側からプロパティ設定画面が表示され、複数タブでこまやかな設定を行うことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/fb1622a5-4d6d-9057-f7a3-4547f7314627.png)

## Settings
`Settings` タブでコネクタの基本的な設定を行います。連携用のコネクタであれば接続情報や取得するデータのスキーマ、取得条件等。変換用だとマッピングルール、処理フロー系だと対象なるパスの設定など、コネクタの基本的な設定を行う部分です。
## Automation
`Automation` タブで処理の起動タイミングを設定していきます。処理の起点となる場合には起動タイミングの設定を行いますが、処理の中間のコネクタの場合は  **Send**、**Receive** などを自動で行うかのチェックを行うだけになります。デフォルトではチェック済みなのですが、何かのかずみで外してしまっている場合には処理がそこで止まってしまう可能性があるので、もし連携処理がうまく流れなかった場合、このチェックがされているのかどうかを確認するのもありだと思います。複数のコネクタがあるときはチェックが大変そうですね。

## Input / Output
`Input`、 `Output` タブでは処理フローの実行状況の確認や、Automationで設定した自動起動ではなく、開発時のテスト実行などの**手動**で処理フローを実行したい場合に利用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/845cb4d7-e155-14b9-df52-1f7b81be3def.png)

# InputとOutputの考え方
コネクタのプロパティ設定には `Input`、`Output`があるのですが、コネクタに対してどちらの処理方向が`Input`で、どちらが`Output`になるのかがなかなかイメージできず悩みました。
例えば以下のようなCSVファイルからkintoneへデータを連携するような処理です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/43f27499-161e-461d-f794-f1706ca31d3d.png)

①はフォルダからファイルを**取得**するというものなのでコネクタ的には`Input`だとと考えたのですが、ここは`Output`になるようです。Outputタブを確認するとちゃんとログも出力されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/3ad5f48e-a548-d926-23f6-f0cf29e2aef7.png)
考え方としては`連携先の立場で考える`ということにしました。そうすると、フォルダの立場からいうと、ファイル出ていくので、`Output`となります。
同様に、②のkintoneへのデータ書き込みについても、kintone側から考えると、データが入ってくるので`Input`となります。ログを確認してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/ffbbc04e-27f4-75bc-3634-fd30c076c446.png)
`Input`タブにだけログが出力されています。
ところが、下図のようなArcESB内のデータを処理するコネクタは通常通り、処理の順番で考えてしまえばよいようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/190fe5a8-e439-4350-68db-86c03b8a9daa.png)
CSVを**取得**するので`Input`タブを確認し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/55fb694d-40e6-5660-8512-b0b2896fcee0.png)

XMLを**出力**するので`Output`タブを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/2abb80da-7dab-1f05-53d0-2c0432ebb128.png)

# ワークスペースの保存を忘れずに

処理作成にはコネクタの設定をよく行うのでこの変更はすぐに保存しますが、ワークスペースそのものを保存するということを忘れることがあります。コネクタの設定を変更し、テスト実行したときにうまく動作しない場合には、ワークスペースの保存を念の為確認してみてください。画面右下に小さく以下のようなアイコンがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35843/46d0b74c-38f8-561e-2ffe-532909b7c6bd.png)

# 最後に

使い慣れたらどうってことないことも最初は何がなんだかわかりません。
実際ここで書いてみると、なぜこんなことを悩んでいたんだろうかと思うのですが、同じように初めて触った方が少しでも迷わないようになればと思います。といってもまだまだ知らないことばかりなので、継続してメモを残していきたいと思います。