ノンコーディングでズンドコキヨシ with Microsoft Flow

この投稿は[TAKA-SHUひとりアドベントカレンダー](https://adventar.org/calendars/3668)7日目です。

すでにブームは過ぎ去っていますが、Microsoft Flowを使ってノンコーディングでズンドコキヨシしてみました。

ズンドコキヨシとは→[ズンドコキヨシまとめ](https://qiita.com/shunsugai@github/items/971a15461de29563bf90)
<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから<br>「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ！」って出力した後終了って関数作ったら満点で単位貰ってた</p>&mdash; てくも (@kumiromilk) <a href="https://twitter.com/kumiromilk/status/707437861881180160">March 9, 2016</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

# 全体図
![Flow-ZunDoko.png](https://qiita-image-store.s3.amazonaws.com/0/301095/8371cef6-b37f-1e82-7775-9d630ca5934c.png)

# 作り方

## 手動でフローをトリガーします
![Flow-ZunDoko01.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/97160e29-4d69-f99e-5703-d0d90edbd50d.png)
入力はなしでOKです。

## 変数を初期化する

3つ作ります。

* List:配列(初期値なし)
* Rand:整数(初期値なし)
* Temp:配列(初期値なし)
![Flow-ZunDoko02.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/7d84bfce-710b-0aa6-d295-19bf4971fab2.png)

![Flow-ZunDoko03.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/6019aaad-8584-98e2-a0d7-774bf1bdd1de.png)

![Flow-ZunDoko04.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/81c57741-846c-64b0-dad4-af6c53671167.png)

## Do Until

ズンズンズンズンドコが完成するまでループ
![Flow-ZunDoko05.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/385827af-aabd-8d59-635d-102a29fb66b0.png)
![Flow-ZunDoko06.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/98a738da-d52c-4c26-7231-64b2ed013036.png)
![Flow-ZunDoko07.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/b7bcd6fb-d481-0110-abe2-71ea1bb919a1.png)

Microsoft Flowでは無限ループを防ぐため、既定のループ回数が60回に設定されています。
[制限の変更]から適当に値を変更します。
とりあえず10倍の600回にしておきます。

参考：Microsoft Flow での制限事項と構成
https://docs.microsoft.com/ja-jp/flow/limits-and-config

### 条件

配列に5個入ってたら一番古いズン/ドコを削除
![Flow-ZunDoko08.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/1f5fcb53-af7b-8d9b-ebe0-02e656a34bed.png)
![Flow-ZunDoko09.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/14b9de4c-ca54-b838-cea1-12007da7930e.png)

#### はいの場合
##### 変数の設定
自己参照がエラーになるので、一旦Tempに入れます。
![Flow-ZunDoko10.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/73085dd6-1d3a-f04a-d78a-d83c543e837b.png)
skip関数で配列の1番目の値を削除したものをListに入れます。
![Flow-ZunDoko11.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/09010632-c29b-d62e-6fb1-ee6d3c4cdda8.png)

### 変数の設定
![Flow-ZunDoko12.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/f8d11ab4-b54e-d372-2d18-6256eff649d2.png)
Rand関数で0か1をランダムに出力

### 条件
![Flow-ZunDoko13.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/08e1adea-0d76-65cf-2230-ca61b87e8b28.png)
0だったらズン、1だったらドコ
![Flow-ZunDoko14.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/dc266c36-9819-3272-402a-29a4930e0c3a.png)


## Send me a mobile notification
![Flow-ZunDoko15.PNG](https://qiita-image-store.s3.amazonaws.com/0/301095/be93e918-9e24-c61e-64ee-6c68affb2886.png)
ズンズンズンズンドコが揃ったらキヨシ！とともにモバイルに通知

# 実行
<img width="375" alt="Flow-ZunDoko-Push.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/301095/0d60649f-6894-67a8-6b0a-d1046d283b34.jpeg">
モバイルアプリから実行
<img width="355" alt="Flow-ZunDoko-Notice.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/301095/59574dd4-f073-4944-2d08-d17d784cb760.jpeg">
きた！

# 最後に

途中にもある通り、Microsoft Flowは無限ループを防ぐために制限が設けられています。
制限に達してしまった場合はズンズンズンズンドコが揃ってなくてもDo Untilを抜けてしまいます。
本当にズンズンズンズンドコが揃ったときだけ通知したい、という場合には、Do Untilのあとに[条件]を追加すると良いと思います。