同時に動かせない2つの自動処理を、効率よく回し続けるための設計

記事
コラム
■ 導入:別々に作られた2つの自動操作を「同時に回したい」

この案件で相談を受けたのは、

異なる2つのブラウザ繰り返し操作のAHKを、1本に統合して運用したい

という内容でした。

もともと依頼者の方は、
「ブラウザ上で行う自動操作A」と「自動操作B」を別々のAHKとして持っていて、
それぞれ単体では動いている状態でした。

ただ、実際の運用としては「AとBをできるだけ並行して回したい」というニーズが強く、
2本のスクリプトをどう組み合わせて動かすか が課題になっていました。

■ 課題:AHKは“フォーカスを取り合う”ので、本質的に同時には動かせない

ブラウザ操作の自動化では、
どのウィンドウにフォーカスがあるか で挙動が決まります。

そのため、単純に

自動操作A用のAHK

自動操作B用のAHK

を同時起動すると、

互いにフォーカスを取り合う

片方が操作中にもう片方が割り込む

結果として、どちらも意図した動きにならない

という問題が起こります。

さらに厄介なのは、
AとBで使うページが同じブラウザ(Chrome)上にあり、

Aをすべきページ

Bをすべきページ

を取り違えると、誤操作のリスクが非常に高いという点です。

加えて、
自動操作の間隔や「1バッチの繰り返し回数」には上限もあり、
どの程度のペースで回すか という設計も見直す必要がありました。

■ 改善①:2つの自動操作を1本のAHKの中で“順番よく回す”方式に再設計

まず行ったのは、
「AとBを別々のAHKで動かす」という前提をやめて、

1本のAHKの中でAとBを制御する

という形に設計を切り替えることでした。

どのタイミングでAを動かすか

その待ち時間のあいだにBをどこまで進めるか

AとBの順序をどう並べると一番効率がいいか

といった「運転スケジュール」を組み直し、

片方の待ち時間にもう片方を進める ことで、
2つの処理を“見かけ上並列”に動かす構成にしています。

■ 改善②:A用ページとB用ページを確実に識別し、正しいブラウザだけを操作する

次に重要だったのが、

「今どのページにいるのか」を間違えずに判定すること

です。

AとBはどちらも同じブラウザ(Chrome)を使いますが、
開いているページはそれぞれ違います。

もしここを取り違えると、

本来はAをすべきページでBの操作をしてしまう

新しくChromeを開いた場合に、別のウィンドウを触ってしまう

といった誤作動につながります。

そこで、

Aを行うべきブラウザ

Bを行うべきブラウザ

を識別できるようにし、
両方のページが開いていても、新規でブラウザが開いても、
常に“正しいほう”を選んで操作する 制御を組み込みました。

これにより、

Aをすべきときは必ずAのページに

Bをすべきときは必ずBのページに

という形で、
操作対象を取り違えない自動化 が実現できました。

■ 改善③:バッチの間隔・回数上限を設計して“無理なく回し続ける”

依頼の中には、
自動操作の間隔や1バッチの速度、
その繰り返し回数上限といった条件もありました。

そこで、

AとBそれぞれに対して、
「1回の処理にかかる時間」と「待機すべき時間」を整理

そのうえで、
1バッチあたり何回まで繰り返すか をパラメータとして持たせる

という形で、
無理なく回し続けられるペース設計を行いました。

これにより、

必要以上に高頻度で回しすぎない

条件に合わせて上限を守った運用ができる

という、現実的な自動運転が可能になっています。

■ 成果:2つの自動操作を“ぶつけずに”、かつ“時間も無駄にせず”動かし続ける仕組み

こうした設計の結果、

本質的に同時実行できない2つのブラウザ操作を、
1本のAHKの中で効率よく交互に回せるようになった

Aの待ち時間にBを進めることで、
PCの待ち時間をほぼゼロに近づけられた

A用ページとB用ページの識別を誤らず、
誤操作のリスクを抑えた

という、“生産性と安全性のバランスが取れた自動化” に仕上がりました。

この案件では特に、

「2つの独立したスクリプト」をどう統合し、
どんな順番で回せば、一番ムダがないか

を設計する部分が、一番のポイントだったと感じています。

■ まとめ:複数の自動化を「どう運転させるか」まで含めて設計する

今回の案件は、
単に「2つの自動処理を足す」のではなく、

同時には動かせない前提を理解したうえで

待ち時間の活用や順番の組み替えによって

1本のスクリプトとして最大限効率よく回す

という、運転設計そのものを作り直した例でした。

今後も、
「既にある自動化同士をどう組み合わせるか」
「どんな順番で動かすと現場の生産性が一番上がるか」
といった視点も含めて、実例を紹介していきます。

▶「複数の自動化をまとめて運用したい」「今あるスクリプトの“運転設計”を見直したい」という方はこちら

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら