Else Ifアクティビティを使ってみた！

##はじめに

この記事はUiPath AdventCalender18日目の記事です。もっとも～っとみんなで盛り上がりましょう！！！
https://qiita.com/advent-calendar/2021/uipath


##注意事項
今回の解説で使用するのはCommunity Licence(コミュニティ版)です。
またUiPathのバージョンは2021.10.4で説明しています。


##突然ですが...
皆さんは「Else If」アクティビティをご存じでしょうか？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/1d2fadd1-8449-e4e8-41a0-239bde4b7134.png)

2021.10版からの登場ですが、まだまだ知らない人も多そうです。
認知度はこれからというところでしょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/dfac359a-46c0-1805-0112-7ec848241fa0.png)
(日本語版でも英語版でも「Else If」アクティビティで検索すると出てきますが、UiPathの公式アクティビティガイドは<b>"条件分岐(複数分岐)"</b>とありますね。)

今回はこのアクティビティの使い方を学びましょう。

##Else Ifとは

プログラミング言語を学んだ方はおおむねご存じであると思いますが、いわゆる
<b>「IF分の中で、その条件が"False"になった時に処理を行う」</b>
というものです。

...「意味わかんない」
と某アニメのキャラクターが言いそうな感じなので、他の言語で試してみましょう。


##プログラミング言語を学べば大体出てくる
今回はPythonの例を出してみましょう。
※以下Google Colaboratoryで記述したものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/e4e4fba8-9453-5171-c3f0-735a6d35c0c6.png)


上記の例では、変数salaryが800、salary_avgが1000となっています。
PythonではIf文を記述すると、上記のように書くことができます。
ちなみに上記で実行すると「頑張ります」というelse側の文が登場します。(800は1000以下なので真偽だと"偽"になりますからね)

では、"Else"という文面を使うとどういう感じになるのでしょうか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/2fefe7c4-fdb0-9f57-7772-e46037aa6487.png)
条件が1つ増えていますが、elifの条件に当てはまったので「この年収を超えていません」という結果が返ってきます。
(800の数字は1000以下、500以上ですものね。500<=800<=1000)
PythonではElse IFは「elif」と記述しますが、それではUiPathでアクティビティを使うにはどういう感じになるのでしょうか。

##UiPathでの使い方
まずはIFでやってみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/8a29de52-b4d2-b9f3-a9f5-d892cba09941.png)

実行すると結果は「そうだよ」になりますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/1b945b88-c175-5954-160e-0c4097f997f3.png)

なにか気づきませんか？
そう、横幅がとにかく広がる。でかい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/fe5c59b9-32c9-3d3a-71c7-da044d30ef4a.png)

これは広げて閉じる手間も面倒だし、ストレスになる人もいたのではと思います。
ではElse ifを使ってみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/32002be3-fa87-2c23-a0a3-451aedcaae99.png)

結果はどうでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/c246bc8f-5132-7785-6bd9-3a83015a8011.png)
先ほどと同じ「そうだよ」が出ましたね。OKですね。

###ちなみに
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/cb61bafa-90cd-eee4-ad57-a3dbaa86e02b.png)
↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/115600fe-61cb-b86f-3b00-b9e9f3177bc2.png)

Else Ifアクティビティの左下側にある「Add Else or Else If」というボタンを押すと、ElseかElse Ifを追加できます。
【Elseを追加した場合】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/4063befa-f404-3904-e7f7-f1291a5eb1f6.png)
【Else Ifを追加した場合】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502614/d30b32ad-8767-48a0-0013-65e57dc1baf9.png)

##メリット
<b>ネスト(入れ子)になりづらくなる=可視性向上<b/>

誰でも「複数の条件式」というのは読み手も読みづらいし、開発者も実装やテストとか面倒になるしわかりづらいしで余程自信があるよって人以外はしんどいですよね。
(いや、最初っから入れ子にならないように設計するべきじゃね？っていうのはわかりますが...ここは置いといて)
Else IFアクティビティを使えばさらに条件式の自由度も上がると思います。
またElse Ifアクティビティを使えば縦に伸びるようになるので、横幅が広がりすぎなくなることもポイントです。

##デメリット
<b>慣れないと難しい？<b/>

プログラミング言語をあまり経験していない方にとっては最初は「？」って感じになって戸惑うと思います。
徐々に慣れていきましょう。
Else Ifは便利だけど多用しすぎないようにしましょう。(混乱のもとになるのでほどほどに使いましょう)

<b>古いバージョンでは使用できない<b/>

このアクティビティは2021.10版以降であれば使用できるのですが、2020以前のバージョンは使用できないようです。(2020.10版で探したけど出てこなかった)
出てきたという方、情報をください。

##まとめ
Else Ifの操作は他のRPAツールには確かあったのですが、なんでUiPathにはないのかなって思っていました。
もし使用できる環境がある方はぜひ活用してみてくださいね。

##参考URL
UiPathアクティビティガイド「条件分岐(複数分岐)」
https://docs.uipath.com/activities/lang-ja/docs/else-if
UiPath MVP みやぎさんのツイート
https://twitter.com/miya_gis/status/1446660733463248899