イメージがあまりなくてつまらないと思いますが、自分の経験のコツを共有したく設けたページになります。
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/
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/
コメント
コメントを投稿