なぜSeleniumはシナリオ作成の生産性が高いか?

2020年5月16日

シナリオ作成機能は必要? でRPAソフトの

  • 自動記録機能:シナリオ作成を支援し、特にソフトの使い始めにおいて役立つ
  • 画面作成機能:ソフトに慣れてくるとかえって生産性が落ちる

ということを述べました。
ではSeleniumの生産性はどうなのでしょうか?

1.準備段階

RPAでシナリオを作成するには、前段階として、対象業務に対して

  • どこまでRPAで実現するか
  • RPAのどの機能を用いて実現するか

を考える必要があります。

そのためには、使用するRPAソフトに対し

  • できること(機能)
  • できないこと(制約)

が明確になっていなければなりません。

そして、

  • できることに対しては具体的な実現方法
  • できないことに対しては回避策

を調べることになります。

また、実際にシナリオを動かすとエラーが生じて、うまく動かないことがあります。
エラーの原因を特定して解決する(トラブルシューティング)ことになりますが、RPAソフトの動作や、操作対象アプリケーションとRPAソフトの関連に起因する事も多く、ツールの特性を理解しておく必要があります。

 すなわちRPAを実施するには、使用するソフトの特性(ノウハウ)を知ることが必須です。
残念ながら、RPAの歴史は浅いので、普通のRPAソフトは、まだ十分にノウハウが蓄積されていません。ソフトによっては、販売元がQ&Aサイトを整備したり、有志がユーザーコミュニティを設けたりしていますが、これからといった感じです。

仮に、あなたが問題に直面した場合、

  • あなた自身が試行錯誤して調べるか
  • サポートに問い合わせて連絡を待つか

ということになります。

 一方、Seleniumは、本来Web自動テスト用のツールなので、長年に渡り世界中で利用されてきました。使用しているのはIT技術者ですので、マニアックな操作をさせたいという要求もあります。そして、できない事があると自分で調べます。
 さらに申しますと、Seleniumはオープンソースですから、ユーザーフォーラムやQ&Aサイトがとても充実しています。

Seleniumで「こういった作業ができるか?」と思ったとき、大抵はすでに誰かがやっています。
その誰かは、

  • できた場合は具体的な実現方法(プログラムコード)
  • できなかった場合は回避策

をネットに書き込んでいてくれます。

私自身も、普段からサイトで調べながらコードを書いています。そしてSeleniumは国内でも広く利用されているので、多くの情報は日本語で手に入ります。

2.シナリオ作成段階

 Seleniumには、シナリオの自動記録機能も、画面でシナリオを作成する機能もありません。直接プログラムコードを入力する必要があります。

もちろんプログラムですから、1文字でも間違えるとシナリオは動きませんが、そもそもメモ帳などのテキストエディタで1文字ずつ入力するわけではありません。
統合開発環境(IDE)を使います。

 統合開発環境は何十年もかけて進歩してきました。プログラム作成を支援する様々な機能があります。
例えばコードエディタであれば、

  • 色分け表示
  • 入力候補の表示
  • タイプミスのチェック

など、多くの入力支援機能があり、文法的なミスは事前に排除できます。
私もPyCharmの無償版を使用しています。
PyCharmの画面イメージ

 コードエディタが入力を支援してくれるといっても、直接コードを書くことには変わりありません。実際にコード入力にかかる負荷はどの程度でしょうか?

RPAの場合、操作手順をプログラムコードに落とす作業であり、シンプルなプログラムで済みます。
しかもSeleniumの場合は、多くの紹介サイトがあり、大半はそれらのサイトからコピーしてきて、必要な部分を書き換えていく作業が中心になります。
よって、まったくの白紙から作るのではなく、コーディングの作業量は大幅に減ります。

また、XPath検証ツールを使えば、項目操作のコードを自動生成してくれますので、同様にコピーして利用することができます。

3.デバッグ段階

 そして何よりも、プログラミングにおいて一番大変なのが、発生したエラーを修正するデバッグ作業です。
開発統合環境(IDE)には、テストを支援する機能として、

  • ログ出力
  • ブレイクポイント
  • 例外発生時のエラー内容表示
  • 実行中の変数内容を表示

など、「どこでどんなエラーが発生したか」を知るための強力なデバッグ機能を備えています。

 特にRPAの場合は、操作対象のアプリケーションに合わせて、それをうまく動かすプログラムを作ることになります。
どんなにプログラムの知識があろうとも、他人の作ったプログラムを動かすのですから、自分ではコントロールできない部分が存在します。

 だからRPAは使えるようになるまでよりも、使えるようになってからの方が大変です。
前述の通り、Seleniumはユーザーフォーラムが発達していますので、ノウハウが蓄積されていますし、質問を投げることもできます。デバッグ作業に関しては、まだ歴史の浅いRPAソフトよりも、大きなアドバンテージがあると言えるでしょう。

 現状RPAは様々なソフトが販売され、これから淘汰されていく(あるいはRPAブームが一過性で終わる)可能性があります。
利用していたソフトがなくなってしまうと、せっかくの資産(シナリオ、データ、ノウハウ)が無駄になり、新たに別のソフトを学習しなければなりません。
その点、Seleniumはこれから競争にさらされるソフトではなく、すでに勝ち残ったソフトです。

2020年5月16日

Posted by sj