アドオンパッケージ（圧縮解凍モジュール）を使ってロボットを作ってみる

## はじめに

とあるサイトから１ヶ月分の実績ファイルをダウンロードして集計することになりました。一度きりの作業なので手動で始めたものの、

- ファイルサイズが大きくて１日単位でしかダウンロードできない。
- ファイルはZIP形式に圧縮されているので１ヶ月分解凍した上で集計する必要がある。
- ファイルはすべて同じファイル名で解凍されるので都度ファイル名を変更する必要がある。 

途中から面倒になりロボット化することにしました。

組織的にRPAを推進する場合には定義された業務を一連まるまる自動化しがちですが、単純に普段の作業で発生する業務の一部をロボットとして自分の端末から実行するというのも十分価値あることだと思っています。

それとBizRobo!はアプリ操作だけでなくファイル処理も得意でかつデバッグもバックグラウンド実行できるので、作ったロボットを自分のPCで動かしながら他の作業をすることができる点も気に入っています。

## ロボットの概要

今回は既に31日分のZIPファイルをダウンロードしたあとだったので、以下の手順をロボットで実装しました。
また、ファイルの解凍については [BizRobo! Portal](https://portal.bizrobo.com) に`補助ツール、モジュール` として公開されているアドオンパッケージの`圧縮解凍モジュール`を利用しました。

1. 実行パラメータ（回答するZIPファイルのパス）から解凍ファイルの出力先フォルダパスを生成し、フォルダを作成。（第一ブランチ）
1. 指定フォルダ内のファイルを読み込んで解凍（第二ブランチ）
1. 解凍したファイルの名称を変更して出力フォルダへ移動（第三ブランチ）  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/dc535df3-41b4-2daf-2df0-b9ce67f70921.png)

## アドオンの使い方

▼ まずはBizRobo! Portalの [該当ページ](https://portal.bizrobo.com/ja/%E8%A3%BD%E5%93%81/bizrobo%EF%BC%81-basic/%E8%A3%9C%E5%8A%A9%E3%83%84%E3%83%BC%E3%83%AB%E3%80%81%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AA%E3%81%A9) からモジュールをダウンロードします。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/6255ae4b-d7e6-643b-13c8-a2b984618de7.png)

▼ ダウンロードしたファイルを解凍すると以下一式のファイルが展開されます。
具体的な利用方法についてはREADME.txtに記載があるので、以降はざっとポイントのみ記載
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/4d1d6dfd-eb0a-2a99-0dfd-f5c803e10524.png)

▼ `Tools` フォルダ内の `ao_03` フォルダをBizRobo!のインストールフォルダ配下の `bin` 直下に移動します。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/257b96d1-7fbb-495e-e86f-32e485a53fe1.png)
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/89a48f00-b6dd-899d-34ae-60daa42dc1e6.png)

▼ `Library` フォルダ内のファイルを今回作成するロボットのプロジェクトフォルダに移動します。（Libraryフォルダごと移動してもOKです。）
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/24cf2bb7-50d4-42bd-f4c8-a6ca4d4e553a.png)

▼ ファイル移動後、`debug_7z.robot` をデザインスタジオから開いてみましょう。アドオン（スニペット）の使い方がわかるサンプルとして提供されているので、README.txtの指示に従ってデバッグモードで動かしてみましょう。（アドオンの設定に問題がある場合、この時点で気づくことができます。）
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/72cc82d5-c6b5-72e5-e5b8-f2bd911842ee.png)

▼ あとは、スニペットを自分の作りたいロボットのフローに組み込めばOKです。
　スニペットのステップをクリックすれば、より具体的な使用方法がProperties欄に表示されます。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/90631c7d-0625-679a-ca63-27a6cb1f8ca1.png)


## アドオンの Pros & Cons
### Pros
- 既に作り込まれたロボットの部品をそのまま利用できるので便利
- スニペットとして汎用的に作られているため、中身を見ることで今後汎用処理や共通部品を作る時の参考になる。
- 余り知られていないが実はアドオンは10個ぐらい登録されていて、その他にも使えそうなツールがたくさんあって放っておくのは勿体ない（かも）。

### Cons
- アドオンの実行ファイルを個別に配置する必要があるということは、RoboServerで動かす際にはサーバにも個別に配置する必要があることに加え新しいバージョンをインストールした場合にも同様に再セットが必要になる点は面倒。
<details><summary>補足</summary><div>
v11.1以降は `Connector` という機能が製品自体に付加されているので、おそらく今後は同様の拡張機能は `Connector` として提供されるのでは？という予想。そうなれば Management Console 上で一元管理されるのでGOOD
</div></details>
- 最新の `Connector` も同様ですが、アドオンやその他のツールについてもほぼプロモーションがされておらず知られていない。（利用実績が不明）


## その他 Tips

タイプ内の変数に対して表示/非表示設定をすることで、利用者側には見えない内部処理専用の変数を定義することができます。純粋にロボットの処理内でのみ利用されるテンポラリー変数などは非表示にしておくと見た目もスッキリするかもしれません。（デバッグするときには再表示しておかないと設定される値が確認できないので注意ですが）

例えば今回作ったロボットには「Zipファイルが配置されるフォルダのパス」をパラメータとしてロボット実行時に渡していますが、ロボット内部の処理としてそのパラメータ値から「解凍後ファイルの出力フォルダパス」を自動算出しています。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/0f4c2a96-b1c4-3757-cd34-97311ecec771.png)

自動算出した値は後の処理で使うためにどこかに保持しておく必要がありますが、独立してその値を保持する変数を作るのが嫌だったので、表面上は見えない値として以下のように定義しました。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/05d2445e-2a14-a3a6-1d90-2090886affde.png)
下記の `Visible` 属性のチェックをOFFにすることで表面上見えなくなります。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/a670b650-b269-2da9-0823-b22ee80d24a8.png)


## まとめ

久しぶりにロボットを作る機会があったのでまとめてみました。
既にv11.1というバージョンも使えるようなので、`Connector` についても試してみようかなと思っています。