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

## はじめに

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

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

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

BizRobo!でExcelを操作する場合、以下3つ[^1]のいずれかを使って実装します。

1. Design Studioに内蔵されているExcelエンジンを使ったExcelファイルの操作
1. Desktop Automationを使ったデスクトップ上のExcelファイルを操作する方法
1. Built-in-Excel機能を使ったAPI経由でのExcelの操作

| # | 呼称[^2] | 実行場所 | メリット |デメリット|
|:-:|:-:|:-:|:-|:-|
|  1 | DSのExcel | サーバー | **Excelインストール不要。**複数同時実行可能。| Excelではない。サーバへの負荷が比較的大きい。
|  2 | DAのExcel  | デスクトップ  | Excelのすべての機能を使用可能 |画面を専有|
|  3 | Built-in-Excel  | サーバー  | ExcelのAPI[^5]を使っておりサーバー負荷が小さい。複数同時実行可能。|バージョン 10.4から追加された新機能のため、機能が不十分[^3]。|

上記簡単に示したように3つの方法にはそれぞれ一長一短があるものの、これまでの経緯やバージョン10.3までのDA品質[^4]による悪いイメージから未だに多くの場面で `DSのExcel` がメインで使用され様々な誤解とトラブルの元になっている気がします。

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

**[それぞれの実行イメージ]**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/ed47aa34-6714-19fd-4e3c-72d663ef2b22.png "それぞれの実行イメージ")


## 「DSのExcel」の特徴と活かし方

### 特徴

「DSのExcel」は最も古くから搭載されているExcel操作のための手段であり、ロボット実行時にはサーバーサイドでサービスとして稼働します。言い換えると、画面を必要とせずバックグラウンドで並行して同時に複数の処理が実行可能であり、ロボットごとに端末を用意しなくても利用者の都合に合わせて実行するロボットの数を決められます。（当然ライセンスによる制限はいつもついて回りますが）

よくBizRobo!がバックグラウンド実行と言っているのはこのことで、同時実行数の限界が実行端末の制限を受けません（正確には受けにくい）。動かしたいロボットの数が増えるたびにPCを調達しなければならないようなことがなく、利用者側である程度の調整ができる点が一つの特徴です。

一方で、複数の処理をサーバーに集中させて実行させることになるのでサーバー側のキャパシティ設計がある程度必要になります。「DSのExcel」は [Apache POI](https://poi.apache.org/) をエンジンとして利用しており[^6]ロボット実行時にExcelファイルをサーバー内部で展開するため、通常ロボットを実行する場合に比べて比較的多くのメモリ容量を消費します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/b800aaa5-fa29-96ea-30c8-bac8fa1b68da.png "DSのExcel表示イメージ")

### 活かし方

ファイル自体をロボット内に取り込んでしまうため、外部のアプリケーションを操作するものと比較して**操作性**・**安定性**ともに優れているものの、ツールの歴史的にもEUC化した業務Excelを操作するためのものではなく、**ちょっとした情報の加工**を想定した作りになっています。

[ワールドトリガー](https://www.shonenjump.com/j/rensai/world.html)で例えるならば、[鳥丸のガイスト](https://w.atwiki.jp/worldtrigger2ch/pages/260.html)のようなもので、特徴を理解し、使い所を絞って実行！というのがあっていると思います。

大きな「表」や複雑な「表」を処理するのではなく、「票」を処理する機能としてはかなり強力な仕組みだと評価しています。

またエンジン自体を内部に持っているため、Excelのライセンスを購入しなくても実行できる点は、用途によっては非常に嬉しいのではないでしょうか。Linuxサーバで運用できますし。


## 「DAのExcel」の特徴と活かし方

### 特徴

いわゆる一般的なRPAと同様で、端末（PCやVDI）上のアプリケーションを画面を通じて操作する仕組みです。そのためExcelのスプレッドシート部分のみでなく、リボン上のコマンドやメニューの操作も可能です。

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

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

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

### 活かし方

スプレッドシート上のデータ処理だけでなく、Excelの機能を使った表の整形（ピボットテーブルなど）や、Excelに組み込まれた専用のプラグインの実行、その他Excelを業務アプリ的に利用している場合の操作などに適していると考えます。

## 「Built-in-Excel」の特徴と活かし方

### 特徴

長らく好評を頂いていた「DSのExcel」と同様にサーバーサイドで実行されます。「DSのExcel」と異なる点は内部に処理エンジンを持つのではなく、APIを通じてExcel自体をバックグラウンドで処理する点にあります。

それにより「DSのExcel」で課題だったメモリ消費についてもクリアし、将来有望な操作方法です。

一方で内部に処理エンジンを持ってロボットのフローと一体で動く「DSのExcel」は、アプリケーションの状態を自動的にロボット側と同期できるという点で優れていたため、**他のRPAと同様に**「それぞれ別個のアプリケーションをロボットが操作をしますよ～」と他人行儀になってしまった「Built-in-Excel」を受け入れるには、古くからの利用者ほど時間ときっかけが必要なのかもしれません。

「DSのExcel」に慣れてしまった状態から「Built-in-Excel」に移行するのは、上げ膳据え膳に慣れてしまった人がセルフサービスの店に間違えて入ってしまったときのような気まずさを想起させます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1524794/2ad14a67-be2e-d193-11e4-3eb0f6ff2cbe.png "Built-in-Excel表示イメージ")


### 活かし方

残念ながらコンセプトは非常に素晴らしいものの、バージョン10.7の現時点においては「DSのExcel」と比較しても実行できる機能に制限があったり、使い勝手においても不満が残ります。

ただ機能自体がバージョン10.4にて搭載された比較的新しいものであることと、これもバージョンを追うごとに改善はされてきているので、今後のバージョンアップに期待です。

「票」の処理やスプレッドシート内のデータ処理を行う場合の実装は「Built-in-Excel」から発想し、要件的に足りない部分については「DSのExcel」や「DAのExcel」にて代替するという方針ですすめるのが、今後の展開も見据えれば望ましいと思います。

## まとめ

正直タイミングが悪かったか、すすんで書いておきながら歯切れの悪い結論になってしまいました。おそらくそんな状況もあって「DSのExcel」に殺到してしまうのだと思います。

一方でどこからともなく春のおとずれも風の便りで耳に入ったりしています。本稿については、新規情報が入り次第、またアップデートできたらいいなと思っています。

## 関連記事

https://qiita.com/macrisis/items/e3d45077dcd1ffffdfb8

[^1]: 細かく言えば方法は他にもありますが論点がずれるので割愛します。
[^2]: 機能名として定義されていないものもあるので、正式名称ではなく通名的なものと考えてください。
[^3]: 全体的に現時点での機能不足は否めないが、バージョンが上がるごとにDAの機能拡張と合わせて機能性が高まっており、今後に期待。
[^4]: バージョン10.0にメジャーアップデートされたときに追加機能として実装されたDA（当時はDevice Automation）ですが、その後バージョンを重ねるごとに機能的な改善（時々変わり過ぎで混乱）が継続的に実装され、「Finderがコケる」「長時間動かすとコケる」という問題はバージョン10.4になってやっと合格点を出せるぐらい改善されたと思っています。（テスト検証してみた限りでは、端末のCPUにわざと負荷をかけ続けてBUSY状態を常態化しない限り、コケることはなくなりました。）一方で、それ以前のバージョンで回避策として組み込まれていた Wait 処理などが逆に悪さをしてしまうケースはありますが。。。リファクタリングが必要ですね。
[^5]: 具体的にどのAPIかという情報はないので、もしかしたらSDKとかObject libaryのことかもしれません。
[^6]: BizRobo!がインストールされた際の構成モジュールの内容から推測