業務効率化のイロハ（RPA編）

12月3日、イチ・ニ・サンですね。日本語ならばイロハだろう、ということで今回はRPAを使うにあたってのイロハについて書いておこうと思います。

# RPAとは
RPAというのはRobotic Process Automationの略ってことで、要は自動化するよ、ということですよね。
なにかを行うにあたっての繰り返し操作とか大変な作業とかを機械の力で解決しようというコンセプトだと思います。
エンジニアは効率化とか自動化あっての職業だと思いますし、積極的に活用してみると良いのかもしれません。

# ざっくりできること
大抵のRPAは、なにかしらのトリガーが引かれたらなにかしらの作業を行うようになっています。
トリガーは、たとえば「時間」だったり、「イベント」（データが変わった）だったり、「アクション」（ボタンが押された）だったりします。
どんな作業ができるのか、というところがRPAの差別化にもつながっているところで、基本的にコンピューターで行えることはできるような感じになっています。　

# 具体的にやっていること
私が設定している・設定していたことは以下のようなものです。

## Microsoft Power Automate
* 某クラウドサービスからの通知が来たらSlackに送信する
* 某クラウドサービスからの通知が来たらTeamsに送信する
* 週次でTeamsにスレッドを立てる（週次報告用）
* OneDriveにファイルが置かれたらTeamsに転送する

## Microsoft Power Automate Desktop
* VPNに接続する
* 毎日Webページチェックする（変更が無ければ自動で閉じる）
* ログインに3要素必要なページ（ID、パスワード、企業コード）にアクセスする

## Coopel
* 毎日某クラウドサービスにログインしてファイルをダウンロードする
* 定期的に某クラウドサービスにログインしてボタンを実行する
* 定期的に某クラウドサービスにアクセスして変更を確認する（画面キャプチャして保管）
* Playwrightとかを利用してコードを組めばできるとは思いますが、マウス操作でそこそこ実現できてしまうのが便利ですね。

# 使ってみよう
イロハということで、実際に使ってみましょう。
企業だとMicrosoft Office365を利用しているところも多いと思うので、　
まずはPower Automateを使ってみましょう。　
OneDriveからTeamsにファイルを送るというのをやってみます。　
実際には、OneDriveもTeamsもベースはSharePointですし、普通に作業している分には困らない作業なんですけどね。

というところで Power Automateの画面に入ってみます。
https://make.powerautomate.com/

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/69390078-880a-3f07-1ee4-0f3cac24bdc9.png" />

そこでなにかしらのトリガーを指定することになります。

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/e8e80b0a-570b-2cab-b659-7a00ee81a971.png" />

とりあえず「自動化したクラウド フロー」を選択すればフロー名やトリガーが選択できます。
トリガーの検索欄に受け取りたいサービス、今回は「onedrive」を入力してみます。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/630f7e25-93c0-62a9-3bd1-44af05d2346b.png" />

私の場合は「OneDrive for Business」で、「ファイルが作成されたとき」があったのでこれを使ってみます。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/d68b6774-88a2-a5f2-2fdc-3029d02cdc2c.png" />

で、ログインできてしまえば、自分のOneDriveのフォルダ指定が出来るようになってます。
認証やらフォルダ一覧の取得やらはサービス側でやってくれるわけです。便利ですね。

あとは、「新しいステップ」をクリックして、今度はTeamsを検索するだけ・・・・なのですが、

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/029442b3-cd41-f821-4c21-3965a67c001d.png" />

Teamsのアクションには、文字通りチーム関連のアクションしか用意されていないことに気づきます。

ここでふと、「**TeamsもSharePointベースだったな。SharePointを探すか**」と思い付き（複線回収）、「SharePoint」で検索します。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/78cb5499-3fdb-bb21-f389-0ba6c8854d06.png" />

なんかそれっぽいものがありました。
「ファイルの作成」アクションを見てみると、
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/e7d396ea-de5f-a825-18d5-dffd7d9525f3.png" />
「サイトのアドレス」にTeamsのチャンネルが出てました！

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/60db4e19-abac-dedd-1d6e-a51c9c21ed38.png" />

フォルダー名は、「なんとなくこの辺にあるだろう」ってところで掘り下げてみたら「Shared Documents」フォルダがTeamsの「ファイル」タブの保管先っぽかったのでそこを指定。
ファイル名やファイルコンテンツは、OneDriveのイベントから受け取ったものをそのまま渡します。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/336d98b5-d055-aeb4-477c-eb6a88c2b9e6.png" />

あとは「テスト」ですね。
テストしてね、と書いてあるのですが、テストをするというのは本番実行と同じことをやります。
なので、仮実行をしたいというのでしたらアクションは「動いてもいい」ところまでにし、
「動かれたら困る」ものの手前で「終了」アクションとかを入れておくと便利かもしれません。

<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/da4d7738-519e-7c37-2694-94f66882205d.png" />

テストは、右上にあり、初回は「手動」しかできませんが、
2回目以降は「前に実行したもの」を利用できます。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/b9a0ff83-e98f-1d5b-1f6b-b8ed80b4da89.png" />

イベントが変わらないのであれば、以前のものを再利用できる。
ちょっとだけ開発スピードが上がりますね。便利です。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1553291/c3a3c684-0256-81b4-f702-66c95b9f6adc.png" />

という感じで、自動化を作っていけます。

結局ローコード・ノーコードとか言っても、システムの知識とか設定の勘所とかは必要になってくるんですよね。

個人的にはいろいろと設定ノウハウは溜まっているので、これを機に書き留めていけたらいいなと思います。

自分たちの知識を活用して業務効率化する一助になれば幸いです！