ASTERIAマッパーサンプル１

##マッパー関数の使い方が分からない！
筆者自身も初心者なのですが、とにかくサンプルが少ない。困った。
もう少し具体的に言えば「文字列」や「数値」、「日付」くらいはまぁまぁ初見やヘルプ、プロパティを少しいじれば何となくイメージはつくものの、「論理」や「制御」あたりになると、もう初心者は「具体的にどう使うの？」というところに困ってしまうのです。（「少なくとも筆者は困りましたので「地球上で少なくとも一人以上は困った」という命題は真であります。）
**文字列**
![0001_文字列.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522027/759bfcac-c920-92f5-292a-e82acc3416c4.png)
**数値**
![0002_数値.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522027/f3b48fd4-0162-d4da-15d2-f8069fe9d8be.png)
**日付**
![0003_日付.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522027/c1938452-2d73-1cad-3d13-6f49befce18c.png)
**論理**
![0004_論理.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522027/6bfa1819-2758-8559-602e-c92c5510c81a.png)
**制御**
![0005_制御.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522027/2c37b9da-2e8d-fd32-9b81-1baf960c06c5.png)
ということで「使い方が想像できないマッパー関数の使い方を身に着けるために」超簡単ではありますが、サンプルを日ごろ作ってみたりしています。
######ちなみに
このような実験をするときは以下のようなマスタを作っておくと便利です。
![0010_サンプルマスタ（全体）.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522027/f1a3b361-460b-6102-93ee-ccf7c1996c0c.jpeg)
また、フロー変数は以下のようにしています。

| 変数名 | データ型 | 初期値 | 公開 | 変更 | 説明 |
|:-------|:---------|:-------|:-----|:-----|:-----|
|Str1|String||false|true||
|Str2|String||false|true||
|Str3|String||false|true||
|Str4|String||false|true||
|Str5|String||false|true||
|Int1|Integer||false|true||
|Int2|Integer||false|true||
|Int3|Integer||false|true||
|Int4|Integer||false|true||
|Int5|Integer||false|true||
|Doub1|Double||false|true||
|Doub2|Double||false|true||
|Doub3|Double||false|true||
|Doub4|Double||false|true||
|Doub5|Double||false|true||
|Dec1|Decimal||false|true||
|Dec2|Decimal||false|true||
|Dec3|Decimal||false|true||
|Dec4|Decimal||false|true||
|Dec5|Decimal||false|true||
|Bool1|Boolean|false|false|true||
|Bool2|Boolean|false|false|true||
|Bool3|Boolean|false|false|true||
|Bool4|Boolean|false|false|true||
|Bool5|Boolean|false|false|true||
|DateTime1|DateTime||false|true||
|DateTime2|DateTime||false|true||
|DateTime3|DateTime||false|true||
|DateTime4|DateTime||false|true||
|DateTime5|DateTime||false|true||
|Bin1|Binary||false|true||
|Bin2|Binary||false|true||
|Bin3|Binary||false|true||
|Bin4|Binary||false|true||
|Bin5|Binary||false|true||

このフローを複製してサンプル（実験）をしています。
※Boolは初期値を用意しなかったのですが、指定しないとデフォルトでfalseになるようです。

##本題：「else if」を作ってみた。
「SelectIndex」のヘルプに依れば「Choice」と組み合わせてできるらしい。
使用したマッパー関数

 - Equal
 - SelectIndex
 - Choice

####フロー
非常にシンプルです。
![0030_マッパー関数サンプル（else if）.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522027/0097976a-acfb-31b7-7b83-e036b53008c2.png)

####マッパーの中身
※解説が見にくかったのでグリッドを消しました。
　消し方は[こちら](https://qiita.com/kumamura_kanata/items/e980a73bf8a312294adb "ASTERIA意外と便利なTIPS")。
こちら。（宣伝）
![0050_Map1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522027/75d0b4b8-6f14-6034-df7c-31c181dc745d.png)


ちなみにフロー変数は下のようになっています。

| 変数名 | データ型 | 初期値 | 公開 | 変更 | 説明 |
|:-------|:---------|:-------|:-----|:-----|:-----|
|Str1|String|aaa|false|true||
|Str2|String|bbb|false|true||
|Str3|String|ccc|false|true||
|Str4|String|aaa|false|true||
|Str5|String|ddd|false|true||
|Int1|Integer|1|false|true||
|Int2|Integer|2|false|true||
|Int3|Integer|3|false|true||
|Int4|Integer|4|false|true||
|Int5|Integer|5|false|true||

※必要なものだけ記載しました。

####処理の流れ
1. 最初の「(Str1 == Str2)?」を判定。一致ならtrue、不一致ならfalseがSelectIndexに流れます。<font color="red">**（SelectIndexにとっては「(Str1 == Str2)?」が「入力１」）**</font>
2. もしtureがSelectIndexに流れたらSelectIndexはChoiceに「1」（入力１）を流します。Choiceはベースが１なので<font color="red">**Choiceにとっての「入力2」**</font>（入力1はSelectIndexから流れてくる数値を判断するために使っているので）である「Int1」の値がObjectに流れます。
3. 最初の「(Str1 == Str2)?」が不一致でfalseなら次の「(Str1 == Str3)?」が判定されます。
4. 以上を繰り返します。
5. 最後の判定「(Str1 == Str5)?」も（つまり全ての判定が）falseならば<font color="red">**SelectIndexの入力数「4つ」に+1をした「5」がChoiceに流れます。**</font>
6. SelectIndexから「5」がChoiceに流れた場合は<font color="red">**Choiceにとっての「入力6」である「Int5」の値**</font>がObjectに流れます。

##最後に
「やはりASTERIAは初学者のためのサンプルが少ない！」と思うわけですが、「開発経験ゼロでもまぁまぁ三ヶ月くらいで[このくらい](https://qiita.com/kumamura_kanata/items/3918df50767d0f113d9a"ASTERIAでSQL文自動生成に挑戦")はできる」ので、すごいなあ、とも思うわけです。

もっともっとこんな簡単でコンポーネントや関数あなるよ～という情報あったら是非教えてください。
ご清覧ありがとうございました。