忍者ブログ

Uipathの高速化について

2021年04月20日
今回もUiPathを使ったRPAの話。

前任者が異動になって引き継いだものの、
素人が納期に追われてその場しのぎで作ったロボットはまさにカオス。。。

処理内容は、専用ソフトでのみ表示できるデータを別形式で出力するというもの。

普通に設計すれば、専用ソフトのみを画面上に表示して、
ファイル名の取得やログファイルへの出力なんてバックグラウンドでやるものだけど、
ファイル名の取得にメモ帳を起動して、クリップボードに移してメモ帳を閉じる。
ログ出力は、無題のメモ帳を永遠と編集して、最後に保存というロジック。

期限までに変換が終わらないリスクがあるので、高速化を検討してみた。

今後も使うロボットであれば、設計から見直して最適なロボットに作り変えるんだけど、
今回のロボットは変換が終わったら用済みということで、
試験やり直しなどの工数を回収できないのでロジックを変えない方法で。



真っ先に目に留まるのがこのページ。
https://www.uipath.com/ja/blog/developer/accelerate-processing

試してみたのは以下2つ。
Tips ①「実行前の待機時間(Delay After)」, 「 実行後の待機時間(Delay Before)」の調整
Tips ②「〇〇をシミュレート(Simulate〇〇)」を活用(または「ウィンドウメッセージを送信(SendWindowMessages)」を活用)

フォームにテキストを入力するのはもっと早くできるやろって思い調べたものの
その解決策である②よりも①の方が効果が絶大。

各処理の実行前後の待ち時間をデフォルト値から以下の通り変更。
実行前待機(画面遷移あり):200ms → 100ms (ボタンの感知時間)
実行前待機(画面遷移なし):200ms → 30ms (仕様書でよく見る数値)
実行後待機:300ms → 50ms (デフォルト値に習って実行前待機より長めに)


さらにテキスト入力を使ってtabやEnterキーの押下動作を設定。
https://qiita.com/allein-s/items/7e0d3756289f6966c554

キー入力してからEnter押さずにマウス操作をする人にイラっとするけど、
キー入力とホットキーに分けるのはそれと同じこと。無駄すぎる。



ソースコードの全貌が理解できていないため、
一部のワークフローしか修正できなかったけど、
変更前後で体感速度が段違い。

まだまだ改善の余地はあるものの、13%の高速化に成功した。
(1ファイルあたり30秒が26秒に短縮)


PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字