フローが重くなる原因

エレベーターに乗ったときは行き先階のボタンを押す前に閉じるボタンを押そう。これにより0.5秒ほど時間を削減できる。10回乗ったらなんと5秒も削減できる。エレベーターに乗るときの時短ハック!

さて、フローを起動したときには毎回ダウンロードをしているのでフローのサイズが大きいと実行まで時間がかかることとなる。50MBくらいを超えてくると開始するまで10秒以上かかったりしてかなり遅く、せっかくの時短ハックで得られた時間を浪費してしまう。

フローが重くなる原因はWebオートメーションやUIオートメーションで使うUI要素がフローにたくさん含まれていることだ。フロー上のアクションの数が多いと重そうにみえるが実はアクションの数自体はあまりサイズに寄与しない。またRun Desktop Flowのアクションにより別のフローを含んでいる場合にはその別のフローもダウンロードしているので、Run Desktop Flowで重いフローを呼び出していればやはり元のフローも重くなる。同じくあくまでサイズが問題なのでRun Desktop Flowのアクションが多いこと自体はあまり寄与しない。

以下のようにアクションをコピーしてメモ帳などに貼り付けてみればサイズに大きく寄与するアクションがどれかがわかる。

アクションがたくさんあるフローの例

アクションがたくさんあってもロジックが複雑であってもそれによってサイズが肥大化することはない。これはこれでメンテナンス性が低いので再構成したほうがよい。

f:id:yujihb:20211023183742j:plain

アクションの中身の比較

以下アクション3つのうちで一つだけ異常にサイズが大きいものがあります。

f:id:yujihb:20211023184002j:plain

1つ目と2つ目のアクションをコピーしてメモ帳に貼り付けると、アクションに設定したとおりの内容がRobin言語で書かれていることがわかる。想定通りの結果だ。

f:id:yujihb:20211023184103j:plain

3つ目のアクションをコピーしてメモ帳に貼り付けると、Webページのボタンを押すだけのつもりが中にはとんでもない量の文字が入っている。メモ帳が落ちそうである。アクション一行だけでこの量は想定外だ。"ScreenShot"という行の下に画像を表すと思われる文字が大量にある。これはUI要素を指定しているためだ。

f:id:yujihb:20211023193409j:plain

Webページのボタンを押すなどのUI要素を利用するアクションを削減することでサイズを削減できるのかもしれない。しかしUI要素はフローに必要不可欠なので使わざるを得ないというジレンマがある。小さなサイズで必要なアクションを含められるような最適な構成方法はあるのだろうか。つづく。