多様な補助コンポーネント
HULFT Squareでは、スクリプト内の処理をより柔軟に記述するために、多様な補助系のコンポーネントを用意しています。
ここでは、その中でも使用頻度が高いコンポーネントを順を追って説明します。
以下のスクリプトを使用して説明します。

CSVファイルは、「CSVを加工するスクリプトを作ってみよう」と同じファイルを使用します。
事前に、ストレージの以下のパスにCSVファイルを用意してください。
「/Personal/data/inputdata.csv」
例外監視
例外監視とは、対象となる処理の例外を監視し、例外処理を行うコンポーネントです。
ここでは、CSVファイルの読み取りと書き込みの処理を実行して例外が発生した場合に、『エラーが発生しました。』というメッセージをメールで送信する方法を例に説明します。
例外監視の各項目の設定や注意事項についての詳細は、「例外監視処理」を参照してください。
例外監視の設定手順
-
デザイナーのツールパレットから「基本」-「フロー」-「例外監視」をスクリプトキャンバスにドラッグ&ドロップします。
-
例外監視処理をドラッグ&ドロップすると、以下のコンポーネントアイコンがスクリプトキャンバス上に配置されます。
-
例外監視開始
-
監視処理
-
例外処理
-
例外監視終了
-
-
監視対象の処理(CSVファイルの読み取りと書き込みの処理)を監視処理と例外監視終了の間に配置します。
-
例外が発生した時の処理(エラーをメールで送信する処理)を作成します。
デザイナーのツールパレットから「ネットワーク」-「メール」-「1通メール送信」をスクリプトキャンバスにドラッグ&ドロップします。
-
必須設定タブで、送信先メールアドレスの設定を行います。
-
メッセージタブの件名に「エラーが発生しました。」を入力します。
-
完了をクリックします。
-
1通メール送信処理を例外処理と例外監視終了の間に配置します。
-
CSVファイルの読み取り処理でエラーが発生するよう、一時的に「/Personal/data/inputdata.csv」をリネームします。
-
スクリプトを実行します。
-
スクリプト終了後、指定した送信先メールアドレスにメールが届いていることを確認します。
-
ログ確認後、手順8でリネームしたCSVファイルを「/Personal/data/inputdata.csv」に戻します。


新規1通メール送信処理ダイアログが表示されます。


条件分岐
条件分岐を設定することにより、ある条件に合致した場合に処理の内容を変更できます。
条件分岐の各項目の設定や注意事項についての詳細は、「条件分岐処理」を参照してください。
条件分岐の設定手順
-
デザイナーのツールパレットから「基本」-「フロー」-「条件分岐」をスクリプトキャンバスにドラッグ&ドロップします。
-
追加をクリックします。
条件一覧に条件「条件未設定」が追加されます。
-
「条件未設定」をダブルクリックします。
条件が「(クリックして編集)」になります。
-
条件の右のボタン▼をクリックし以下を設定します。
条件の種類:に、「変数と固定値の比較」を選択します。
変数「csv_write:count」が「次の値以上の場合」「1」と設定します。
-
完了を選択します。
-
「End」アイコンの前に条件分岐するように配置します。
-
デザイナーのツールパレットから「基本」-「フロー」-「end」をスクリプトキャンバスにドラッグ&ドロップします。
-
「condition」から「End」アイコンへフローを引きます。
-
「condition」に繋がっている「End」アイコンを選択し、プロパティインスペクタを表示します。
-
戻り値に、「1」を入力します。

新規条件ダイアログが表示されます。






「/Personal/data/outputdata.csv」にデータが書き込まれない場合は、スクリプトの戻り値が「0」になります。
データが書き込まれた場合は、スクリプトの戻り値が「1」になります。
Mapper
Mapperとは、専用のGUIツール(Mapperエディター)を使用し、あるコンポーネントで読み取ったデータを変換および加工して別のコンポーネントに書き込んだり、変数に代入したりできるコンポーネントです。
Mapperの種類
Mapperは、以下の3種類のコンポーネントを含む総称です。
-
ドキュメントMapper
(処理名:マッピング)
-
変数Mapper
(処理名:変数代入)
-
マージMapper
(処理名:マージ)
Mapperの機能
Mapperの主な機能は以下のとおりです。
-
演算/計算
-
文字の加工
-
条件抽出
-
ソート
-
コード変換
-
マージ
Mapperの設定手順
Mapperエディターの画面左右に表示された項目を線でつないで入出力のマッピングを指定します。また、マッピングの間にMapperロジックを挟むとロジックの機能に従って、さまざまな演算や加工を行うことができます。
ここでは、ドキュメントMapperを使用し、CSV読み取り処理で読み取ったデータを変換して書き込み処理を行うスクリプトを作成します。
-
デザイナーのツールパレットから「変換」-「基本」-「マッピング」をスクリプトキャンバスにドラッグ&ドロップします。
-
「csv_read」から「mapping」へプロセスフローとデータフローを引きます。
-
同様に「mapping」から「csv_write」へプロセスフローとデータフローを引きます。
-
「csv_write」をダブルクリックします。
CSVファイル書き込み処理のプロパティダイアログが表示されます。
-
追加をクリックし、列名入力フィールドをダブルクリックして「商品名」を入力します。
-
もう一度追加をクリックし、列名入力フィールドをダブルクリックして「数量」を入力します。
-
完了をクリックします。
CSVファイル書き込み処理のプロパティダイアログが閉じられます。
-
「mapping」アイコンをダブルクリックします。
Mapperエディターが表示されます。
-
左側の入力元コンポーネントのスキーマから、要素「商品名」をドラッグし、右側にある出力先コンポーネントのスキーマの要素「商品名」へドロップします。
-
デザイナーのツールパレットから「数値」-「基本」-「数値定数」をマッピングキャンバスにドラッグ&ドロップします。
-
配置した数値定数ロジックをダブルクリックします。
-
完了をクリックします。
-
同様にデザイナーのツールパレットから「数値」-「演算」-「足し算」をマッピングキャンバスにドラッグ&ドロップします。
-
完了をクリックします。
-
左側の入力元コンポーネントのスキーマから、要素「数量」をドラッグし、「足し算」へドロップします。
-
「数値定数」をドラッグし、「足し算」へドロップします。
-
「足し算」をドラッグし、右側にある出力先コンポーネントのスキーマの要素「数量」へドロップします。
-
スクリプトを保存します。
-
スクリプトを実行します。
-
ストレージから「Personal/data/outputdata.csv」を開き、書き込んだデータの内容(「Personal/data/inputdata.csv」の数量の値が加算されていること)を確認します。






要素「商品名」のデータは、変換せずに出力先へ渡します。
要素「数量」のデータは、入力元から読み取ったデータを変換して出力先に渡します。

数値定数ロジックダイアログが表示されます。
数値に「50」を、
コメントに「50を加算する」を入力します。



-
ドキュメントMapperの詳細については、「ドキュメントMapper/変数Mapper(基本)」を参照してください。
-
変数に保持された値の加工および変換を行うための変数Mapperの詳細については、「ドキュメントMapper/変数Mapper(基本)」を参照してください。
-
複数の入力データを統合するためのマージMapperの詳細については、「マージMapper(基本)」を参照してください。
Multi-Stream Converter (結合、集計、およびソート)
結合処理、集計処理、およびソート処理は、Mapperとは別に、専用のコンポーネントが用意されています。
テーブルモデル型に特化したこれらのコンポーネントは、Multi-Stream Converter(マルチストリームコンバーター)という変換処理に特化した高速エンジン上で動作し、大容量データを扱うことに長けています。特にマルチコアCPU上では、リソースを有効に活用して並列で処理し、(従来のMapperと比較して)高速かつ省メモリで動作します。
Multi-Stream Converterの特性は、並列処理をサポートするコンポーネントとの組み合わせにおいて、最大の効果を発揮します。
また、処理ごとに専用のUIが用意され、直感的に操作および設定できます。
それ以外には、以下の特徴があります。
-
結合処理
-
結合条件がSQLライクで理解しやすい。
-
1回の処理で2つのデータを結合する。
-
集計処理
-
テーブルモデル型のコンポーネントで使用できる。
-
入力データをグループ化して、多彩な集計関数を指定できる。
-
ソート処理
-
ソートキーの数に制限がない。
-
キーに以下を指定できる。
-
文字列
-
数値
-
日時
-
数値や日時を表す文字列
これらの特徴を理解し、適切に使用することで、ビッグデータやIoTなどで使われる大容量データに強いスクリプトを開発できます。
また、状況に応じて、Mapperを使用することも考えられます。以下に、Mapperの同等処理との使い分けを説明します。
結合処理に相当するMapperは以下です。
以下のケースではMapperを使用してください。
-
1回の処理で3つ以上のデータを結合したい場合
-
XML型のコンポーネントで結合したい場合
-
小さいデータの入出力マッピングを専用のGUIでグラフィカルに定義したい場合
XML型については「XML型 」を参照してください。
集計処理に相当するMapperは以下です。
以下のケースではMapperを使用してください。
-
XML型のコンポーネントで集計したい場合
-
Mapperロジックを組み合わせて集計したい場合
ソート処理に相当するMapperは以下です。
以下のケースではMapperを使用してください。
-
XML型のコンポーネントでソートしたい
-
Mapperロジックを組み合わせてソートしたい
-
文字列順で大文字/小文字の優先順位を指定してソートしたい