Enterprise Blue Ocean ◮

神谷町RPAブログ

  • Youtube で、あらためて振り返る RPA とは?・・・はこちら☆
  • Blue Prism の Blue Prism 事始め!オンボーディングの記事はこちら
  • Blue Prism を 無料で利用する 方法はこちら
  • Blue Prism で Excelを操作 する記事はこちら
  • Blue Prism の ベストプラクティス 記事はこちら
  • Blue Prism の 逆引きナレッジ wiki こちら。ご活用ください☆

Blue Prism でマインスイーパーを自動化する(改善編)

前回、とりあえず軽い気持ち

Blue Prism によるマインスイーパーの

自動化を行いました。

www.ebocean.work

 

今回は、ちょっとだけ真面目

取り組んでみます。

 

 

部品化をしよう

前回、使ったオブジェクトがこちら☆

f:id:EnterpriseBlueOcean:20200327201737p:plain

我ながら・・・ひどい出来だ。。

(もう、グチャグチャ☆)

 

調査や検証のフェーズなら、

こんなんでも意味はありますが、

ある程度、わかってきたら、

オブジェクトの作り、プロセスの作りを

考えることができます。

 

良く使う細かい処理を部品化する

まずは同じ処理がたくさんあるので、 

これをまとめていきます。

 

マインスイーパーなので、

セルの状態を調べるというのは、

基本的な処理であり、

多用される処理になります。

 

前回、書いたように、

セルの中身は HTML 的にこんな風になっているので、

f:id:EnterpriseBlueOcean:20200323185203p:plain

  • セルの場所(X, Y)を指定したら(入力
  • そのセルの数値開いてるかどうか旗が立ってるかどうかを調べる(出力

 みたいなアクションがあると便利です。

こんな感じですね。

f:id:EnterpriseBlueOcean:20200327202339p:plain

同様にして、

  • 左クリックしてセルを開ける
  • 右クリックして旗を立てる
  • セルの周囲を調べる

といった処理も、共通的なアクションにしていきます。

 

似たような処理を汎用的にする

最初に作った(ひどい出来の)オブジェクトでは、

「1」の周囲のセルを開ける処理とか

「2」の周囲のセルを開ける処理は、

それぞれ別々に作られていました

 

しかし、これらは本質的には同じ処理です。

要するに、そのセルの周囲に、

セルの値と同じだけ閉じているセルがあれば、

旗を立てるわけです。

こんな感じですね。

f:id:EnterpriseBlueOcean:20200327203443p:plain

f:id:EnterpriseBlueOcean:20200327203500p:plain

一方で、セルの値と同じだけ旗が立っていれば、

それ以外の閉じたセルを開けるわけです。

こんなときですね。

f:id:EnterpriseBlueOcean:20200327203530p:plain

f:id:EnterpriseBlueOcean:20200327203553p:plain

したがって、

  • 周囲に旗を立てる
  • 周囲を開ける

というアクションがあれば、

セルの値にかかわらず、使うことができます。

 

無駄な処理をなくそう

さっきの(ひどい出来の)オブジェクトでは、 

かなり甘い基準でクリックしています。

それこそ、すでに開いているセルを左クリックしたり・・・

(判定ロジックを作るのを後回しにした)

 

そのあたりにも、メスを入れます。 

 

無駄なクリックを減らす

まずはきちんと判定ロジックを入れ、

無駄なクリックを減らします。

 

たとえば、左クリックなら、

閉じている時だけ左クリックをします。

こんな感じです。

f:id:EnterpriseBlueOcean:20200327204224p:plain

  

調査が不要なセルを再調査しない

これも重要です。

セルの状態を調べて、セルの周囲も調査する

これが非常に時間がかかります

 

たとえば、セルの数値が0、つまり

何も書いてないセルの周りを調べても時間の無駄です。

 

また、すでに周囲に旗を立てきり、

周囲のセルを開け切った場合、

再調査は不要です。

 

これについては、

マインスイーパーのセル(初級だと9×9)と

同じ大きさのコレクションを用意し、

再調査の必要のないセルの場所を管理するようにしました。

  

改善後

改善後は、以下のような呼び出し関係になります。

f:id:EnterpriseBlueOcean:20200327212727p:plain

完璧には程遠いが、、

だいぶスッキリ☆

 

改善後の動きはこんな感じです。 

youtu.be

 

マインの配置が良ければ、

まぁまぁ見られるスピードになってきた。。

f:id:EnterpriseBlueOcean:20200327201529p:plain

やったぜ。

 

まとめ

  • ちょっとだけマインスイーパーの自動化を真面目にやった
  • 部品化と、処理の無駄を除いて、少しは見られる形にした 
  • 処理速度もまぁまぁ上がり、ようやくスタートラインに立てた? 

 

とはいえ、マインの配置が良くても、

100秒かかっちゃうんだな。。

 

もっと詳細な分析をしたい。。

プロセスマイニングとか、使えないだろうか・・・?

【Youtube 動画】 RPA の開発は誰がしてるの? -2.システム的な知識が必要なのか-

Youtube に投稿しました☆

youtu.be

  

人月の神話は、非常に良い本なのですが、

本当にわかりにくいです。

偶有的なんて言葉、使わないよね人生で。。) 

人月の神話【新装版】

人月の神話【新装版】

 

 

まぁでも、結論はシステム化手法

あるいはソフトウェア工学の積み重ねは

とても重要かつ有益で、

それを無視して

 

「夢の開発ツール!」

 

…というのは、

 

「永久機関を作りました!」f:id:EnterpriseBlueOcean:20200325210540p:plain

 

…というのと、大差ないような気がします。

(永久機関は物理法則を無視している)

 

BPM もそうですが、

RPA の本質的な価値

もっと言えば RPA の真実というのは、

こういうところにはなく、

もっと別のところにあると思います。

(次回は、そのあたりを掘り下げたい☆)

Blue Prism でマインスイーパーを自動化する(概要編)

在宅勤務ってよォ~・・・

こんな感じ👇☆

f:id:EnterpriseBlueOcean:20200323184859p:plain

 

Blue Prism でマインスイーパーを自動化する

事の発端はこの動画👇。

www.youtube.com

 

自分でやったらどうなるかな

という軽い気持ちで始めてみたが、、

なかなか手ごわい💦💦

 

「1」の周囲に旗を立てるだけで一苦労

こちらのサイトはWeb版のマインスイーパーで、

かなり識別しやすい構造になっている。

(セルごとにパスやクラス名、IDなどが一意になっている)

minesweeper.online

 

しかし、実際にマインスイーパーをプレイ

しようと思うと、これがなかなか一苦労である。

 

たとえば、「1」の周りに旗を立てようと思った場合、

・・・つまりこういう場合に、

f:id:EnterpriseBlueOcean:20200323185058p:plain

こうしたい感じだが、、

f:id:EnterpriseBlueOcean:20200323185138p:plain

このとき、HTML的には以下のようになっています。

f:id:EnterpriseBlueOcean:20200323185203p:plain
IDから、そのセルの位置情報を取ることができて、

クラス名(className)からセルの状態

(開いてる/開いてない、数字がいくつか)

を取ることができる。

 

後は、地道にIDやクラス名をチェックして、

  1. 「1」を探す
  2. 「1」の周辺が開いてるかどうかをチェック
  3. 一か所だけ閉じていたら、そのセルを右クリックして旗を立てる

でOK。

やった結果が👇

www.youtube.com

 

「1」の周囲に旗があったら、他を全部開ける

「1」の周囲に旗があったら、

他の周囲のセルを開けられます。

こんなケースがあったら、

f:id:EnterpriseBlueOcean:20200323190317p:plain

こんな風にできる。

f:id:EnterpriseBlueOcean:20200323190337p:plain

これも、さっきと同様に周囲のセルを調べて、

条件に合うセルを左クリックしていけばOK。

やった結果が👇

www.youtube.com

 

「2」についても、同様に処理していく

「1」について処理できれば、

「2」についても同様に処理できます。

(ちょっとだけ複雑にはなるが。。)

 

「2」で旗を立てられるのは、

「2」の周囲に閉じているセルが

2つだけある場合。

f:id:EnterpriseBlueOcean:20200323191201p:plain

 

「2」の周囲のセルを開けられるのは、

「2」の周囲に旗が2つ立ってる場合。

f:id:EnterpriseBlueOcean:20200323191300p:plain

 

これをやった結果が👇。

youtu.be

  

マインの配置にもよるが、

「1」と「2」を処理するだけで、

クリアできちゃうケースもあります☆

やったぜ。

 

まとめ

  • Blue Prismマインスイーパーを自動化した(Web版)
  • 技術的に難しいというより、アルゴリズムを考える勉強になるかも
  • いいリハビリになったぜ!

 

詳しい解説動画は、、

また別途~☆

(トンヅラ)