Pythonで業務を自動化しようとしてpyautogui を使い始めたとき、こんな壁にぶつかったことはありませんか?
- 英数字は入力できる
- でも、日本語だけが打てない
- エラーも出ず、原因が分からない
実はこれ、pyautoguiを使った自動化で非常によくあるつまずきポイントです。
この記事では、
- なぜpyautoguiでは日本語が入力できないのか
- 今でも安定して使える解決方法
- 非エンジニアでもそのまま使える実装例
を、できるだけやさしく解説します。
PyAutoGUIとは?
PyAutoGUI(パイオートGUI)は、Pythonで マウスやキーボード操作を自動化できるライブラリ です。
主に次のようなことができます。
- マウスの移動・クリック
- キーボード入力
- 画面キャプチャや画像認識
Excelや業務アプリへの入力補助など、「人がやっている操作をそのまま再現する」用途でよく使われます。
pyautoguiで日本語入力ができない理由
まず、よくあるコードを見てみましょう。
import pyautogui as pg
pg.typewrite("こんにちは")
このコードを実行すると、
- 英数字 → 入力できる
- 日本語 → 入力されない
という現象が起きます。
なぜ起きるのか?
pyautoguiの typewrite() は、キー入力を1文字ずつ送信する仕組み です。
しかし、日本語入力は内部的に
- IME(日本語入力システム)
- 変換処理
- 確定操作
といったステップを経ており、単純なキー送信では正しく処理されません。
これはバグではなく、pyautoguiの仕様による制限です。
解決方法は「クリップボード経由」
この問題を回避する、もっとも安定した方法が👉 日本語を直接打たず、貼り付けるという方法です。
そのために使うのが pyperclip です。
pyperclipをインストールする
まずはライブラリをインストールします。
pip install pyperclip
日本語を貼り付ける基本コード
次に、以下のコードを見てください。
import pyautogui
import pyperclip
pyperclip.copy("こんにちは")
pyautogui.hotkey("ctrl", "v")
このコードでは、
- 日本語をクリップボードにコピー
- Ctrl + V で貼り付け
という、人が行う操作をそのまま再現しています。
これなら、日本語も問題なく入力されます。
よく使うなら関数化しておく
何度も使う場合は、関数にしておくと便利です。
def paste_text(text):
import pyperclip
import pyautogui
pyperclip.copy(text)
pyautogui.hotkey("ctrl", "v")
使うときは、次のように書くだけです。
paste_text("こんにちは")
補足|現在でもこの方法がベスト?
はい。2026年現在でも、この方法がもっとも安定しています。
pyautogui単体で日本語入力を無理に扱おうとすると、
- 環境依存が強くなる
- IME設定に左右される
- 動いたり動かなかったりする
といった問題が起きがちです。
そのため、
日本語は「貼り付けるもの」
と割り切るのが、実務では一番安全です。
まとめ
- pyautoguiでは日本語を直接入力できない
- これは仕様による制限
- pyperclipを使って貼り付ければ安定する
この方法を使えば、
- 業務アプリへの自動入力
- 定型文の一括入力
- 手作業の削減
など、実用的な自動化が可能になります。
「難しそう」と感じるかもしれませんが、やっていることは 人の操作を少し賢く再現しているだけ です。
ぜひ一度、試してみてください。
