岡三RSSで再ログインするRPAを構築する方法~Windowsタスクマネージャー~

情報の熱量

特定の時間になったら●●アプリを開いて「ログイン」ボタンを押す。
その後、アプリ内の××ボタンを押して、それから Excel を開いて…。
特定の時間になったら Excel を保存して終了。
そして、アプリを閉じる。
そんなようなことを、できたらいいな。

ハーイ、バイブコーディングの申し子、コンバット(クリムゾン)越後です。
今回は地味ながらも重要な「定刻になったらアクションを実施」の顛末を大公開です。

RPAとは何か?

今や全盛のAI業務に比べると、少し古い技術となりますが、使い方次第では有効となる場面もあることでしょう。

私のケースでは、
①朝5:00すぎにExcelを保存して終了、アプリを終了させる。
②朝8:00すぎにアプリを起動してログイン、Excel連動ボタンを押してRSSを開く。
③RSS(値動きがリアルタイムに変わるExcelファイル)から記録用のxlsmを開く。

まあ、細かいことを言うと、上記以外にも実行アクションがあるのですが、だいたいこんな感じですね。
アプリというのは、岡三証券のネットトレーダー365です。
CFDである「くりっく株365」の情報を得ることができます。

自動書記の限界

相場の値動きを細かく記録して、データを得る。
ネット上に本当に欲しいデータが存在しないのなら、自らの手でそれをつかむしかありません。

1分毎に日経、ダウ、ナスダックなどの「買気配」「売気配」を記録します。
これで、スプレッドによる損失もシミュレーションに盛り込めます。
人間が人力でやったら、とても大変な仕事を肩代わりしてくれるのはいいですね。
この調子で数か月分の記録を作ろうと思ったのですが…。

最初に作ったモデルは、朝の5:00過ぎで記録を止めました。
平日の5:00~8:30くらいは相場が動かない時間です。
(厳密には欧米でサマータイムを導入している時期はENDが5:00、冬季になるとENDは6:00となります)
相場が動かない時間を経て、9:30の東証オープンを前にすると再びチャートが動き出します。

これで、再び自動書記が再開してくれたら良かったのですが、そうはならず。

どうも、岡三のアプリを一度閉じて、再び開いて再ログインする必要があるみたいです。

毎朝、8:00すぎに会社に出発する…みたいなルーチンを持つ人にとっては手動で再ログインすれば済む話。
しかし、不定期な時間に起床・出社する民にとっては再ログインをすることが困難です。
それに、毎朝定刻出社の人にしたって「祝日」だとか「出張」だとか「不測のトラブル」などで再ログインできないとき…あると思います。

何時にログイン切れするのか?

「営業日が更新された為、再度ログインしなおして下さい。」
選択肢 ”OK” のみ

このダイアログが登場するのがAM6:00であること、確認できました。
サマータイム期ではないのなら、時間がずれる可能性はあります。
しかし、チャートが動くのが夏季5:00END、冬季6:00ENDですから年中6:00締めの可能性も高いです。

平日の朝に「再度ログインしなおして下さい」、この言葉に従って再度ログインすると、再ログインを要請するダイアログは出ませんでした。
つまり、再ログ成功です。

では、月~金の朝、6:00~8:30の間に家に確実にいるし、ほぼ起きているという生活リズムであれば人間が3分弱パソコンをポチポチするだけです。

自動再起動プログラム(RPA)が別に必要ない、そう思った人も多いのではないでしょうか?
必須ではないと感じた人は、わざわざやることもないです。
生活リズムの問題ですね。

日本三大RPAツール

じゃあ実際にどうやってRPAするのか?
今回、私は利用していませんが、こういった内容を得意としている企業も存在します。
下記に紹介するのは、有名どころのウェブサイトです。

WinActor® | 業務効率を劇的にカイゼンできる純国産RPAツール
国内シェアNo.1RPAツール「WinActor(ウィンアクター)」公式サイトです。製品説明の他に導入事例、イベント情報やライブラリ・シナリオなどの部品を提供、販売店の紹介をしています。AIや既存システム連携による自動化でDX推進に貢献しま...

上記は企業向け(BtoB)っぽい趣向ですね。

UiPathオートメーション プラットフォーム:エージェンティック オートメーションでAI変革を推進 | UiPath
UiPathオートメーション プラットフォームでビジネスを強化します。エージェンティック オートメーションを活用し、AI変革を推進してワークフローの効率化と生産性の向上を実現します。

こちらも似たような雰囲気ですが、ニューヨークに本拠を持つグローバル企業らしいです。

面倒な単純作業を自動化し、 繰り返しから解放するRPAツール「BizRobo!」
楽しい時代に進化する日本のRPAはBizRobo!からBizRobo! LAND 2019 Tokyoお申し込みコード:BLfWfw6iD0Learn moreINFORMATION2019年08月29日デジタルレイバーとの協働を実現 現状

サイトの雰囲気的に個人利用にも向いていそうです。

おそらく、サーバーに自動活動プログラムを設置して24時間365日「安心・安全」な体制のもとに各種業務を実行してくれるのだと思います。
私は1台のPCをレコーディング専用にして、ローカル環境下かつ無料で実施したかったので上記サービスの利用は見送っています。

自動ログインの方針

・Windows(OS) の設定
・タスクスケジューラ―による予約起動
・Pythonによるカーソル操作プログラム

今回はこの3本柱でいきます。

Python(プログラム言語の一種) を使うのは、AIにお願いしたらソレっぽいスクリプトを提供してくれるからです。
ちなみに記録システム自体は、Excel のマクロ(VBA)を使っています。

Excel依存度が高く、極めてマイクロソフト濃度が高いプロジェクトとなっていますが、肝心の岡三アプリ(ネットトレーダー365)がそ~じゃないのが惜しい。
だから、Power Automate では実現できないと思います。

ここは汎用性の高い Python が適任です。
様々なサービスを組み合わせます。

Python では「ネットトレーダー365」を開く。
上記のログインボタンを押す(座標or画像指定)。
上記の「Excel連動ボタン」を押す(座標or画像指定)。
登場したRSS(岡三が提供する値動きを表示するExcel)から、記録用のExcelを開く。

このようなことを行います。
つまり、指定した座標をクリックする、指定した画像のアイコンをクリックする、キーボードの操作(エンターを押すなど)などが可能です。
一応、マススとキーボードの操作が可能です。
他にもファイルを開いたり、特定のアプリケーションを前面に配置するなども実施できます。

Windowsのタスクスケジューラーをもっと使いこなす
プログラムを定期的に実行する、あるいは起動時やログオン時に実行したいとき、タスクスケジューラが利用できる。

タスクスケジューラ―はWindows 管理ツールの一種で、例えばセキュリティソフトが「ログイン時」をトリガーに起動したり、更新有無確認プログラムが「1時間毎」に起動したり…、などビデオの録画予約みたいなものです。
これはちゃんと説明すると長くなりますので割愛しますが、exe化したPythonアプリの起動をタスクスケジューラ―で行っています。
開始処理を月~金の朝8:10に行って、終了処理を火~土の朝5:10に行って…みたいな予約を入れています。

OSの設定では、スリープをしない設定、画面ロック(PINやパスワード要求)をしない設定にしましたが、画面オフ(一定時間で暗転)は有効にしました。
記録している間(平日のほぼ一日中)、画面が表示されっ放しというのは、嫌ですからね。
電気を消しても明かりが付いているのは鬱陶しいですからね、それに画面が焼き付くかもしれないですしね。
ただ、このせいで正常に作動しないと気づくまで結構な時間がかかりました。

タスクスケジューラ―を手動で実行して ― つまりは開始のタスクと終了のタスクですが ― どちらの処理も想定通りに起動することを確認できました。
また、タスクスケジューラ―が予約時間になったら開始されることも確認できました。

だけど、何だかうまくいかないなあ…。
え~、いったい何が悪いのか?

画面ロック…するなよ

スリープというのは、シャットダウンに近い状況です。
処理は中断されてしまいます。
画面オフは、画面が真っ黒になるだけで処理は継続されています。
今回のプロジェクトでいうなら、記録用Excel に1分毎に値動きを転記する処理ですね。

一定時間経過後に画面ロックしないという設定にしても、暗転から復帰させると↑このような画面になりますね。
マウスでドラッグしたり、エンターキーを押したりしたら元の画面に復帰しますが。

画面をオフにしたまま、終了や開始のタスクを実行しようとしたら、内部的にはコレ系の画面が上層に表示されている状況みたいです。
この状況だと、特定のアプリを最前面にしようとしても失敗します。
最前面にできなければ、Python で実施するべき操作系がうまく作動しないのです。

かなり重要なところです。
これは コードの問題というより、Windowsの画面状態の問題 と考えた方がよいです。

結論です。

pyautogui系RPAは、画面が使える状態でないと失敗します。
特に今回のように

  • Excelを前面化
  • ボタンをクリック
  • Alt+F4 / Ctrl+F4
  • 画像認識

を使うRPAは、ログイン済み・画面表示あり・デスクトップ操作可能 が前提です。

ChatGPT

それで、結局のところ…
終了タスクと開始タスクの2~3分前に、マウスでドラッグしたりエンターキーを押したりというスクリプトを仕込んだ、画面活性化タスクを追加することになりました。
本番のタスクが始まるちょっと前に、真っ黒だった画面がパッと復活して表示されます。
いかにもうまく動作しそうな挙動ですが、実際にうまくいきました。



大事なことを言いますよ。
AIさんに答え(トラブルの解決方法)を求める場合…

アナタの言う通りにやっているのに、うまくいかない。
何でだ?
僕はいったいどうしたらいいんだ?

こんな風に質問しても無駄です。
私は間違えていません、的な不毛な回答を得るのみデス。

パスワードを要求される画面ロックは設定から外した。
だが、暗転した画面オフから戻る際に風景画みたいなものが表示される。
この状態だと、自動操作がうまくいかないのではないかと推察する。
では、どう解決したらいいと考える?

こんな風に質問したら有意義な回答を得られます。

えっ、自力で答えに半分たどりついているじゃん。
そうなんですよね~。

××が原因で○○がうまくいかないから、解決策を教えて。
こういう風に聞かないと、まったくもって見当違いな答えを差し出される可能性があります。
要注意です。

コメント

タイトルとURLをコピーしました