はじめに
Pythonで自動化スクリプトやRPA、あるいはセキュリティ系のツールを開発する際、「キーボードの操作(シミュレーション)」や「入力の監視(フック)」が必要になる場面が多々あります。
しかし、どのライブラリが最適なのか迷うことも少なくありません。本記事では、現在主流の3つのライブラリを比較し、ユースケース別の選び方を解説します。
1. 比較表:一目でわかる違い
| 特徴 | keyboard | pynput | PyAutoGUI |
|---|---|---|---|
| 主な用途 | ホットキー設定、簡単な操作 | クロスプラットフォームな監視・制御 | 総合的なUI自動化(マウス込) |
| 権限 | 管理者権限 (Root/Admin) が必須 | 一般権限で動作可能(OSに依存) | 一般権限で動作可能 |
| グローバル監視 | 強力(バックグラウンドでも動作) | 対応(リスナー形式) | 非対応(操作のみ) |
| APIの直感さ | 非常に高い | 中程度(構造化されている) | 高い(シンプル) |
2. 各ライブラリの解説とコード例
① keyboard:シンプルさと強力なホットキー
「特定のキーが押されたら何かを実行する」というタスクに最適です。
-
強み:
add_hotkeyで簡単にグローバルホットキーが作れる。 - 注意点: 低レイヤーのフックを使用するため、Windowsなら管理者権限、Linuxならroot権限が必要です。
import keyboard
# 特定の文字列をタイプする
keyboard.write("Python automation is cool!")
# ホットキーの登録(バックグラウンドで動作)
keyboard.add_hotkey('ctrl+shift+s', lambda: print("Shortcut triggered!"))
# ESCが押されるまでプログラムを待機
keyboard.wait('esc')
② pynput:クロスプラットフォームでの監視
キーボード入力を監視(ロギング)したり、マウスと組み合わせた高度な制御に向いています。
- 強み: 管理者権限がなくても動くケースが多く、コードが構造的。
- ユースケース: キーログ解析、自作の入力補助ツールなど。
from pynput import keyboard
def on_press(key):
try:
print(f'Alphanumeric key pressed: {key.char}')
except AttributeError:
print(f'Special key pressed: {key}')
# リスナーを開始
with keyboard.Listener(on_press=on_press) as listener:
listener.join()
③ PyAutoGUI:GUI自動化の標準
キーボードだけでなく、マウス操作やスクリーンショット撮影も含めた自動化に向いています。
- 強み: 失敗した時の「緊急停止機能(マウスを画面の四隅に持っていく)」が標準搭載されている。
- ユースケース: 定型業務の自動化(RPA)。
import pyautogui
# ショートカットキーの実行
pyautogui.hotkey('ctrl', 'c')
# 入力の間隔を空けて人間味を出す
pyautogui.typewrite('Hello World', interval=0.25)
3. 開発時のトラブルシューティング (Tips)
権限エラー (Permission Error)
Windows環境で keyboard ライブラリを使用する際、ImportError や反応しない場合は、IDE(VS CodeやPyCharm等)を「管理者として実行」 してください。
Poetryでの管理
依存関係の競合を避けるため、Poetryでの管理を推奨します。
poetry add keyboard pynput pyautogui
結論:どれを選ぶべきか?
-
「Ctrl+Alt+A」などで裏で何かを動かしたい →
keyboard -
OSを問わず、キー入力を詳細に監視・取得したい →
pynput -
ブラウザやアプリを操作するRPAを作りたい →
PyAutoGUI
自身のプロジェクトの要件に合わせて、最適なツールを選択しましょう!