Pythonで業務を自動化しようとして、pyautogui.typewrite() を使ってみた。
英数字は問題なく入力できるのに、なぜか日本語だけが入力されない。
「自分の書き方が悪いのか?」
「Pythonでは日本語入力は無理なのか?」
そんなところで立ち止まった方へ向けて、日本語入力を確実に自動化する方法をまとめたのが、この記事です。
この記事では、pyautogui と pyperclip を組み合わせた現実的で安定する解決策を、最小構成で解説します。
なぜ pyautogui では日本語が入力できないのか
pyautogui の typewrite()(または write())は、キーボード入力を疑似的に再現する仕組みです。
そのため、
- 英数字 → 物理キーとして扱える
- 日本語 → IME(日本語入力システム)を経由するため不可
という制限があります。
つまりこれは、
- あなたのコードが間違っている
- Pythonの実装が悪い
という話ではありません。
仕組み上、日本語はそのままでは入力できないそれだけの話です。
日本語入力を安定させる唯一の現実的な方法
結論から言うと、日本語は「直接打つ」のではなく「貼り付ける」のが正解です。
流れはシンプルです。
- 日本語文字列をクリップボードにコピー
- Ctrl + V(Macなら Command + V)で貼り付ける
この方法なら、
- IMEの状態に左右されない
- ほぼ確実に動く
という大きなメリットがあります。
ここで使うのが pyperclip です。
pyautogui × pyperclip の最小サンプル
まずはライブラリをインストールします。
pip install pyautogui pyperclip
次に、最小構成のコードです。
import pyperclip
import pyautogui
pyperclip.copy("こんにちは")
pyautogui.hotkey("ctrl", "v")
これだけで、
- 日本語文字列がクリップボードにコピーされ
- 現在フォーカスされている場所に貼り付けられます
※事前に、入力先のウィンドウ(メモ帳やテキストエリア)をアクティブにしておく必要があります。
よく使うので関数化しておく
この処理は何度も使うことになります。
関数にしておくと再利用が楽です。
def paste_japanese(text):
import pyperclip
import pyautogui
pyperclip.copy(text)
pyautogui.hotkey("ctrl", "v")
使う側は、こう書くだけです。
paste_japanese("こんにちは")
実際の業務ではこう使う
たとえば、メールやチャットで 定型文を入力する作業 では、かなり効果があります。
import pyautogui
import time
messages = [
"お世話になっております。",
"ご連絡ありがとうございます。",
"何卒よろしくお願いいたします。"
]
for msg in messages:
paste_japanese(msg)
pyautogui.press("enter")
time.sleep(0.3)
- 定型文を順番に入力
- Enterで改行
- 少し待って次へ
これだけでも、手作業より確実に速く、ミスも減ります。
使用時の注意点(重要)
pyautogui は便利ですが、画面操作を直接扱う分、注意点もあります。
- テストは必ずメモ帳などで行う
- いきなり業務ツールに使わない
- マウスを左上に動かすと停止する「FAILSAFE」を有効にしておく
import pyautogui
pyautogui.FAILSAFE = True
「怖いツール」ではありませんが、慎重に使う意識は大切です。
まとめ|日本語入力で止まった人へ
pyautogui で日本語が入力できないのは、あなたの理解不足でも、スキル不足でもありません。
Pythonの自動化では、
- できること
- できないこと
- その回避策
を一つずつ知っていくことが、一番の近道になります。
日本語入力という壁を一度越えると、Pythonは「難しいもの」から実務で使える道具に変わります。
この記事が、その一歩を越える助けになれば幸いです。
※補足
今回は pyautogui を例に解説しましたが、Pythonの自動化や環境構築で「毎回ここで止まる」という方は、一冊、体系的にまとまった解説書や学習環境を持っておくのも、迷いすぎないための一つの方法だと思います。
「全部を理解する」より、「迷った時に戻れる場所がある」方が、結果的に続きやすいことも多いです。
