スキップしてメイン コンテンツに移動

UiPath設計時にMSA(Micro Software Architecture)式の切り分け方

イメージがあまりなくてつまらないと思いますが、自分の経験のコツを共有したく設けたページになります。


RPA(Robotic Process Automation)を利用して色々やってます。

大手のK様から個人の趣味までRPAの使い方は幅広いし一つだけではなくいくつかの自動化ツールを利用してRPAを進めてます。

今回はUiPathを利用して開発するときの設計の切り分けをどうすべきかとの個人の意見を書いてみます。

UiPath(https://www.uipath.com)はご存じの前提で始めます。

まず、

MSA式というのを考えてできるだけ細かく切ります。

しかし分けすぎると多くなってしまい逆に管理が困ります。

UiPathの特徴は「単純作業の自動化」から「ML(マシンランニング)」の複雑な組み合わせが楽なこと。

ということで

自分でよくやってるのをチェックします。

* メールの確認
* グループウェアのチェック
* スケジュールの確認
* 毎日のサービス及びシステム点検
* スケジュールの登録
* 忘れないようにチェックすべきもの

などなどいっぱいあるんですね。

これをするだけで一日が行っちゃうとかの方多いでしょうね。

ここで一つの作業をプロジェクトとし、1枚にシートに書いてみます。私は紙が好きなのでA4用紙で1プロジェクトを書いたりします。

A4用紙を使う理由の一つは1枚に収まるように設計するためにはたくさんの機能が入りきれないので他のプロジェクトから呼び出しが多くなりMSAに充実な設計ができます。
しかし、多すぎる場合には統合したりしてます。

外の開発とは異なり、
UIPは利用者が自分で修正ができないと長く使えないので
ユーザーの修正領域と共有領域、専用領域をきちんと分けないといけません。

基本的なファイルの作成はこんな感じ

* Main.xaml
  * 最初実行するファイルですが、できるだけ内容は少なめにして置きます。
  * 初期設定をファイルにConfig.json等に落としての読み込みなどを定義します。
* Config.json
  * ユーザーが自分の環境に合わせて起動前修正すべきの内容を記入します。
* <FunctionA>.xaml
  * 機能毎にファイルにしておきます。
  * 機能は似たような種類を一つにまとめます。
  * 機能ファイルは基本的にどんな状況でも修正しないことを前提するのでCodeだけでUIを入れなくても問題ありません。(Invoke Codeなどを利用する)
  * xamlにするとIncludeより呼び出しになるのでIN/OUTパラメータの管理とメモリに残らないことを想定して設計します。(一般的な開発にはIncludeだったので使い方が全然異なります!)
* <WorkFlow>.xaml
  * このプロジェクトのメイン機能のUIを入れます。
  * Main.xamlを利用しない理由はMain.xamlはこのプロジェクトを起動するとき利用しますがこの機能が外のファイルから呼び出されたら分岐しないといけないため別ファイルとし、Main.xamlから呼び出すことにしました。このようにするとこのファイルだけ外のプロジェクトに統合したりすることも可能になります。

このように最小限のファイルに構成したプロジェクトをいくつ作ります。
プロジェクトの単位は本番プロジェクトのディレクトリー毎に1つのMSA用のプロジェクトが作られるようにします。

プロジェクト作成が終わったら各プロジェクト毎UiPathから開いてInvokeで呼び出ししてみます。
そうすると呼び出しの面倒さと管理の便利さなどに合わせてプロジェクトの統合も考えないといけません。
プロジェクトをこのように分けたらこんな感じになります。

メージャープロジェクト:「AI秘書」
ディレクトリー構成:
* /Conf
  * Config.json格納
  * これはパソコン毎に異なっているのでレポジトリーとして入れてません。
* /Common
  * Replace, HTTPGet, MailCheckなどどのプロジェクトでの使えるxamlファイルの集まり
  * git repository : https://github.com/LowyShin/lwrpa-common.git
* /CheckWork
  * 多数のプロジェクト関連メール及びWorkflowサービスまたはソリューションにログインし作業のチェック・切り分け、読み取り、返信がいる場合返信内容を書いて一時保管に入れるプロジェクト
  * git repository : https://github.com/LowyShin/lwrpa-CheckWork.git
* /WPDB
  * CheckWorkからDBの処理依頼を取得してA5MK2を立ち上げ・処理して結果をGoogleドライブにアップする
  * git repository : https://github.com/LowyShin/lwrpa-WPDB.git
* /WPSSH
  * CheckWorkからSSH接続及びサーバー作業内容を取得してPuttyを起動、作業を流す
* /MLNewsScrape
  * リストのURLからhttpgetを利用してデータを読み取ったりhttpgetがサポートしてないサービスはブラウザを開いてテキストを読み取り、Google Sheetを利用して英語に翻訳(多国から拾ってるのでまず英語科)してLDAを利用してTopic Model分離・その後日本語に翻訳して内容の中で自分に必要そうな内容順に並び変える。
  * git repository : https://github.com/LowyShin/lwrpa-MLNewsSrape.git

GoogleDriveにWebを立ち上げてアップするのもアリですが、私の場合にはGoogle Drive StreamというGoogleさんから提供しているパソコン用のドライブマウントツールを利用してます。
※Google Drive Streamを利用するとxlsxファイルのハンドリングの際にバグってファイルが読めなくなるケースがありますので十分にご注意ください。多分UiPathのxlsx書き込み仕様がMS Officeと若干異なっているのではないかと思います。

プロジェクトが多い場合プロジェクト毎の同期などが面倒になりますが、
これもBatchファイルとかで管理できます。

このように作ってあるサービスにMLNewsScrape機能が必要な場合
lwrpa-MLNewsScrapeとlwrpa-commonの二つのプロジェクトだけそのサービスにDeployすると完成です!

UiPathにはgitをサポートしているので右下の鉛筆アイコンを押してcommit and pushを利用するとかなり便利になります。

MSA化すると楽なのは
Commonなどの必須レポジトリーだけ揃うと独立サービスにできる、またサービスが複雑になりその中で一つの機能を削除したいと思ったときディレクトリー(レポジトリー)毎削除すれば外のサービスには影響しません。

このような設計はUiPathだけではなく全てのサービスに必要だと思います。


Knowledgebase
https://github.com/LowyShin/KB-KnowledgeBaseHome/wiki

Do not login your server any more!
giip :: Free server management tool!
https://giipasp.azurewebsites.net/



コメント

このブログの人気の投稿

コピペができないときチェックすべきこと! :: よく迷うUiPathのコツ

UiPath( https://uipath.com )はMicrosoft社のWWFを改良した製品なのでVisual Studioより初心者向けに使いやすくなっている。 しかし、初心者がそのまま使うにはかなりのハドルがある。 理由は基本開発者向けの開発ツールを無理やり便利に作ってみたとしても開発の概念と考え方がないと結構躓くことが多い。 そのなかで私もよく迷ったりしていることの一つを整理しとく。 基本Activityはすぐコピぺができるので多数のUiPath Studioを開いて開発してたりする。 ここでコピペをしても反応ないときがよくある。 この場合はこれをチェックすること! 1.Sequenceがなく一つのActivityしかないところにはペーストできないのが多い。 例えば、ifの処理ボックスにはSequenceが最初はない。 そのボックスに一つのActivityはペーストできるのに2個目からはなぜか反応ない。 それで分からないまま新しいActivityを追加してたりしたが、 あそこにSequenceを入れたら解決ができるのだ! 2.正常にペーストできるはずのところに反応ない。 この場合はPackageが合わなくペーストが効かないケースが多い。 DESIGN>Manage Packagesをクリックしてコピー元のパッケージにインストールされているのにコピー先にインストールされてないパッケージを探す! パッケージを一々見るのが難しい!と思ったら メモ帳からファイルがあるフォルダにあるproject.jsonファイルを開いてみる! あそこにJSONの形式でインストールされたパッケージが見えるので比較しやすくなる! ちなみにコピペをすると変数の宣言が大変だと思うが、 そこでもコツがあるのだ! 変数の宣言はなるべく細かくしてSequence単位で管理できるようにする。 全てに影響がある変数はしょうがないから一番広く宣言するけど。 初心者向けの説明だと、 Variablesというところをクリックして変数を開いたらScopeという範囲が見える! 大体Sequenceボックスの名前を変えてないのでSequenceがすらりと表示されてるはずが、Sequenceボックスの名前を付けてたら見やすくなる。 あ

英語をより楽に勉強できる方法

英語ができなくて良い機会が失われた経験があるでしょう。 GoogleさんもMicrosoftさんも英語で面接をしてます。 私がエンジニアですが技術より言語の学びが優先だと思います。 知り合いの中で技術は低いが英語が上手い人が私より良い道を歩いてます。 それは会話ができなければ技術も通じないとのことでしょう。 それで色々お試ししましたところ 情報を公開しようとしてます! まず、 Khan Academy( https://www.khanacademy.org/ )に入会! これはSalman Khanという人が自分の親戚に数学を教えるために試したやり方が色んな人が参加してグーグルさんとマイクロソフトさんが投資をした 完全無料教育サービス です。 しかし、これは英語でしか話してないので初心者の方には無理があるでしょう。 それでも、この記事をお読みになられた方は基本的な文法は学んだ方だと考えときます。 そして TEDアプリ( https://www.ted.com/ ) をダウンロード。 日本語の字幕がある映像の中で自分の好みの映像を選んでください。 有名なスピーカが話したことが多いので話し方など良い勉強になります。 次は MeetUp( https://www.meetup.com/ja-JP/ ) でしょ。 英会話グループを探して加入。 自分のレベルに合わせて参加してら良い友達もできるし勉強にもなります。 電車で単語ばっかり暗記している方が見つかりますが、 それも悪くは無いけど効率はどうかと思います。 やはり勉強は楽しく!自分の好みでは無いと! 映画も良いしドラマも良いです。それともゲームとか旅行もあるでしょう。 自分の趣味から始めるのが大切だと思います。 もしドロンが趣味だとしたらわざわざググってみる。 そして英語のページから探すんです。 最初は無理があるけど好きなイメージなどが見つかったら読みたいでしょ? そのページをスクリーンショットかプリントでも良いです。 その文書の単語を探して読んでみるのが第一歩ですね。 最初は辛いでしょ。 私の場合には最初には単語10個だけ探しました。 1日10個だけ辞書から探して残りは捨てる。 さらに10個をその場で暗記してそれで終わり。 翌日3~4個し

面倒くさいORACLEの文字化け状況

ORACLEはそもそもUTF-8をサポートしてほかの言語はサポートはしているって書いてますが親切ではないようです。 現在サーバー側は昔からUS7ASCIIに設定して日本語を入れてしまい、データは7ビットASCIIモードで読み取りながら日本語のコートがOS側とクライアント側で変換しない必要があります。 クライアント側で文字化けの解決にはNLS_LANGの設定が効くクライアントが必要ですが、一部の有料クライアントにはサポートするようです。 接続構造は参考に https://www.oracle.com/technetwork/jp/content/charcterset-250314-ja.pdf の19スライドのように クライアントからNLS_LANGをUS7ASCIIに設定しても その設定した言語にもらったUTF-8のデータをクライアントが変換すると NLS_LANGを設定しても意味がないようです。 ORACLE SQL Developerがこの様です。 ODBCと直接接続は必ずUTF-8に変換してしまうのでUS7ASCIIになっているDBからはクライアントをいくら変換しても文字化けのままです。 必ずOCI接続を通じてクライアント側から読み取らないとUS7ASCIIは勝手に変換されますね。 この全ての条件が満たした無料クライアントはA5mk2の2.9.1バージョンだけですね。 A5MK2 ver.2.9.1 : https://a5m2.mmatsubara.com/download/a5m2_2.9.1_x64.zip 2.9.1 バージョンでサーバーを設定する場合Uicode変換を強制に無視するオプションがあります。 多分このバージョンの時点ではUTF-8をメインにして設計したDBが少なかったから文字化け対応のためできたオプションでしょう。 しかし、A5mk2の新しいバージョンにもまた結果の変換をしないオプションがなくなって文字化けしてしまいます。開発者はもうUTF-8ではないDBはないと思ってるでしょう。まだまだ残ってますよ~。 クライアント側からの変換などに参考になればと思います! まだ直接お仕事になさってますか? もう遅いです!ソフトウェアロボットにお仕事を任せてどの位自分の作業分量が減ってるかをご確認ください! https://talklowy-jp.b