BizRobo!の運用を円滑にするためのロボットタグ活用のすゝめ

## はじめに

皆さん会社で運用しているロボットについて「それらがちゃんと動いているか。」という観点での監視は日々されていると思いますが、「どのようなロボットが登録されていて、それらがちゃんとメンテナンスされているか」という視点での管理はどのようにされているでしょうか。

「何をどの程度」については各社の方針に拠るでしょう。
弊社は少し前まで業務部門がぞれぞれ運用・開発を行う `現場開発型` [^1] でBizRobo!を利用しており、活用の全体を全社にフィードバックする役割を持ちませんでした。各現場で生み出されたナレッジがそのまま現場に埋もれてしまっているのは、藍屋の白袴などといえばちょっとカッコ良さげですが、サービス提供会社としては情けないものもあります。

今期からは基盤・運用セクションの立ち上げに伴い `ハイブリット開発型` への移行を進めていますが、業務部門で開発したロボットの保守は開発部署にお願いするとしても、それらが動作する環境を管理運用している立場からすると、まったく無関心でいるわけにもいきません。

サーバをメンテナンスするとき、何らかの変更を組み込むとき、影響範囲の絞り込みや注意の向け方などブラックボックスを放置することも不安ですし、業務部門は主業務の傍らでロボットの開発・保守をしているので推進部門である基盤・運用チームとしては何等かの働き掛けが必要でしょう。

まずは最小の努力で効率よく現状を把握するための手段として、ロボットタグの活用について紹介したいと思います。
![Shutterstock_1027966777.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/5fba4850-d0b7-005e-296e-35724db31813.png)

## ロボットタグとは

ロボットタグはBizRobo! v10.7から導入された機能で、マニュアルを検索すると

> **ロボット タグ**
> ロボット用に 1 つ以上のタグを作成します。タグは、Management Console の [リポジトリ] > [ロボット] ページにある [タグ] 列に表示されます。タグを使用して、Management Console にあるロボットのリストをフィルタリングできます。タグには文字、数字、および下線を含めることができます。タグには 255 文字を使用できます。255 文字以上の文字を入力すると、最初の 255 文字のみが保存されます。

といった記述が見つかります。
というか、それ以外の記述はほぼ見つかりません。
自ら探索していかないと見落としがちな機能で、かなり認知度は低めな気がします。。。:spy_tone3:
もったいない。

要は `ロボット（ファイル内）にタグを付けて、Management Console から タグによる検索ができるようにする` もので、とても地味な機能です。

## ロボットタグの使いどころ

使いどころは様々にあると思いますが、いくつか例を挙げどんなケースで有効なのかについて考えてみようと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/b140f5cc-804e-c412-9079-3d8149d54475.png)

### Case#1 アプリケーショングループの分類

`Kintone` `Salesforce` `SAP` `Citrix` など、ロボットが操作している対向システムの名称をタグ付けします。
- 対向システム（特にSaaS）が定期メンテナンスで一時不通になったり、バージョンアップなどでUIが変更になる際など、その影響を受けるロボットの一覧を事前に抽出し、影響範囲を見積もることができます。
- 会社で利用しているシステムをどの程度のロボットが操作しているかをリスト化でき、特にオンプレで運用しているシステムに対してはどの程度ロボットによる負荷がかかっているのかを把握できます。
- 部門個別で導入している隠れたシステム（シャドウIT）がロボット化を機に見つかったりします。

### Case#2 ロボット実行トリガーの分類

`Kapplets` `Email` `Attended` `JP1` `BPMS` `Catalyst` `REST` など、Management Console 内部のスケジューラ以外のインターフェイス（IF）からロボットが実行されるトリガーをタグ付けします。
- Management Console や RoboServer などサーバをメンテナンスする際、通常の計画メンテナンスであればロボットが動いていない時間帯に作業を行ったり、スケジュール情報からその時間帯を事前通知することが可能ですが、緊急メンテナンスによりサーバの再起動やシステムの一時停止が必要となった場合に、外部のトリガーによりオンデマンドで実行されるロボットがどの程度存在するのか、またそれらのロボットがどのプロジェクト・部署の管理下に所属しているかを事前に把握していることにより、ピンポイントで迅速な対応をすることができます。
- また `REST` など、一部のロボットをAPIとして実行する仕組みの場合、ロボットファイルの命名に制約が発生するため、影響範囲を把握するために重要です。[^5]

[^5]: `REST` など、外部プログラムからロボットをAPIとして呼び出す場合、ロボットのURLを指定して実行するため、`ロボット名の変更` や `リポジトリ内のフォルダ階層の変更`、`サーバのコンテキストパスの変更` など、環境回りのメンテナンスがロボットの実行に影響を与えます。

### Case#3 外部連携グループの分類

`Slack API` `VBS` `コマンド実行` `DBアクセス` など、外部システムやプロセスとの連携に関する情報をタグ付けします。

- ロボットの運用においてエラーが発生した場合、BizRobo!に包含される範囲であれば Management Console を中心として一元的に管理し、調査を進めることができますが、外部連携によりBizRobo! 外で実行されるシステムやプロセスとの連携も含めてロボットの安定稼働を目指す場合、日々の運用についても BizRobo!内だけでなく周辺システムの状況に目を配る必要が出てきます。（個別調査対象の把握）

### Case#4 業務グループの分類

`利用期間` `実行周期` `監査対象` `実行端末指定` `問い合わせ先メール` `担当者` など、業務の特性や稼働特性に関する情報をタグ付けします。
- 長期間ロボットを運用する中で「実は業務としてはもう行っていない」処理を延々とロボットで実行し続けているケースがあったりします。定期的にロボットのたな卸しを実施し、野良化を防ぐうえで有効です。
- 監査対象業務をロボット化した際の監査時の目印として？
- 個人や状況に紐づいた業務（定例業務ではなくプロジェクト的な業務）をロボット化する際に、ブラックボックス化・野良化しないための目印として。
- 現場開発型を推進している会社において開発者を評価する指標として。開発保守担当者の名前/従業員IDを記入しておくことにより、その合計値から各開発者が業務効率化にどの程度貢献したかが明示化されます。[^2]（定量効果の合計を算出するためには、ロボット内に「削減時間」[^3] を忘れずに記入しておく必要があります。）

## ロボットタグの利用方法

#### 1．タグ利用のガイドライン作成

タグは「自由入力形式の文字列」なので、運用時に表記ゆれが発生することを防ぐために全社導入する場合にはタグ付けのルールを決めておくことをお勧めします。

#### 2．ロボットファイルへのタグ設定

タグは `ロボットファイル` に対して付与されます。
各開発者がロボットを作成する際に、以下の様に「ロボットの設定」画面から追加します。

:::note warn
v11.3 現在、ロボットタグを設定できるのは `ベーシックエンジンロボット` ファイルに対してのみ可能です。
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/68ca26c1-6d5d-4f9d-bb0f-d5233c2ff9ab.png)

#### 3．Management Console のリポジトリから検索

Management Console の 「リポジトリ」 > 「ロボット」 ページ上部にある下記フィルタ入力ボックスにタグ名称を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/68dac2f2-a980-4310-2e67-94fc5f164ef0.png)
入力した文字列を含むタグが付与されたロボットファイルが一覧で表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/e93e3d93-2bbf-c3fd-1d0a-a9a353d3ac8b.png)


## ロボットタグ導入時の注意

タグの存在が生きてくるのは上述のように運用管理のフェーズですが、タグ自体はロボットファイルに埋め込むものであるため、タグの設定ができるのはロボット開発者に限られます。
設定の手間を負う人と（直接）ベネフィットを受ける人が分離してしまうため、現場への事前の根回しやある程度の強制力も必要になります。

また運用開始後も結局は人が手動で設定する情報であるため、更新忘れが発生したり、ロボットのメンテナンスを長期間行っている間に（特に担当の引継ぎが行われた時など）タグ情報の信頼性が下がってしまうことはよくあります。取りこぼしの無いように最新化する仕組みを取り入れる必要があります。

これについてはロボット開発ガイドラインにおいて、`開発したロボットの本番移行については、ロボットの作成後 Robot Adviser によるスペック情報のチェックを行い、実装とスペックに齟齬がないことを確認する` [^4] などルールを定めておくことが有効かもしれません。

## まとめ

前回の運用環境構成の話とは打って変わり、今回はかなり細かい具体的な機能の話をしてみました。
あまりに地味でかなり使っている方も少ないのではないか？という残念な気持ちから紹介記事を書いてみました。


[^1]:RPAテクノロジーズが提唱する RPAの導入・推進の方法論である「サクセスパス」で定義されている用語。RPA導入３つの推進体制の”型”として、「集中開発型」「現場開発型」「ハイブリット開発型」が定義されています。

[^2]:実際にはリーダー、サブとして複数名の名前を登録することもあります。複数の名前が登録されている場合には評点を按分することになりますが、リーダーについては業務のブラックボックス化防止のためにロボット内のフローを整理・標準化し、サブがリーダー不在時にもロボットのメンテナンスを代替できる状態を作ることが条件になります。また評価の公正を期すために、外注開発ロボットに対しては対象としません。発注元担当の名前をリーダーとして記載することによりモラルハザードが起き、不公平感から仕組みが活用されなくなります。

[^3]:ロボットタグ設定と同じ画面（「ロボットの設定」画面）から、`分` 単位で入力してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3090491/ef802def-93d0-79b0-79b8-42d18fa081a0.png)


[^4]:ロボットファイルを静的解析し、ロボットの構成情報（スペック情報）と修正アドバイス情報を出力するWebサービス。現在β版として一部公開中であり、BizRobo!ユーザーに対してモニター募集を実施中。[☛こちらから申し込み](https://rpa-g.box.com/v/robot-adviser-09-flyer)