Batasan Blog

人類みな五十歩百歩

クラウドパソコンでRPA#2

クラウドパソコンということで、WebARENA Indigoという日本ローカルではあるがNTT系列のサービスであり、2CPU2ギガメモリで月額最大700円とまずますリーズナブル(と思う)な価格のものを使い始めた。おうちパソコンのdynabook N40はシンクライアントとして第2の人生(笑)を歩み出した。AWS Workspacesの時に躓いてしまったSikulixだが、結論から言うとUbuntuをインストールした今回のクラウドパソコンでは何の問題も無く稼働している。
今回クラウドパソコンでRPAで使うにあたって一つ確認したいことがある。クラウドパソコンVNCで接続していない時に画面の 解像度がどうなっているか? である。何を言っているかわからないと思うが、私もあまりわかっていない(笑。20年前くらいにまだ現役の技術者だった頃、仕事もオタク的な活動もほとんどコマンドラインで勝負していた(笑。もちろんX-WindowやWindowsも使っていたのだが、それらは見よう見まねで自分が困らない範囲で使っていた。なのでこのあたりは全くニガテなのである。ちなみにコマンドラインというのはいわゆるCUIとかシェルとか言われているもので、マウスを使わないコンピューターの世界である。Windowsが発売される前のMS-DOSみたいなモノと思ってもらうと良いかもしれない。
そもそもRPAというのはマウスを使う文化の中のモノである。マウスを使わない世界ではコマンドしかないので、RPAなどという概念を持ち込むまでもなく、コマンドを並べて書いたモノを上から順番に実行すれば良いだけである(もちろん多少のロジックはある)。いわゆるスクリプトというやつだ。RPAというものが出て来る前は、たとえネットサーフィンをするにもスクリプトやプログラムからhttpで情報取得してからタグ解析というのをさんざんやった覚えがある。しかし現代のようにここまで画像や映像に加えてCSSなどが発達して来ると、タグ解析による情報処理が複雑で大変なので、それなら人間が見えている世界、視覚とマウスとキーボード操作をそのまま自動化したほうがシンプルで手っ取り早くなってきた、それがRPAということだろうと思う。
Windowsでもそうだし、Linuxでも最近はパソコンの画面の大きさや接続したモニターの解像度を把握してほとんど自動的に設定してくれる。RPAを実行するにあたって、当然解像度が変わるとあらかじめ用意したボタンや入力フィールドなどの画像と一致しなくなったりするので、解像度は把握しておかなければならない。ところがクラウドパソコンでのRPA実行中はおうちパソコンから繋いでいない状態で放置しておくので、その間画面は物理的にはどこにも出力されていない。しかしRPAは人間には見えてないアプリのWindowの位置や内容をちゃんと把握して動いてくれている。その時画面の解像度がどうなっているのか? というのが私の疑問なのである。
結論から言うとクラウドパソコンでRPA実行中は、物理的に画面がどこにも出力されていなくても、モニターはつながっていることがわかった。XRandRというツールがあり、これはLinuxなどでX-WindowのResizeとRotateをやってくれるアプリなのだが、これでVNCは接続せずssh接続のみの状態で実行してみると、

$ xrandr
VNC-0 .....
$ xrandr
VNC-0 .....

クラウドパソコン側ではVNCアプリ(vncserver)が立ち上がっているので、それがモニターなのである。つまりvncserverが起動された時点ですでにOSから見るとモニターが接続されており、それをおうちパソコンからVNCアプリで見てるかどうかはOSやRPAにとってはどちらでも良いことだったのだ。なのでおうちパソコンからクラウドパソコンでRPAを実行する場合は、VNCで接続する必要はかならずしもなく、ssh接続だけで、

$ xrandr --output VNC-0 mode=1920x1080
java sikulix ...
$ xrandr --output VNC-0 mode=1920x1080
java sikulix ...

などと最初に解像度を指定して実行すれば問題ないことがわかった。おうちシンクライアントであるdynabook N40でマウス用アプリ(いわゆるデスクトップ)を立ち上げるのは正直少し辛くなってきてたのだが、コマンドラインだけからRPAを実行できることがわかったので、もう少し活躍してもらうことにしよう(笑。