Pythonでマウス&キーボード操作を自動化!pyautoguiの使い方と応用例

Pythonでマウス&キーボード操作を自動化!

マウス操作やキーボード入力をPythonから自動化したいと考えたことはありませんか? そんなときに非常に便利なのが「pyautogui」というライブラリです。この記事では、pyautoguiを使ってPC操作を自動化する方法を、初心者向けに分かりやすく解説します。GUI操作の自動化や画像認識クリック、キーボード入力などをPythonで制御したい方は必見です。

pyautoguiとは?

pyautogui は、PythonでGUI(グラフィカル・ユーザー・インターフェース)操作を自動化するためのクロスプラットフォーム対応ライブラリです。人間が行うようなマウスの移動・クリックやキーボード入力をプログラムから再現することができます。

主な機能

  • マウスの移動、クリック、ドラッグ
  • キーボード入力(文字、キー送信)
  • スクリーンショット撮影
  • 画像認識による画面上の操作

pyautoguiのインストール方法

インストールは非常に簡単で、pipコマンドを使って以下のように導入できます:

pip install pyautogui

macOSやLinuxでは追加でpython3-tkscrotなどの依存パッケージが必要な場合があります。

pyautoguiの基本操作まとめ

まずは、よく使う基本操作から紹介します。

import pyautogui

# 画面サイズの取得
print(pyautogui.size())  # 例: Size(width=1920, height=1080)

# マウスを指定座標へ移動(1秒かけて)
pyautogui.moveTo(100, 200, duration=1)

# 左クリック
pyautogui.click()

# ドラッグ(押したまま移動)
pyautogui.dragTo(500, 500, duration=1)

# キーボード入力
pyautogui.write('Hello, world!', interval=0.1)

# 特殊キーの送信(Enterなど)
pyautogui.press('enter')

スクリーンショットの取得

画面のキャプチャを撮ることも可能です。

screenshot = pyautogui.screenshot()
screenshot.save('screenshot.png')

画像認識でクリックする方法

対象のボタンやアイコンを「画像」で指定して自動クリックすることができます。

location = pyautogui.locateOnScreen('button.png')
if location:
    pyautogui.click(location)

よくある使い方:

  • アプリ起動後に「OKボタン」などを画像で指定して押す
  • ゲームや業務アプリのボタン操作を自動化

実践例:メモ帳に自動で文字を入力

import pyautogui
import time

# メモ帳を手動で開いておく
print("5秒後に入力開始...")
time.sleep(5)

pyautogui.write("こんにちは、これは自動入力です!", interval=0.1)
pyautogui.press("enter")

エラー防止と緊急停止方法

pyautoguiには、安全対策も用意されています。

マウス移動で強制停止

マウスカーソルを画面の左上(座標 0,0)に移動すると、自動操作が強制終了されます。

pyautogui.FAILSAFE = True

実行速度を遅くする

操作が速すぎてうまく動かない場合は、間隔を入れましょう。

pyautogui.PAUSE = 0.5

pyautoguiでできること

pyautoguiを使えば、GUIアプリの自動テストや業務の自動化、ゲームの操作補助など、さまざまなPC操作をPythonで制御することが可能になります。実行中の安全対策もあり、安心して自動化処理を作ることができます。

これからPC操作の自動化に挑戦したい人は、まずはpyautoguiから始めてみましょう。繰り返し作業を効率化したい人や、自動入力・クリック処理を組み込みたいエンジニアに特におすすめです。

Visual Studio 2022でWinUI 3アプリ開発:空のアプリとパッケージプロジェクトの違いと選び方

空白のアプリ、Windows アプリケーション パッケージプロジェクトでパッケージ化(デスクトップのWinUI 3)

Visual Studio 2022でWinUI 3を使ったデスクトップアプリケーションを開発する際、多くの開発者が最初に直面するのが「どのテンプレートを選択すべきか?」という問題です。特に「空のアプリ、パッケージ化(デスクトップのWinUI 3)」と「空白のアプリ、Windows アプリケーション パッケージプロジェクトでパッケージ化(デスクトップのWinUI 3)」の違いについては、初心者から中級者まで迷うポイントです。この記事では、これら2つのテンプレートの違いと、それぞれのテンプレートがどのような場合に適しているかを詳しく解説します。

WinUI 3とは?

まず、WinUI 3とは、Microsoftの最新のユーザーインターフェース(UI)ライブラリであり、デスクトップアプリケーション開発において使われるUIフレームワークです。WinUI 3は、Windows 10およびWindows 11向けのネイティブアプリケーションを開発するための強力なツールで、Modern Windows UIのデザインに基づいたシンプルで美しいアプリケーションを構築することができます。

WinUI 3は、Windows App SDKの一部として提供されており、Windowsデスクトップアプリケーションに必要なすべてのコンポーネントを含んでいます。これにより、開発者は最新のUIコンポーネントやコントロールを利用して、視覚的に魅力的で高性能なアプリケーションを構築することができます。

「空のアプリ、パッケージ化(デスクトップのWinUI 3)」と「空白のアプリ、Windowsアプリケーション パッケージプロジェクトでパッケージ化(デスクトップのWinUI 3)」の違い

Visual Studio 2022 WinUI 3 新規プロジェクト

1. 空のアプリ、パッケージ化(デスクトップのWinUI 3)

“Windows UIライブラリ(WinUI 3)に基づいてデスクトップ アプリを作成するためのプロジェクトテンプレートと、Microsoft Store を介したサイドローディングまたは配布用のMSIXパッケージです。”

このテンプレートは、WinUI 3を使ったシンプルなデスクトップアプリケーションを作成するための基本的なテンプレートです。通常、最小限の構成で、開発者が自分でUIやロジックを追加する形になります。主に以下のような特徴があります。

特徴

  • 単一のプロジェクト構成: アプリケーションのソースコードと設定ファイルがすべて1つのプロジェクトに含まれます。
  • パッケージ化: アプリケーションはMSIX形式でパッケージ化され、デスクトップアプリとして配布するための準備が整っています。
  • 簡単なスタート: このテンプレートは、開発を始めるための最小限のセットアップを提供するので、すぐにアプリの構築を開始できます。

使用シーン

  • シンプルなデスクトップアプリケーションの開発
  • 最初から複雑な構成を必要とせず、軽量で素早くアプリを作りたい場合
  • 少ない依存関係でアプリを作成したい場合

2. 空白のアプリ、Windowsアプリケーション パッケージプロジェクトでパッケージ化(デスクトップのWinUI 3)

“Windows UIライブラリ(WinUI 3)に基づいてデスクトップ アプリを作成するためのプロジェクトテンプレートです。Microsoft Store を介してサイドローディングまたは配布するための MSIX パッケージを作成するために Windows アプリケーションパッケージ(WAP)プロジェクトが含まれています。”

このテンプレートは、より複雑なアプリケーションを作成する際に適しています。特に、複数のプロジェクトを一元管理したい場合に便利です。このテンプレートを使用する場合、アプリケーションのソースコードはもちろん、パッケージングに関する設定やマニフェストファイルなどを管理するための複数のプロジェクト構成が含まれます。

特徴

  • 複数プロジェクトの構成: アプリケーション本体とパッケージング用のプロジェクト(.wapprojファイル)が別々のプロジェクトとして管理されます。
  • パッケージのカスタマイズ: 複数のプロジェクトをまとめてMSIXパッケージにするため、パッケージの構成やマニフェストのカスタマイズが可能です。
  • 拡張性: より大規模なアプリケーションに対応できる構成になっています。

使用シーン

  • 複雑なデスクトップアプリケーションの開発
  • 複数のアプリケーションやライブラリを1つのMSIXパッケージにまとめたい場合
  • パッケージマニフェストを個別にカスタマイズしたい場合
  • 複数のプロジェクトを一元的に管理する必要がある場合
空白のアプリ、Windows アプリケーション パッケージプロジェクトでパッケージ化(デスクトップのWinUI 3)

主な違い

項目空のアプリ、パッケージ化空白のアプリ + パッケージプロジェクト
構成単一プロジェクト複数プロジェクト(本体 + パッケージ)
カスタマイズ性限定的高い(マニフェスト含む)
用途小規模~中規模のアプリ向け中~大規模のアプリ向け
拡張性少ない高い

どちらを選ぶべきか?

1. シンプルなアプリケーションの開発を始めたい場合

もし、素早くシンプルなアプリケーションを作成したいのであれば、「空のアプリ、パッケージ化(デスクトップのWinUI 3)」テンプレートが最適です。このテンプレートを使用すれば、最小限のコードと設定で、すぐにアプリケーション開発を開始できます。

2. 複数のプロジェクトを管理したい場合

もし、アプリケーションが複雑で、複数のプロジェクトやライブラリを一元的に管理する必要がある場合や、パッケージングに関する細かなカスタマイズが必要な場合は、「空白のアプリ、Windowsアプリケーション パッケージプロジェクトでパッケージ化(デスクトップのWinUI 3)」テンプレートを選択することをおすすめします。

まとめ

WinUI 3を使用したデスクトップアプリケーションの開発には、「空のアプリ、パッケージ化(デスクトップのWinUI 3)」と「空白のアプリ、Windowsアプリケーション パッケージプロジェクトでパッケージ化(デスクトップのWinUI 3)」の2つのテンプレートがあります。どちらのテンプレートもMSIXパッケージでのアプリケーション配布に対応していますが、プロジェクト構成において大きな違いがあります。自分の開発したいアプリケーションの規模や複雑さに応じて、適切なテンプレートを選択することが重要です。

WinUI 3 / XAML の Grid.Width 設定方法

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED