パソコン操作を記録して RPA プログラムを自動生成してみた

# はじめに
デスクトップアプリのシミュレータの操作を自動化して結果を外部送信したくなったので、Python で PC 操作を自動化する必要が出てきました。しかし環境の異なる複数台のパソコン用に対して RPA プログラムを作成するのは非常に面倒です。
そこで今回、パソコン操作を記録して、その操作内容を再現する Python プログラムを自動生成するツールを開発してみました。土日の2日で開発したので、合計開発時間は15時間くらいだと思います。

# やりたいこと
キーボード入力とマウス入力、そしてその間の時間をそれぞれ取得し、記録し、Python の RPA プログラムを自動で生成するアプリを作成する。また、アプリの作成はパイプラインを通して自動で実行する。

# コンセプト
基本コンセプトとしては、①手軽で便利な言語（Python）で、② Rust 製のパッケージ管理ツール（uv）を使いつつ、③オシャレなフレームワーク（flet）でデザインを作成し、④入力取得用のツール（pynput）を元に操作を記録し、⑤自動操作用のライブラリ（pyautogui）で自動操作"実現します。そして、GitHub Actions を用いて実行ファイルの生成は自動で実行します。

ちなみに[こちらのアプリ](https://github.com/axel-magard/PyAutoGUI-Recorder)の操作性を参考にさせていただきました。

# 環境周り
①言語
Python 3.12.5

②パッケージ管理
uv 0.4.2

③デスクトップアプリ開発用フレームワーク
flet 0.22.1

④入力取得
pynput 1.7.7

⑤自動操作
pyautogui 0.9.54

# 開発
アプリのデザインは Claude Artifacts と相談しながら、ほぼ全て Cursor Composer を使って開発しました。デバッグのタイミングで若干 ChatGPT を使ったりもしました、ライブラリの新しい情報などは SearchGPT の機能の方が強いように感じます。生成 AI の開発能力は凄いもので、正直プログラムは１行も書かずに作りきってしまいました。
成果物やデモは下記リンク先にありますのでご興味ある方は是非みてみてください。

https://github.com/MySweetEden/operata

成果物のアプリはこちらからダウンロードできます。リンク先画面下部の「(OS名)-build-artifact.zip」です。
https://github.com/MySweetEden/operata/releases/tag/v1.0.0

何かバグや改善案あれば Issue にください。

初期画面はこちらです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511606/d5cfa376-48bb-330a-00f2-8919906af734.png)

Record ボタンを押してぽちぽちクリックするとこんな感じで操作が記録されていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511606/172585b3-c3d3-9aa1-5cec-08c8579c6d36.png)

この操作記録に応じて、Python での RPA プログラムがリアルタイムに自動生成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511606/05a0a2ee-202e-b775-8cdd-fd55dc23dfb4.png)

Run Code ボタンを押すとこのプログラムを実行し、実際に先ほどと全く同じパソコン操作を実施します。こちらで正しく操作が記録されていたか確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511606/9bb88b9b-d9dc-fff6-3e61-b266a5d7ab76.png)

Export Code からプログラムはダウンロードできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511606/48ef5932-8906-b469-459b-68441bf3472f.png)

Reset から全ての出力を消すこともできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511606/d5cfa376-48bb-330a-00f2-8919906af734.png)

# 自動ビルド
僕自身は Mac で開発していたんですが、Windows と MacOS の両方用の実行ファイルを作成したいと思っていました。ビルド時に複数環境の仮想マシンを使うなら、自分で環境をホストするか、どこか有料の SaaS サービスでも使うか、いずれにしろ大変そうだなと思っていました。しかし、どうやら今年から GitHub Actions を使えば無料で各環境の仮想マシンを使ってパイプラインを実行できると聞き（！）、使ってみることにしました。

GitHub Actions は触ったことがなかったので、flet をビルドする用の既存ワークフローの[こちら](https://github.com/ndonkoHenri/flet-github-action-workflows/tree/main/.github/workflows)を参考にさせていただきました。

GitHub Actions でのワークフロー作成の流れはだいたいこんな感じだったと思います。（うろ覚えでごめんなさい）
1. Actions を開いて New workflow を押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511606/ecb830db-d30c-568b-4762-0b27aca05601.png)

2. set up a workflow yourself を押す
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511606/f0c2f7f7-a91a-49be-d64d-24fb45ed6ce7.png)

3. [コード](https://github.com/ndonkoHenri/flet-github-action-workflows/tree/main/.github/workflows)をコピペして調整する
初めて使う人でも結構簡単だと思います。雰囲気は Dockerfile に近い気がしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511606/c3d63ac9-daa2-1e31-e207-3fe03f4f706c.png)

4. ワークフローの結果を確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511606/9deeecd3-b306-b7db-8a35-eaf018573503.png)

5. 成果物を見る
下の方に成果物が作られるのでダウンロードして起動したら使えます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/511606/82e60484-21ac-8944-5d7f-e59e2639ce26.png)

6. 別 OS についても 1~5 を実施する
必要に応じて[こちら](https://github.com/ndonkoHenri/flet-github-action-workflows/tree/main/.github/workflows)を参照しました。

# 振り返り
短期間でパッと開発できて楽しかったです。ただ、Cursor や Claude、ChatGPT あたりが凄すぎて正直プログラム書いた記憶がないんですよね。新しい技術を触るハードルが驚くほど低くなっているので、また何か近いうちに作りたいなと思いました。

# 参考
https://github.com/axel-magard/PyAutoGUI-Recorder
https://github.com/ndonkoHenri/flet-github-action-workflows/tree/main/.github/workflows