【間違いだらけの BizRobo! 導入】それ、使い方おかしいです。Web編

## はじめに

BizRobo!って割と昔からある製品で、歴史が長い分「これ何に使うの？」というのも含めいろんな機能があります。また、一つのことを実現するにも手段が複数用意されている場合もあり「どれを使ったらいいの？」と最初は戸惑ったりします。
現場で人の作ったロボットを見ては「これ、実はツール開発者の意図と違った使い方をしているんじゃないの？」と思うこともあったので、経験から得た自分なりの考えを整理したいと思います。

- **2021年5月21日時点で最新であるバージョン 10.7 をベースにWebの操作についてまとめます。**


## BizRobo!でWebを操作する方法

BizRobo!でWebを操作する場合、以下4つのいずれかを使って実装します。

1. Design Studio（以降、DS）に搭載されている**クラシック**ブラウザ[^2]
1. DSに搭載されている**デフォルト**ブラウザ[^1]
1. Desktop Automation（以降、DA)を使ったデスクトップ上のブラウザ操作[^3]
1. DA組込ブラウザ（Chromium）

| # | 呼称 | 実行場所 | メリット |デメリット|
|:-:|:-:|:-:|:-|:-|
|  1 | クラシックブラウザ | サーバー | 動作が軽い。抜群の安定性。**複数同時実行可能**。| 古い業務Webシステム以外では使い所がない。|
|  2 | デフォルトブラウザ | サーバー  | DAとの連携も可能。抜群の安定性。**複数同時実行可能**。 |モダンブラウザではないため、最新のリッチなB2Cサイトの操作は苦手。|
|  3 | DA  | デスクトップ| 稼働端末にインストールされているブラウザを画面操作可能。|Google Chrome専用サイトについては、DA組込ブラウザが必要|
|  4 | DA組込ブラウザ | サーバー  | モダンブラウザでありES6以降にも対応。**複数同時実行可能**。|取り立てて使用する際のデメリットはないが、デフォルトブラウザーと比較すると使いやすさでまだ劣る。|

上記簡単に示したように4つの方法にはそれぞれ一長一短があるものの、種類の違いは時代とともに追加された代替案という印象もあります。これまでのITシステムのライフサイクルと比較して日々未だに進化しているWebの技術や表現をカバーするために複数種類（クラッシックブラウザに至ってはほぼ化石）のエンジンが搭載されているのでしょう。

以降では4つの方法それぞれに対して、特徴と利用に適したケースを挙げていきたいと思います。

**[それぞれの実行イメージ]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/87bbe3ad-fc06-1315-1509-9bf05927445f.png)

## 「クラッシックブラウザ」の特徴と活かし方

### 特徴

最も古くから搭載されているブラウザエンジンで、当初はこのエンジンのみの構成でした。
外部のブラウザエンジンを包含した仕組みではなく独自実装されているため、HTTPレベルでの操作や、JavaScriptイベントの個別コントロールなど、玄人向けのカスタマイズが楽しめます。

またサーバー上でスレッドとしてロボットが実行されるため「BizRobo!はバックグラウンド処理」と言われます。

### 活かし方

今となってはクラッシクエンジンを使って新しいロボットを作る機会は少ないと思いますが、Webを使用しない単純なファイル処理（XMLやJSON、CSVなど）や、REST APIを使った外部Webサービスのコントロール、そして値の整形（変数処理など）純粋に簡単なロジックを気軽に実装するには丁度いいかもしれません。[^5]


## 「デフォルトブラウザ」の特徴と活かし方

### 特徴

個人の記録としては、2013年～2014年のバージョン9.3でその登場を確認しています。
WebKitを拡張したブラウザエンジンで、クラッシックエンジンよりも効率的に様々なWebサイトをハンドリングすることができます。WebKitのバージョンが[ES6](https://babeljs.io/docs/en/learn/#ecmascript-2015-features-promises)未対応であるものの、エンジン自体の品質はバージョンを経ることに向上しており、拡張機能として提供されている[Polyfill](https://polyfill.io/v3/)を使ったり、[babel](https://babeljs.io/)を組み込むことにより結果的にはES6以降の仕様にも対応することができます。

またサーバー上のプロセスとしてロボットが実行されるため、クラシックエンジンと同様にロボットはバックグラウンドで複数個のロボットが同時に処理（並行処理）されます。

Webサイトをロボット内部のブラウザエンジンで解析・操作するため、外部のブラウザを操作する他の仕組みと異なりアプリケーションの動作タイミングに合わせて「あいのて」を入れるような気遣いは不要。高いグリップでWebシステムを操作でき、（Web特有の通信エラー等諸問題を除き）非常に安定した動作を実現します。[^4]

画面上の特定位置をマーキングする**名前付きタグ設定（Set Named Tag）** という機能が用意されており、これは非常に強力。Webページ全体から特定のエリアをマーキングする事により、画面のレイアウト変更やタグ位置の移動による影響を受けにくい。

これもブラウザエンジンと一体化しているロボットだからこその機能で、ページ全体をロボットが把握しており、**画面に表示されていない部分の要素についても感知・操作できる**ためです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/599f04e9-f5e3-f036-ccc1-46488947d5c0.png "デフォルトブラウザのイメージ")
他のツールと比較して「マクロレコーダはないの？」と聞かれることもありますが、実際にツール中に表示される画面に直接マウスやキーボード操作を実行することで自動的に処理を記録していく仕組みであり、そもそもマクロレコーダ的な性格（画面の操作が処理を生成する）であるため、こんな気分になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/268231de-6f97-aab4-1ad9-434902931621.png "切ない")


### 活かし方

Webシステムの操作・自動化を試みる場合には最初に試していただく選択肢だと思います。
表現のリッチな最新WebサイトについてはJavaScriptが眩しすぎて目がくらんでしまうこともありますが、一般な業務用Webアプリケーションであれば、拡張機能も併用してまだまだ問題なく活用できると思います。

一方で、B2C向サイトやSNSから情報収集するなどについては後述するDA組込ブラウザの活用をおすすめします。

## 「Desktop Automation」の特徴と活かし方

### 特徴
いわゆる一般的なRPAと同様で、端末（PCやVDI）上のアプリケーションを画面を通じて操作する仕組みです。そのため端末にインストールされているブラウザを指定して操作することが可能です。

バージョン10.7時点では、IEに加えFireFox、Edgeの画面を認識し操作することができます。ただし、IEでは画面をHTMLとして認識する一方、FireFoxとEdgeについてはその他のWindowsアプリと同様にHTMLタグを認識するのでちょっと微妙な感じもします。このあたりは今後に期待です。

残念ながらChromeについては画面の枠（ウインドウ部分）のみ認識可であり、後述するDA組込ブラウザ（Chromium）で代替するか、**ISA**と呼ばれるAI的な機能を使って画像情報から動的に画面オブジェクトを生成する仕組み活用する必要があります。

DAはバージョン10から追加された機能で、実際にオフィスワークで利用されるすべてのアプリケーションを処理するために作られました。それ以前は「BizRobo!はWebしか使えない。」とよく言われたもので、おそらく未だにそう思っている方もいるかも知れません。

また、鳴り物入りで登場したDA機能がまだリリース初期の機能性や品質の粗さから酷評され、**DA＝悪**と言われる暗黒時代を築きました。

個人的にはバージョン10.4を一つの境として見違えるように動作も安定し、使いやすさという点でもバージョンを追うごとに向上しているので、すでに現在のバージョン10.7では特に気に病む部分もないと思うのですが、嫌な記憶はなかなか拭えないものです。


### 活かし方

Web画面の操作だけでなく、ブラウザの拡張機能を使う処理やActiveXやJavaAppletなど古いWebの仕組みを利用している業務アプリの操作に適していると言えるでしょう。

## 「Desktop Automation組込ブラウザ」の特徴と活かし方

### 特徴

バージョン10.3から搭載された一番新しいエンジンです。
Chromiumをベースに実装されたブラウザエンジンで、ユーザーインターフェイスはDAと同様のものを用いていますが、クラシックブラウザ・デフォルトブラウザと同じくサーバ上でプロセスとして実行されるため、1台のサーバ上で複数のロボットを同時に実行することができます。

"「Desktop Automation」の特徴"でも記載したとおりDA組込ブラウザがデビューした当時はDAの操作性や安定性に負のインパクトが有り、最初から躓いてしまった感がありますが、バージョン10.4での基本機能の改善を起点として**非常に細かくて思い出すのが難しいが、体感すると感激する**細かな使い勝手の向上がバージョンアップの度に見られ、10.7においては既に実用に耐えられるレベルに達しています。

また、前述のISAモードを使うこともできるため、「特定ページの特定箇所だけオブジェクト認識できない。。」という場合にも妥協して画像認識を設定する必要がありません。

デフォルトブラウザーになれてしまった人にとっては**名前付きタグ設定（Set Named Tag）**の未実装など物足りなさを感じる部分はあるもののバージョンを重ねるごとに確実に機能改善や追加が行われており、今後最も注目のブラウザエンジンです。

![desktop-monitoring2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/1913e458-29b5-6974-fcc1-6ee99fa50ddc.gif)
### 活かし方

デフォルトブラウザの後継であり、次期本命の実行エンジンではあるものの、非常に細かで気の利いた設定のできるデフォルトブラウザに比べるとまだ後輩は力不足。という感じもあります。

一方で、先輩であるデフォルトブラウザには手の届かないWebフロントエンドの世界があり、SNSやB2C向けサイトの操作においては非常に高い親和性があります。

例えば、タイムラインのように画面を開いているだけで動的に表示内容が切り替わっていくサイトの監視や今後普及する可能性のある[WebAssembly](https://developer.mozilla.org/ja/docs/WebAssembly/Concepts)を組み込んだサイトの操作などに力を発揮するものと期待しています。

## まとめ

一般的にBizRobo!はKofax製品のOEMだと言われており、該当するKofax製品の最新情報を見てみると最新のバージョンは11.1とのこと。
というと、必然的にBizRobo!の次のバージョンでも10→11へのメジャーバージョンアップが想像できます。

Kofaxで搭載される新機能のどの程度がBizRobo!と一致しているのかは不明ですが、`ChromiumにJavaScriptを組み込める機能（機能拡張!!）` や、`Chromiumの表示画面サイズを設定できる（スクロールしなくていい!!!）`など、かなり強力な機能がKofax版には搭載されているようです。

もしかしたら主戦場は次のバージョンなのかもしれませんね。いつそれが可能になるのかはまだ情報がないですが。

## 関連記事
https://qiita.com/macrisis/items/8c2f97c956be553b0873

[^1]: WebKit
[^2]: IE8の挙動を模した独自ブラウザエンジン
[^3]: IE、FireFox、Edgeの画面を操作できることを確認。Chromeは認識せず。
[^4]: ブラウザととボットが一体となって動作するため、アプリケーションの操作を空振りした。。ということは仕組み上発生しません。
[^5]: ただし、同じことが同じ操作性でデフォルトブラウザでもできるため、やはりクラッシクブラウザを選択する意味は、処理の軽さ以外にはあまりないのかもしれません。