今、最も人気があるプログラミング言語のひとつ、Python を使って RPA を実現しつつ、プログラミングの基本も学ぼうという欲張り企画その1 です。
今回は、比較的シンプルなPyAutoGUIを使って基本的なことを学んでみましょう。
※この記事は、プログラミング初心者向けです。Python や プログラミングがすでに扱えて、PyAutoGUIの概要だけ知りたい方は、前半は飛ばすか別の文献を当たることをおすすめします。
※高機能なGUIがあるにも関わらず、あえてプログラミングが必要な Python で RPA を実現する理由と、Pythonのインストール方法は以下のページを参照
- pipの使い方、アップデート
- Python の基本中の基本
- PyAutoGUIの使い方
- PyAutoGUIのメリット・デメリット
pipの使い方、アップデート方法
※本ブログの記事は、基本的に使用者の多いWindows OSを前提として解説していきます。
Python をインストールした直後の場合、Python のパッケージ管理ツールである、pipのバージョンが古い場合があります。
そこで、まずはpipのアップデートを行います。
コマンドプロンプト、またはPowershellを起動します(Windows10の場合、スタートメニューを表示した状態で、cmdと入力すると早いです)。
その状態で、
py -m pip install --upgrade pip
と入力し、Enterをします(上記はBashとなっていますが、コマンドプロンプト、またはpowershellだと思ってください)。
pipの新しいバージョンがある場合には、自動でダウンロード、インストールが行われます。
ここで、上記のコマンドについて簡単に説明します。
py は python ランチャー
pythonを起動するのだから、通常コマンドはpython になります。ただ、Windows環境ではPython ランチャー py を使って、適切なバージョンの python を起動させるのが一般的です。
もちろん、インストール時に python.exe にパスを通していたり、フルパスでpython.exe を指定することも可能です。
ただ、pyを使ってもバージョン指定は可能なので、よほど強い理由がなければpyを使った方が無難でしょう。
py -m pip でpipを起動
ここは決まり文句だと思ってもらって大丈夫です。
python のパッケージ管理の場合は、py -m pipまでが基本です。それ以後がinstall だったり、–upgradeだったりと変化していきます。今回の例の場合、pipを使ってpip自体をupgrade installしているということになります。
PyAutoGUIのインストール
では続けてPyAutoGUIをインストールしてみましょう。インストールのコマンドは、
py -m pip install pyautogui
となります。簡単ですね。今回は、初回installを想定していますので、pipのアップデートと違い、–upgradeオプションをつけていません。
上記のコマンドを入力してEnterを押すと、PyAutoGUIに加えて、関連パッケージも一緒にインストールされます。これは、Pythonに限らず、メジャーなプログラミング言語のパッケージ・ライブラリ管理ツールで実装されているとても便利な機能です。
ただ、ときどき、こういった必要なパッケージ(依存関係にある、といいます)のインストールにエラーが出たり、ダウンロードURLの変更に対応していなかったりすることがあります。そういった場合には、自分で原因を解消する必要があることは覚えておきましょう。
PyAutoGUIの場合には、大体、
- pyrect
- pyperclip
- PyTweening
- pygetwindow
- mouseinfo
あたりのパッケージが同時にインストールされます。もちろん、併用できるパッケージやモジュールはこれだけではなく、自由に組み合わせることができます。
Python には、ライブラリ、パッケージ、モジュールといった呼び方の違いがあり、初心者の混乱を招くことがあるので簡単に解説します。
pipで管理するパッケージとは、モジュールをまとめたものです。
では、モジュールは何かというと、python スクリプトが記述された、拡張子.pyのファイルがモジュールと呼ばれます。ですので、特に配布しなくても、本記事でこの後書く、RPAを実現する.pyファイルもモジュールということになります。
パッケージに戻ると、プログラミングにおいては、ひとつの目的をもっていても、ひとつのファイルの中にだけプログラムを記述することは多くありません。あまりに1つのファイルが大きいと整理しづらいですし、複数の人で開発するのも難しくなるからですね。
そこで、目的にあわせてひとまとまりにしたものをパッケージとします。アプリケーションとの違いは、それ単体で実行するということは少なく、それらを利用して別のPythonスクリプトを記述して、プログラム・アプリケーションとして完成させることが最終的な目的となることでしょう。
最後にライブラリですが、プログラミングの世界における慣用表現のようなもので、Pythonプログラミングにおいて明確な定義はないようです。直訳すると「図書館」となるように、パッケージやモジュール、それに含まれる関数などの機能を、図書館の文献のように参照して利用するようなイメージです。ですので、パッケージのことともいえますし、それに含まれるモジュールや関数のことともいえます。
とはいえ、慣用的には複数のパッケージを利用してプログラムをすることを、「パッケージをたくさん入れて」というよりは、「ライブラリを利用して」と言った方が通りがいい、とかそういった程度の内容だと思っておけば問題ないでしょう。
対話モードでPyAutoGUIを使ってみる
プログラムというと、メモ帳などのエディタを使ってコードを記述してから実行する(あるいは、コンパイル、ビルドしてから実行する)というイメージがあるかと思います。しかし、Python には対話モードといって、プログラムを1行1行入力して都度実行していくモードが備わっています。ちょうど、コマンドプロンプトのようなものですね。
実は、Pythonのようなインタープリタ型言語には、この対話モードが備わっていることが多いのですが、今日では利用されることが減りました。とはいえ、Pythonの主要な活躍の場のひとつである数値計算・統計・データサイエンスの分野では対話モードは便利に利用されますので、触れておきましょう。
コマンドプロンプトで、単に「py」を入力してEnterを押します。すると
C:\Users\User>py
Python 3.10.0 (tags/v3.10.0:b494f59, Oct 4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
上記のように表示され、対話モードとなります。ぱっと見ではコマンドプロンプトとあまり変わりませんが、受け付けるコマンドがPythonのものとなります。
ここで、PyAutoGUIで、マウスの座標を取得する position() 関数を実行してみましょう。
>>>pyautogui.position()
と入力し、Enterを押します。すると……
>>> pyautogui.position()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'pyautogui' is not defined
上記のようにエラーが表示されてしまいます。PyAutoGUIをインストールしているのに、なぜでしょうか?
実は、Pythonに限らず、プログラミングの世界においては、パッケージ(ほか言語も含めると、いわゆるライブラリ)をインストールするだけでは使えずに、これからそのパッケージを使うと宣言して、プログラムに準備させる必要があります。逆に、インストールされていないパッケージを宣言すると、そこでエラーとなります。
では、宣言を含めて書いて見ましょう。
>>> import pyautogui
>>> pyautogui.position()
Point(x=1192, y=1547)
>>の行は続けて入力しましょう。
importの行でEnterを押しても何も表示されませんが、それで正解です。綴りを間違えていたり、PyAutoGUIがインストールされていなかったりすると、逆にエラーが表示されます。便りがないのはいい知らせ、ですね。
2行目は、先ほどと同じですが、続いて出力される内容が先ほどの