ファイルを連携してみた:複数ファイルの連携 ~菊ちゃんのASTERIA Warp体験記~

こんにちは。インフォテリアのキクチです。
そろそろ花粉の季節になってきたようですが、みなさん対策はされてますか?
季節の変わり目にもなってくるので、体調を崩されないように気をつけてくださいね。私自身はまったく花粉症ではないので、大変さは分からないのですが…(汗)

さて、今回のASTERIA Warp体験記では前回行ったファイル連携を少し発展させてみました。複数のファイル連携を体験しています。

この辺りの要件は業務上必須になってくる場合も多いと思うので、何かしらのヒントになればいいなと思いながら今回も頑張っていきます。

「複数ファイル」とつないでみた

それでは早速、ASTERIA Warp体験記、ファイル連携編その2を始めてみたいと思います!
前回はファイル連携の基礎的な部分を体験しました。

今回はもう少し実践的に複数のファイルの連携を体験していきます。
単一のファイルを読み込んで出力する、単純な連携は無事に行えました。
じゃあ、複数のファイルを連携させたい場合にはどんな手順で行っていけばいいんでしょう…?

前回のフローを元に「複製」を選択

前回のフローを元にして複数のファイルの連携を行ってみたいと思います。

まずは、フローデザイナーの立ち上げです。

前回作成したフローを元にしたいと思いますので、前回のフロー(ファイルを連携する1)を右クリックで表示されるメニュー「複製」を選択します。

右クリックで表示されるメニュー「複製」を選択

ちなみに、同じように表示される右クリックメニュー「コピー」では別プロジェクトへもフローをコピーできるようです。

「フロー管理」フローをコピーする
「フローサービス マニュアル」_「フローデザイナー」_「フロー管理」_「フローをコピーする」をご参照ください。

新しいフロー名を入力すると…

「フローを連携する2」を作成

新しいフロー「フローを連携する2」が作成されました。こちらをいじっていきたいと思います。

新しいフロー「フローを連携する2」が作成される

今回はよくあるASTERIA Warpの使い方を想定してみます

例えば、

  1. 店舗ごとの売上情報が記載されたCSVファイルがあるフォルダに保存されている
  2. 保存されたファイルは別システムでも使用されるため、一定時間ごとに別フォルダにも連携する必要がある

みたいな場合にASTERIA Warpでどう実現するのかを考えてみます。

ひとまず、簡素化のために売上情報ファイル2つを別フォルダに配置してみたいと思います。

「売上情報」ファイルを連携ファイルとして配置

プログラム的に考えてみると…

  1. 読み込みファイルパスの取得
  2. 1で取得したファイルパスでファイルオープン
  3. ファイルデータ読み込み
  4. ファイルクローズ
  5. 1~4 を連携するファイル数分繰り返す
  6. 出力ファイルパスの取得
  7. 5で取得したファイルパスでファイルオープン
  8. 3で取得したファイルデータを書き込み
  9. ファイルクローズ
  10. 6~9 を保存するファイル数分繰り返す

というような流れになるんじゃないでしょうか。

ファイルパスについては、別途設定ファイルなどに記載してある情報を読み取るのなど、あらかじめ設定しておく必要がありそうですし、一つ一つのファイルのオープンクローズにも気を使いそうです…

ASTERIA Warpではどうやってフローに表現するのかなー、簡単だといいなぁ~

まずは自分なりにフローを作ってみました。

初めに作成したフロー図。悪い例

ものすごくダサいですが、単純にファイル2つの読み込みなので、フローの流れを2つ作ってしまえばファイルの連携自体は成功しました。

悪い例で正常に作成されたCSV

きっと、もっとスマートに出来るはず…

ただ、これだとファイルの数が増えたときにファイル数分設定を行わなければならないので非常に面倒ですよね。

きっと、もっとスマートに出来るはずだと思い、Hさんに見てもらいました。

キクチ「Hさん、複数ファイルの連携についてなんですけど、このフローを見てもらってもいいですか?」
Hさん「もちろん!………何、このものすごくダサくて手間のかかるフローは…」
キクチ「ですよね…。ファイルの取得とか出力をもっとスマートにしたいんですけど…(汗)」
Hさん「なるほど、そういうことねー。それならFileGetコンポーネントでループさせてあげれば出来るんじゃないかな」
キクチ「ループ!確かに!でもそれだと、ファイルパスの指定とかどうしてあげればいいんですかね?繰り返しの度に動的に変えてあげないと…」
Hさん「ファイルパスにはワイルドカードが指定できるから、それで取得することが出来るんじゃない?」
キクチ「ワイルドカード使えるんですね!それならいちいち絶対パスで指定しなくても取得できますね。」
Hさん「出力ファイルパスもマッパーの中で決められるからそれで出来るんじゃないかな。」
キクチ「はい!ありがとうございます。」

「ループ」と「ワイルドカード」指定

ループとファイルパスのワイルドカード指定、この二つがあれば出来そうな気がしてきました。
早速フローを作り直してみます。
こんな感じになりました。

修正したフロー図

一見、前回作成したフローと同じように見えますが、FileGetコンポーネントのプロパティでループを指定しています。
また、ファイルパスのプロパティにもワイルドカードを指定してみました。

FileGetプロパティで「ループ」を指定

「ループを開始」プロパティを「はい」に指定すると、FileGetコンポーネントの出力ストリームの表示も少し変わるみたいです。

FileGetコンポーネントの出力ストリーム表示

ていうか、ワイルドカードが使えることもリファレンスにはしっかり記載があるんですね…
「コンポーネント」_「ファイル」_「FileGet」

使うコンポーネントを決めたら、まずはリファレンスを確認することを心に決めました(汗)

どうやら、FileGetコンポーネントのループでは1ファイルずつをストリームとして読み込んでくれるようです。

それに、出力ストリーム変数で「FileName」を持っているので、今回は読み込んだファイル名をそのままユーザーのホームディレクトリに出力してみたいと思います。

具体的にはマッパー画面でこんな風にマッピングしてあげます。

マッパー画面

するとFilePutコンポーネントのファイルパスプロパティには

FileName(ストリームFileGet/ストリーム変数/FineName)

こんな感じで表示されます。

で、実行してみると…

実行画面

見事成功しました!
ユーザーのホームディレクトリにも…

ユーザーのホームディレクトリに書き出された複数のファイル

読み込んだ複数のファイルが作成されています。

作成されたファイルを見てみると…

作成されたCSVファイルを開く

中身もきちんと出力されているのが確認できます。(当たり前ですね…(汗))

複数ファイルの読み込みを考えたとき、プログラムだとループ回数の指定、ループ内で行う処理の記述などステップ数が多くなりがちですが、ASTERIAだとプロパティ2つを変更するだけで処理が完結できてしまいました。なんともお手軽だなぁ~

次は今作成したフローを一定時間ごとに実行するスケジュールの設定です。作成したフローの呼び出し方を決める「実行設定」

まずはマニュアルを参照してみます。

「フローデザイナー」_「トリガー管理」_「実行設定」

ツールバーの雷マークから設定を出来るようです。

ツールバーの雷マーク

クリックして進めてみます。
今回は一定時間ごとに起動する設定にしたいので「間隔」の設定を行います。

実行間隔の設定

起動するフローや、実行間隔の設定をして、「登録」ボタンを押下すると…

起動するフローや、実行間隔の設定をして、「登録」

新しい実行設定が追加されています。

追加された新しい実行設定

実行設定もなんともお手軽ですね。
こうしておくことでフローサービスが起動されている間は設定された間隔に沿ってフローが実行されるようです。

最後に

と、いうことで今回はここまでにしたいと思います。
どうでしょう。ASTERIA Warpでファイル連携、すごく簡単な気がしてきたんじゃないですか?

さて、次回についてですが、実運用を考えたとき、大きなファイルでもメモリがパンクしないように考えておきたいですよね。

そんなわけで、ビッグサイズのファイルでもタイムアウト、メモリ制限に引っかからないようなフローの作成に挑戦してみたいと思います。
次回もお楽しみに!



クラウド版

手ぶら de ASTERIA Warp
体験 5日間を申し込んで
簡単データ連携を体験してみよう!

サーバー準備の手間なくデータ連携ツール「ASTERIA Warp」の
全ての機能を5日間お試しいただけます。

今すぐ体験してみる 書籍の詳細についてはこちらをご覧ください。
基礎と実践 使い方マニュアル
著者:菊地 雄大

著者:
菊地 雄大

ASTERIA Warpのプリセールスエンジニア&体験セミナー講師。関係各所から舞い込んでくるASTERIA Warpに関するご依頼になんとか応えながら日々鍛えてもらっています!

「ASTERIA Warp、データ分析、クラウド、業務効率化、最新技術」人気!ホワイトペーパーダウンロード受付中!今すぐチェック
ASTERIA Warpと色々つないでみた特集!記事はこちら>

ASTERIA Warp 関連サイトのご紹介

X ASTERIA Warp Developer Network(ADN)サイト

技術情報をお探しの方

ASTERIA Warp Developer Network
(ADN)サイト

ASTERIA Warp製品の技術情報やTips、また情報交換の場として「ADNフォーラム」をご用意しています。

X ASTERIA Warpユーザーグループ(AUG)

ASTERIA Warpデベロッパーの方

ASTERIA Warp オンラインコミュニティ
ADN slack

ASTERIA Warpデベロッパー同士をつなげ、技術情報の共有やちょっとしたASTERIA Warpの疑問解決の場とすることを目的としたコミュニティです。

X ASTERIA Warpユーザーサイト

ASTERIA Warpユーザーの方

ASTERIA Warpユーザーサイト
Login

製品更新版や評価版のダウンロード、各種ドキュメントのご提供、また 技術的なお問合せもこちらで受付ています。

X ASTERIA Warpパートナーサイト

ASTERIA Warpパートナーの方

ASTERIA Warpパートナーサイト
Login

パートナーライセンスの発行や各種ドキュメントのご提供をしています。

ページ先頭へ