1. UmegayaRollcake

    Posted

    UmegayaRollcake
Changes in title
+【UiPath】見えないRPAロボットに受肉してみた
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,102 @@
+RPAロボットはソフトウェアなので実体が無く姿が見えません。
+PCの画面上で次々にアプリケーションを起動して操作してくれる様は映えるんだけど、宗教における仏像とかキリスト像と同じように、姿を具現化した偶像が無いと私のような大衆は**イマイチ萌えない**わけです。
+
+というわけで、今回は姿の無い**RPAロボットに受肉を試み**ようと思います。
+【目に見える姿を与えたRPAロボットのイメージ】
+![gxvdemo.gif](https://qiita-image-store.s3.amazonaws.com/0/255097/fc3391c2-6b71-8807-1732-8c9d0e92f8d9.gif)
+名前はとりあえずUmemaruから取ってウメ子にします。
+
+# まず肉体=デスクトップマスコットを作る
+利用するソフトウェアは以下。個人利用なら全部タダで使えます。
+お絵かき:GIMP
+モーション付け:Live2D([Live2D Cubism 3 FREE](https://www.live2d.com/ja/download))
+アプリ化:Unity([Unity Persional](https://store.unity.com/ja) )
+
+受肉する手段は何でもいいのですが、個人的にLive2Dに興味があったので今回チャレンジ。Unity用に強力なSDKが用意されているのもポイント。
+デスクトップマスコット自体の作り方だけでかなりのボリュームなので、そこはLive2DやUnityに詳しい人の記事にお任せして、ここでは簡単に手順だけ紹介。
+
+1. GIMPで動かす部位毎にレイヤー分けしてパーツを描く
+2. 全部のパーツが出来上がったらPSDにエクスポート
+3. PSDをLive2D Editorに読み込んで動くモデルを作る([公式チュートリアル](https://docs.live2d.com/cubism-editor-tutorials/psd/))
+4. 作ったモデルにLive2D Animatorでモーションをつける(チュートリアル+[公式マニュアル](https://docs.live2d.com/cubism-editor-manual/animation-preparation/))
+5. UnityにLive2D SDKをロードし、Live2Dから出力したファイルをインポート→Asset化される
+6. UnityでSDKコンポーネントを活用しつつ、追加でスクリプト書いたりAnimatorで動作を制御する
+7. モデルの背景を透過するために [Unity_TransparentWindowManager](https://github.com/XJINE/Unity_TransparentWindowManager) パッケージを利用
+8. Windowsアプリケーション用にビルドしてデスクトップマスコット完成
+
+Live2D公式で動作保障してるPSD作成ソフトはPhotoshopとCLIP STUDIOの2つですが、別にGIMPでもいけます。ただテクスチャアトラス作成時に解像度の修正が必要だったので、コメントに要望いただければその部分も追記します。
+
+# ロボットマスコットの状態遷移
+今回は超簡単に、こんな状態遷移でマスコットを動かします。
+![transition.png](https://qiita-image-store.s3.amazonaws.com/0/255097/eea364e4-ac5b-2e37-c4ff-b9059520cd53.png)
+オートメーションが動いてなければ居眠り、動いている間はランダムでモーション動かし、終わったら次の実行までまた居眠りに戻る。動いているはずのタイミングで寝てたら、何かのトラブルで止まっている事がわかるというわけです。
+
+この状態遷移をUnityで実装するのですが、オートメーションが実行中かどうかを判断する必要があります。
+
+# UiPathロボットプロセスを監視する
+UiPathロボットがオートメーションを実行している間は"UiPath.Executor.exe"というプロセスが上がっているので、その有無を条件判断に使います。
+
+UnityのAnimatorにisRunningというbool型のパラメータを用意して、それをExecuting(活動)⇔Sleep(居眠り)のtransitionのConditionsに使います。
+![animator.png](https://qiita-image-store.s3.amazonaws.com/0/255097/9a3f8a47-ec21-8090-de6f-269aea65e636.png)
+
+で、UiPath.Executorを監視するスクリプトをGameObjectにアタッチすればOK。
+
+```UiPathProcessController.cs
+using UnityEngine;
+using System.Diagnostics;
+
+namespace UiPathController
+{
+ /// <summary>
+ /// UiPathのProcessに応じてGameObjectの状態遷移を行う
+ /// </summary>
+ public class UiPathProcessController : MonoBehaviour
+ {
+ Animator animator;
+
+ private void Start()
+ {
+ animator = GetComponent<Animator>();
+ }
+
+ void Update()
+ {
+ try
+ {
+ foreach (Process p in Process.GetProcesses())
+ {
+ if (p.ProcessName.Equals("UiPath.Executor"))
+ {
+ animator.SetBool("isRunning", true);
+ break;
+ }
+ else animator.SetBool("isRunning", false);
+ }
+ }
+ catch
+ {
+ }
+ }
+ }
+}
+```
+
+#できた
+というわけで無事にロボットへの受肉を終えたため、その様子を動画にしてみました。
+
+<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">見えないRPAロボットに受肉してみた(Qiita掲載用)<br>この子がウチのUiPathです。<br>基本寝てますが、オートメーションの実行中だけ動きます。<br>(受肉にあたりLive2DとUnityにお世話になりました) <a href="https://t.co/kAHJr9zftp">pic.twitter.com/kAHJr9zftp</a></p>&mdash; Umemaru (@UmegayaRollcake) <a href="https://twitter.com/UmegayaRollcake/status/1077910835798761472?ref_src=twsrc%5Etfw">2018年12月26日</a></blockquote>
+<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
+
+まあ自宅だとしょっちゅうオートメーションを動かすわけじゃないから、ほとんど寝てるんですが。
+う~ん会社に連れていきたいなぁ・・・でも絶対怒られるよなぁ。
+
+---
+今回はここまで。
+デスクトップマスコットを作るのに、平面イラストを3Dっぽく動かせるLive2Dという技術を使いました。
+
+このLive2D、2010年頃からいくつかのゲームに使われるようになって、最初に存在を知った時は
+「何その中途半端な技術プークスクス」
+とか笑ってましたが、改めて[公式サイト](https://www.live2d.com/ja/products/cubism3)を訪れてみると・・・
+
+すみません大変素晴らしい技術です。世界中の二次元に住む人々に夢を与えてくれます。個人ならFREE版使えるし、公式のチュートリアルビデオもあるので一人で勉強できます。
+Unityもそうですが、個人でタダで勉強できて好きに使える点はUiPathと同じですね。こういう製品大好きです。