なぜSeleniumはシナリオ作成の生産性が高いか?
シナリオ作成機能は必要? で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はこれから競争にさらされるソフトではなく、すでに勝ち残ったソフトです。