【FAILSAFEの是非】PyAutoGUIで自動操作を止める方法

【FAILSAFEの是非】PyAutoGUIで自動操作を止める方法 プログラミング

「PyAutoGUIによる自動処理を止めたい!!」
「pyautogui.FAILSAFEの設定をどうすればいいのかわからない・・・」

このような場合には、この記事の内容が参考となります。
この記事では、PyAutoGUIで自動操作を止める方法を解説しています。

本記事の内容

  • PyAutoGUIのFail-Safes(安全装置)
  • PyAutoGUIにおけるFAILSAFEの是非
  • PyAutoGUIにおけるFail-Safesの動作確認

それでは、上記に沿って解説していきます。

PyAutoGUIのFail-Safes(安全装置)

PyAutoGUIには、Fail-Safesが備わっています。
Fail-Safesとは、日本語で安全装置のことを言います。

なぜ、PyAutoGUIに安全装置が必要なのでしょうか?
それは、PyAutoGUIが危険を引き起こす可能性があるからです。

危険を引き起こすモノには、大抵安全装置が付いています。
安全装置があるのは、危険が起こる前提だとも言えます。

自動車のエアバッグなんて、わかりやすい安全装置です。
衝突事故が発生した際、リスクを低減します。

自動車だと、シートベルトも安全装置です。
安全装置があればあるほど、それだけ危険なモノということです。

自動車まで言わなくても、PyAutoGUIにもそれなりに危険が存在しています。
自動化処理が順調なら、何も問題はありません。

しかし、想定外なことは普通に発生します。
例えば、意図しないポップアップの表示などはよくあることです。
その結果、そのポップアップのせいで本来押すべきボタンが押せないなどがあります。

このような場合は、処理を止めたいですよね?
しかし、「ctrl + c」でもプログラムは止まってくれません。

マウスカーソルをPyAutoGUIに奪われていたら、プログラムの停止ボタンも押せません。
これは、焦ります。

こんなときに、PyAutoGUIのFail-Safesが役立ちます。
モニターの左上、座標で言えば(0, 0)にマウスカーソルを移動させます。

処理のイメージは、次のような感じです。

そうすれば、自動化プログラムが停止します。
その場合、次のようなエラーが表示されます。

pyautogui.FailSafeException: PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.

例外エラーが出ていますが、これはこれで正しいです。
もっと工夫したいなら、ちゃんと例外処理をコーディングしてもよいでしょう。

以上、PyAutoGUIのFail-Safes(安全装置)について説明しました。
次は、PyAutoGUIにおけるFAILSAFEの是非を確認します。

PyAutoGUIにおけるFAILSAFEの是非

PyAutoGUIのFail-Safesが機能した場合のエラーは、以下のモノでした。

pyautogui.FailSafeException: PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.

内容としては、安全装置が機能したというメッセージです。
ここで注目すべきは、以下の内容となります。

To disable this fail-safe, set pyautogui.FAILSAFE to False. 
DISABLING FAIL-SAFE IS NOT RECOMMENDED.

PyAutoGUIのFail-Safesを無効にする方法が明示されています。
ただし、Fail-Safesを無効にするのは推奨していないということです。

デフォルトでは、Fail-Safesが有効です。
それを無効にはできるが、オススメはしないということになります。

もう、FAILSAFEの是非については結論が出ていますね。
FAILSAFEは、Trueで有効にしておくべきです。
つまり、デフォルトのままで何もしないということです。

実際、自動車のシートベルトやエアバッグを外す人なんていませんよね。
メーカーが提供する安全装置は、そのまま利用するのが正しいと言えます。

以上、PyAutoGUIにおけるFAILSAFEの是非について説明しました。
次は、PyAutoGUIにおけるFail-Safesの動作確認を行います。

PyAutoGUIにおけるFail-Safesの動作確認

PyAutoGUIのFail-Safesは、デフォルトでは有効です。
それは、以下のコードで確認できます。

import pyautogui

print(pyautogui.FAILSAFE)

上記を実行した結果は、以下となります。

True

では、安全装置が動くところを確認しましょう。
そのためには、次のコードが利用できます。

import pyautogui

while True:
    pyautogui.moveTo(300, 300)
    pyautogui.sleep(1)

内容は、シンプルです。
1秒毎に座標(300, 300)の場所へマウスカーソルを移動させます。

このコード実行中に、マウスカーソルを座標(0, 0)に移動させてみましょう。
安全装置が機能しましたか?

安全装置が機能しない場合は、マウスカーソルの位置が甘いのかもしれません。
もっと踏み込んでみてください。

以上、PyAutoGUIにおけるFail-Safesの動作確認を説明しました。

タイトルとURLをコピーしました