クラウドBOTで社内のWebデバイスをAPI公開する話

C-RISEの村井です。
実は、１年前にWeb API Advent Calendar 2020に記事投稿して依頼、２回目の執筆です。
「Web API Advent Calendar 2021」の12月24日が最終枠で残ってたので思わず参加予約しちゃいました。
※後述しますが、24日中に記事投稿が間に合いませんでした(涙)

ちなみに、１年前に書いた記事は「[クラウドBOTでブラウザ操作をWebAPI化する話](https://qiita.com/cr_murai/items/d3ff15be07b42487a7d4)」です。
興味の在る方は、ぜひ目を通してみて下さい。

今回は、昨年の時点ではできなかった**BOTの社内アクセスの機能**を使って、
**社内のWebデバイスをグローバルにAPI公開**する方法をご紹介したいと思います。
それでは早速、

# Cloud BOT Agent で社内アクセス
[クラウドBOT](https://www.c-bot.pro/)は株式会社C-RISEで提供しているクラウド型RPAです。
クラウドネイティブで、ノーコードで、無料から利用する事ができます。
簡単に特徴を上げると

* クラウド上の**仮想ブラウザ** (ヘッドレスブラウザ)を**自動操作するBOT**が作れる
* **操作を自動記録**し、**ノーコード**でBOTが作れる
* **Webブラウザのみ**で利用可能(スマホやタブレットのWebブラウザにも対応)
* 作成したBOTは自動的に**入出力が定義**される
* 作成したBOTは**REST API**として実行可能

といったサービスです。
良ければ[紹介動画](https://www.youtube.com/watch?v=dNHUzMrU4xo&feature=youtu.be)なんかも見てみて下さい。

上記の通り、クラウドBOTはロボットや、操作する仮想ブラウザも全てがクラウド上に存在する為、
必然的に、自動操作できる対象も公開Webサイトに限定される事となります。
しかし、**ロボットによって業務を自動化するRPA**というサービスである以上、
イントラ内や自社IPからのみアクセス可能なWeb環境に接続して自動化するのは必須の要件となります。

そこで[今年３月にリリース](https://prtimes.jp/main/html/rd/p/000000016.000049789.html)したのが「[Cloud BOT Agent](https://www.c-bot.pro/ja/agent)」です。
![Cloud BOT Agent](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/1b0448fe-426e-4529-a6ea-1ab4360e9ced.png "Cloud BOT Agent")
このアプリを社内に立ち上げておく事で、**クラウド上からAgentアプリ上のヘッドレスブラウザを自動操作**できるようになります。
自動操作する制御機能はクラウド上、操作対象のブラウザ機能は社内のCloud BOT Agentアプリ上で動作するという構成になります。
![Cloud BOT Agentの通信イメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/60ddd7c8-9f86-d34f-35f0-672ea14c46d3.png)
もちろん、こちらのアプリも無料で配布しています。

Agentの設定方法は、[マニュアル](https://docs.c-bot.pro/user_manual/?_ga=2.60433134.2125843523.1640277160-2039942131.1578457818)を参照頂ければと思いますが、インストール後は
* 使用言語（日本語）を選択
* Agentの管理パスワードを設定
* 設定したAgent管理パスワードでログイン
![agent_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/fbadcf74-a8c2-440a-062f-7e5bbe513fca.png)
そして、
* クラウドBOTアカウントのメールアドレスを入力して登録リクエスト
![アカウントへの登録リクエスト](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/38f99a17-950f-798b-4da5-74da0070355a.png)
を行うだけです。
後は全てクラウド上で操作可能です。
登録リスエストしたメールアドレスでクラウドBOTにログインし、リクエストを承認すると
**社内にアクセスできる新しい仮想ブラウザ**を作成できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/7de0a66a-0641-68ca-f47d-b71169191565.png)

クラウドサービスから社内へアクセスする為に専用のAgentアプリを利用する方式は他サービスでも見かけますが、
Cloud BOT Agentアプリの主な特徴は以下の通りです。
* **一つのAgentアプリを複数のアカウントで共用**できる
* **一つのアカウントから複数のAgentアプリ(複数の仮想ブラウザ)を利用**できる
* **複数のAgentアプリをクラスタ化**して**一つの仮想ブラウザ**として利用できる
* **Windows、Mac**のOSに対応している

他にも細かな機能は様々ありますが説明しだすとキリが無いので詳細は、[マニュアル](https://docs.c-bot.pro/user_manual/?_ga=2.60433134.2125843523.1640277160-2039942131.1578457818)をご参照下さい。

# 社内のWebデバイスにアクセスしてみる
さっそくAgentの仮想ブラウザを使ってみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/d116da20-eea9-ff71-c3c9-fbbc13e44f89.png)
BOT作成ボタンを押すと、どの仮想ブラウザを使用するか選択する事ができます。
プライベート欄に表示されているのがAgent上で動作する仮想ブラウザです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/1c5f00fa-9c89-5999-c59d-8c316854aef9.png)
プライベートの仮想ブラウザを選択しOKを押下すると、いつものBOTエディタ画面が立ち上がります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/81576423-e3d5-12b2-1ba8-6c3133877cf2.png)

仮想ブラウザがプライベートネットワーク内で起動しているか確認してみましょう。
URL欄にローカルデバイスであるプリンタのURLを入力してアクセスしてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/19132ecd-c896-acf3-8dfd-5292474afe03.png)

普通にブラウジングできます。
試しにログインしてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/911dff60-9440-4d0e-22eb-207c7b4f89d3.png)

プリンタ以外にも、ルータやネットワークストレージ、IPカメラ等、Webの設定画面があるWebデバイスであればクラウド経由でブラウジングできます。
もちろん、デバイスではなくオンプレミスのWeb型業務管理アプリ等もアクセス可能です。
簡単なWeb操作業務なら、社内Web環境に対する遠隔ブラウジング機能としてテレワークにも活用できます。

# 社内のWebデバイスに対するBOTを作成
Webアクセスが可能となれば、あとは「[昨年の記事](https://qiita.com/cr_murai/items/d3ff15be07b42487a7d4 "クラウドBOTでブラウザ操作をWebAPI化する話")」でご紹介した手順と同様にBOTを作成するだけです。

例えば、社内に設置したネットワークストレージ(QNAP)にアクセスし、左上のハンバーガーアイコンをクリックしてサイドメニューを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/0630e60b-bf5b-6e26-2e3a-d0dacd586470.png)
サイドメニュー内の「ブラウザ操作を記録する」ボタンを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/bf44bd0c-011b-d964-7a3c-6df88d9f7c58.png)
記録モードに切り替わりました。
同時に一番最初のタスク「アドレスに[値1]を入力」が記録されました。
※[値1]は、QNAPのURLを指しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/a288174d-d4f4-1238-c947-21c71077f0a2.png)
QNAPにログインしてイベント通知情報を取得し、ログアウトするまで一連の手順を記録してみました。
画面左側にずらっと操作タスクが並んでいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/d0548155-3bc4-b601-0e2f-a4cab7abfbab.png)

一連の操作記録を行った後、BOTの入出力定義を確認すると
* **入力値 ログインID、パスワード**
* **出力値 イベント内容、イベント日時**
といった定義が自動的にされてます。
(データ名称は適宜記録しながら変更しました)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/9dc68cb8-c6e3-a7f4-ddd6-5c4cb197918a.png)

# BOTを実行してみる
今作ったBOTを実行してみます。
入力値の**ログインID**と**パスワード**を入力して「実行」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/d5fafa50-8785-db6b-2a4d-ab8c5b15d50d.png)
自動操作で画面が自動的にパラパラと代わり、実行結果として
出力値の**イベント内容**と**イベント日時**が返されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/19c7af68-0565-edad-31da-1b484a238062.png)

# APIとして公開する
あとは、前回の記事と同様の手順でBOTをAPIとして公開します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/0c654c3d-4a8b-3f60-051d-4c8c95ba59bf.png)
公開するとエンドポイントが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/c99ec44a-4cd1-ad98-a757-d4807fa19ac0.png)
そして、そのままテストツールからAPIをテスト実行する事ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63595/aad746b2-716a-d72e-94d4-b9485bf34e56.png)

これで、今回作成した**APIを外部システムから呼び出し**たり、**iPaaSと連係できる**ようになりました。

# まとめ
今回ご紹介させて頂いたように、クラウドBOTでは**社内のWebデバイスに対する操作をノーコードでAPI化し簡単に公開**する事ができます。
もちろん、Webデバイスに限らず、自社の固定IPからしかアクセスできない業務システムや監視サーバ等へのWeb操作のAPI化も可能です。

ここまでの手順は**全て無料で利用する事が可能**なので、ぜひ年末年始にお時間があれば遊んでみて下さい。
クラウドBOTは、まだ開発途上です。
来年以降も、さらに便利な機能等を拡張していく予定です。

最後に本記事を書き終えた時点で12月25日0時26分になってしまいました。
予定日中に投稿が間に合わずすみませんでした。
また機会があれば記事を書いてみたいと思います。
ここまで読んで頂きありがとうございました。