パソコンを自動化する仕組みを探る(第50話)

Python PC自動化 RPA 業務効率化
パソコンを自動化する仕組みを探る

このカフェ開業ブログとは別に、生成AIに関するブログを同時進行で運用していたんですが、今は1つのドメインに対して検索エンジンからの流入数を増やすほうが得策と感じたので、生成AIブログの掲載した記事をこっちのブログに移行することにした。

というわけで少し唐突だけど、AIエージェントと云う、AIにパソコン操作を任せてしまう技術について書いていこうと思う。

まず、パソコンを自動的に操作するソフトウェアを使うと、人間が行うパソコン作業をほとんど再現できるという事実がある。ウェブアプリケーション開発者にとっては当たり前の知識だけど、IT業界以外の人にとっては驚きだろう。

プロフィール画像

「十分に発達した科学技術は、魔法と見分けがつかない」——アーサー・C・クラーク

ソフトウェアの名前に「マジック」と付くものが多いのも、その動きがまるで魔法のように見えるからなんだ。

ここからは、普段わたしが使っているWindowsパソコンをPythonで操作することを前提に話を続ける。

Pythonでパソコン自動化

Pythonって聞いたことあるだろうか?プログラミング言語の一つで、初心者でも比較的扱いやすいんだ。しかも、パソコン自動化やPC自動操作ツールの作成にとっても便利なんだよね。Windows自動化ツールの一種として、Pythonを使ってスクリプトを書けば、自分だけの自動化ツールが作れるってわけ。パソコン自動化をプログラミングで実現するなんて、まさに未来だよね。

PythonとRPA、Power Automateとの違い

さて、ここでよく聞かれる質問がある。それは「Pythonでの自動化と、RPAやPower Automateって何が違うの?」ってことだ。確かにどちらもパソコン自動化ツールとして使えるけど、アプローチや特性が異なる。

Pythonは、汎用性が非常に高いプログラミング言語で、細かいカスタマイズが可能だ。自分でコードを書くことで、自由自在に複雑な処理を組み立てられる。たとえば、ファイル操作、データの自動取得、ブラウザ操作、PC自動操作ツールの開発など、PC上で実行できることならほぼ全て自動化できる。Pythonの強みは、ライブラリやモジュールが豊富に揃っていて、必要な機能を簡単に追加できること。

一方、RPA(Robotic Process Automation)ツールは、コーディングの知識がなくても自動化ができるのが強みだ。たとえば、UIPathやWinActorといったRPAツールは、画面上の操作を録画して、その操作を再現するような使い方が主流だ。簡単に自動化ができる代わりに、細かなカスタマイズや特殊なロジックの実装には限界があるんだ。あと、UIが変更されたりすると動かなくなってしまうこともある(ここが厄介なんだよ!)。

Power Automateは、Microsoftが提供する自動化ツールで、Office 365との連携に優れているのが特徴だ。ExcelやOutlookなどのMicrosoft製品を中心に、自動化したい作業をGUIベースで簡単に作成できる。手軽さが売りだけど、こちらもRPAと同様、複雑なロジックや外部システムとの高度な連携には限界があることが多い。もちろん、Pythonと違って、自由にライブラリを追加して細かい制御をするのは難しいだろう。

つまり、Pythonはカスタマイズ性が高く、より複雑で高度な自動化ができるのが強み。一方、RPAPower Automateは、コーディングなしで簡単に自動化を実現できるけど、細かい制御には向いていない。

わたしがメインで使用する自動操作系パソコン自動化のPythonのモジュールは大きく分けて2つある。

  • キーボード・マウス操作
  • ブラウザ操作

キーボード・マウス操作でPCを自動化

まず、キーボード操作について説明してみよう。PC自動操作マクロと言えば、Excelのマクロなんかを思い浮かべる人もいるかもしれないけど、Pythonでも同じようなことができる

例えば、上司に今日の予定をメールで伝えるとき、私たちは次のような手順を踏むよね。

  1. Chromeを起動
  2. Gmailを開く
  3. メール作成ボタンをクリック
  4. 宛名に上司のメールアドレスを入力
  5. 本文に「今日は終日外回りです。」と入力
  6. 送信ボタンをクリック

この作業をキーボード操作の細部まで落とし込むと、こんな感じになるんだ。

  1. Windowsキーを押し、`chrome`と入力してEnterキーを押す
  2. `Ctrl + L`を押してアドレスバーにフォーカスし、`gmail.com`と入力してEnterキーを押す
  3. `C`キーを押してメール作成画面を開く
  4. `Tab`キーを押して宛先フィールドに移動し、上司のメールアドレスを入力
  5. `Tab`キーを2回押して本文フィールドに移動し、以下のように入力:
    • `変換`キーを押して日本語入力モードに切り替え
    • `kyouhashuujitusotomawaridesu.`と入力
    • スペースキーを押して変換
    • 変換候補から「今日は終日外回りです。」を選択(必要に応じて上下矢印キーで候補を選択)
    • Enterキーを押して確定
  6. `Ctrl + Enter`キーを押して送信する

普段はマウスを使う作業もショートカットキーや`Tab`キーを使うことでキーボードのみで操作が可能だ。

Pythonコードで自動操作を実現

次に、このキーボードの手順をPythonのコードに変換してみよう。ここでは`pyautogui`というフリーのPythonモジュールを使うよ。これはWindows自動化ツールの一種で、フリーソフトとして公開されているんだ。

import pyautogui
import time

# 安全のため、各操作の間に少し待機時間を設ける
pyautogui.PAUSE = 0.5

def send_gmail():
    # 1. Chromeを起動
    pyautogui.press('win')
    pyautogui.write('chrome')
    pyautogui.press('enter')
    time.sleep(5)  # Chromeが起動するまで待機

    # 2. Gmailを開く
    pyautogui.hotkey('ctrl', 'l')
    pyautogui.write('gmail.com')
    pyautogui.press('enter')
    time.sleep(5)  # Gmailが読み込まれるまで待機

    # 3. メール作成画面を開く
    pyautogui.press('c')
    time.sleep(2)

    # 4. 宛先を入力
    pyautogui.press('tab')
    pyautogui.write('boss@example.com')  # 上司のメールアドレスを入力

    # 5. 本文を入力
    pyautogui.press('tab', presses=2)
    
    # 日本語入力モードに切り替え(OSやIMEの設定によっては変更が必要)
    pyautogui.press('henkan')
    
    pyautogui.write('kyouhashuujitusotomaridesu.')
    pyautogui.press('space')
    time.sleep(1)  # 変換候補が表示されるまで待機
    pyautogui.press('enter')

    # 6. メールを送信
    pyautogui.hotkey('ctrl', 'enter')

こんな風にプログラミングすることが可能で、(微調整は必要だろうけど)実際に人間が作業するのと同じように動くんだ。多少プロセスに違いが出るかもしれないけど、同じ結果を得るのは容易なんだよね。

プロフィール画像

人間と違って、プログラムには疲労という概念がないので、このプログラムを何十回、何百回、何千回と繰り返すことができるんだ!

自動化プログラムの限界とジレンマ

しかし、自動化プログラムは曖昧な判断が必要な作業が苦手だ。

例えば、上記のメール送信プログラムを夕方に送りたいとき、「直帰します。」にしたい場合は、以下のようなコードを追加する必要がある。

from datetime import datetime

def get_message():
    current_hour = datetime.now().hour
    if 5 <= current_hour < 12:
        return "kyouhashuujitusotomaridesu."
    elif 12 <= current_hour < 17:
        return "kyouhashuujitusotomaridesu."
    else:
        return "chokkisimasu."

でも夏でも冬でも同じ時間?今日は祝日じゃない?そもそも直帰しないし?などなど条件が複雑になりコードも複雑になればなるほど、不具合が発生する可能性が増えてメンテナンスコストが上がるんだ。しかも、たまにしか発生しない作業を自動化すると、そのための開発時間や手間が割に合わないこともある。

仕事を自動化できる例はたくさんあるけど、全てが自動化に適しているわけではない。パソコンのRPAツールやフリーソフトもあるけど、たまにしか発生しない作業を自動化すると、逆に効率が悪くなることもある。自動化ツールとは何か、そのメリットとデメリットを理解することが重要だよね。

つまり、何でもかんでも自動化すれば業務が効率化するわけではないんだ。これが業務自動化のジレンマというやつ。

続く。

パソコンを自動化する仕組みを探る ビジュアルまとめ

自動化ツールの比較 Python • 高度なカスタマイズ • 豊富なライブラリ • プログラミング必要 RPA • 簡単な操作 • 録画・再生形式 • UI依存 Power Automate • Office連携 • GUIベース • Microsoft製品向け カスタマイズ性 ↔ 簡易性