/RPAロボットの規模、開発生産性を算出する方法2018.02.15RPAロボットの規模、開発生産性を算出する方法こんにちは。スマートソリューションセンターの吉田です。RPAで業務を自動化したい場合、どのくらいの工数(期間)がかかるか、あらかじめ見積もりたいですよね。そのためには、作りたいロボットの規模を測ること、開発生産性を知ることが必要になってきます。テンプレート型RPAにおいて、ロボットを構成する最小要素はActivity(Action)です。よって、Activity(Action)数を計測することで、ロボットの規模を図ることができると考えます。Activity(Action)はおおざっぱにいうと、自動化したい1操作に該当しますので、5つの操作を自動化したい場合、5Activity(Action)を作れば良いということになります。自動化したい業務を整理し、操作回数をカウントしていくと、ロボット規模が算出できます。※より正確に算出するには、繰り返し処理の有無や、非構造化データを含むか、対象システムやデータ点数などで重みづけをする必要があります。「○○Activity(Action)規模のロボットを作成するのに必要な工数」を算出するために、開発生産性を知りたいところです。単純に過去実績から開発生産性を算出するとして、まずはロボットを作ってみて開発生産性を算出する際、開発画面上で、目視で一つずつ部品数を足し上げていくのは非常に骨が折れます。ここでは、RPAツールの一つであるUiPathを例にしてソースファイル(.xaml)からActivity数、その他情報を抽出する方法を紹介したいと思います。いえ、いきなりXAMLの話をしても面白くないので、まずは、開発者にはお馴染みのHelloWorldでUiPathの使い方を簡単に振り返ったところで、HelloWorldロボットのソースを解析し、どのように成り立っているのかを含めて整理してみようと思います。UiPathロボットがソースでどのように表現されているかソースから、ロボットの規模(Activity数)を算出する方法では早速見ていきましょう。Studioを開きましょう。2018.1.1バージョンでは、Blank、Flowchart、Assistant、ReFrameworkといったプロジェクトテンプレートがあります。ReFrameworkは、設定ファイル(Excel)からの情報取得や、Orchestratorサーバ管理機能との連携など、Enterprise向けにも活用できるサンプルコードが組み込まれた形で用意されているので、おすすめです。HelloWorldの続きですが、実はUiPath公式の解説ページに画面キャプチャ付きで紹介されていますので、そちらに沿って項番13辺りまで実施します。https://studio.uipath.com/docs/about-automation-projects解説ページ通りに進めると、以下のようになっているはずです。この状態でロボットを実行してみます。名前の入力ダイアログが表示され、名前を入力後、OKを押すと入力した名前が表示されるHelloWorldロボットができました。ここまで、おそらく5分かからずに作成できたのではないかと思います。それでは、簡単に振り返ってみましょう。ロボットの最小構成要素であるActivityUiPathでは、Activityとよばれる部品(ロボットの最小構成要素)を組み合わせて、ワークフロー(シナリオ)を構築します。Activityは現時点で、およそ300種類あり、アクティビティを使用することで、ウェブブラウザ、デスクトップアプリ、PDF、画像、データベース、Excelスプレッドシート、Eメールアカウントなどとの連携や、HTTPやSOAP要求の作成を簡単に実行できます。HelloWorldロボットはいくつのActivityで構成されているでしょうか。Box、そして、コンテナとして使っているFlowchartから構成されます。Boxワークフローロボットの最小構成単位であるActivityを組み合わせて、一連の手続きを行うワークフロー(シナリオ)を構築します。ワークフローの実態は、XMLの拡張言語である、XAML形式のファイルです。単一、または複数のワークフローから、ロボットを構築することができます。HelloWorldロボットはいくつのワークフローで構成されているでしょうか。単一のMainワークフローで構成されています。Main.xaml使用した変数UiPathでは、変数を定義することができます。こちらもワークフローの構成要素としてXAML上で表現されます。HelloWorldロボットはいくつの変数を使用されているでしょうか。名前の入力ダイアログで、ユーザが入力した結果を保持する文字列型変数nameを使用しました。ロボットのスペックは、以下といえるでしょう。Main.xamlという単一のワークフローからなるロボットで、3つのActivityと、1つの変数から構成される。このように言語化してみると、ソースも単純なソースから構成されていそうですよね。ソースを見てみましょう。StudioのGUI上で作成したロボットが、どのようにソースで表現されているか見てみましょう。Main.xamlをお使いのテキストエディタで開いてください。/></sap2010:ViewStateManager></sap2010:WorkflowViewState.ViewStateManager></Activity>長いですよね。数行で済みそうな機能なのに、127行あります。そもそもRPAはノンコーディングなので、ソースを見る意味があるのか、という意見もあるかもしれませんが、せっかくなので、分解してみましょう。大きく3つのSectionに分けれるかと思います。それぞれ見ていきましょう。Foundationに依存しています。FrameworkのAPIや、UiPathが提供するライブラリの呼び出しが可能となっています。StudioのImportsタブから追加することが可能です。/></FlowStep></FlowStep.Next></FlowStep></Flowchart.StartNode><x:Reference>__ReferenceID0</x:Reference><x:Reference>__ReferenceID1</x:Reference><sads:DebugSymbol.Symbol>d0FDOlxVc2Vyc1x1MjAxMzA2Mi5EMTAwMFxEb2N1bWVudHNcdWlwYXRoXE9DUlxIZWxsb1dvcmxkXE1haW4ueGFtbAg7A1APAgEBQQlFGgIBBkgNSM4BAgECQZABQaABAgEKQzVDOwIBCEGnAUG2AQIBB0hJSFACAQVInwFIvAECAQM=</sads:DebugSymbol.Symbol></Flowchart>ワークフローの実態となる部分です。Flowchartコンテナの中に、Flowchart.Variablesで変数定義がありますね。ui:InputDialog、ui:MessageBoxといったActivityの定義があることがわかります。このように、XAML上でActivityやPropertyはテキストとして保持され、ロボットによって解釈され実行されています。Studioでワークフローをビジュアル化する際に使用するレイアウト情報です。有益な情報はないので、紹介までにとどめておきます。StudioのGUI上で作成したロボットが、どのようにソースに表現されているか理解いただけたかと思います。続いて、ロボットの規模(Activity数)を算出する方法を見てみましょう。冒頭で紹介したように、ロボットを構成する最小要素はActivityです。よって、Activity数を計測することで、ロボットの規模を図ることができると考えます。ソースファイル(.xaml)からActivity数を計測する方法の一つは、全Activityに共通して存在するプロパティ「DisplayName」の件数をカウントすることです。HelloWorldロボット(Main.xaml)で、「DisplayName」でGrepすると、3件ヒットします。XAMLはいろいろなタグから構成されていますが、Flowchart、InputDialog、MessageBoxの3つのActivityのみにDisplayNameプロパティが含まれます。書いたわりに、最終的にはシンプルなやり方ですが、是非試してみて下さい。応用として、XAMLを解析することで、Argument(ロボットの引数(外部パラメータ))や、変数定義、使用しているActivityの列挙が可能となりますので、ソースから設計書をリバースエンジニアリングすることも可能ですし、使用していない変数定義が残っていないか、社内規定で、使用してはいけないActivityを使っていないかなどをチェックするレビューロボを作ることもできます。まとめロボット規模は、自動化したい業務を整理し、操作回数をカウントしていくことで算出する。開発生産性は、過去に作成したロボット(.xaml)のActivity数と、作成にかかった時間から算出する。Activity数は、過去に作成したロボット(.xaml)を「DisplayName」でGrepすることで抽出できる。以上です!今回は少し技術ブログっぽい内容をお届けしてみました。.NETテクノロジを活用したWindowsクライアントアプリ開発に長く従事し、モバイルアプリ開発、WebAPI開発などを担当する。2017年よりRPAの取組みを開始。導入コンサルティング、マネージメント、提案・営業活動など幅広い業務を担当し、クレスコのRPA関連事業を牽引している。テクニカルエバンジェリストとしてエンジニア目線でのRPA記事を多数執筆。研修やセミナー講師、社外コミュニティでの登壇、RPA技術者育成に向けた教育・普及活動など、精力的に活動中。クレスコのRPAセミナークレスコではAIやRPAをテーマとした技術セミナーを定期的に開催しています。現役エンジニアが実践的なノウハウを提供します。◆受講者の声[無料セミナー]RPA導入ファーストステップ「UiPathのデモ、各ツールの比較が分かりやすく有益と感じた。「RPA導入で種々の問題点があるので、”つまずき”の部分が参考になった。」[オーダー研修]RPA/UiPathハンズオン「今まで迷ったところや分からなかったところがすべて判明した爽快感がありました。早く受けたかったです。「RPA導入新任者向け研修として最適。今後、当社のRPA開発者向け研修として活用させていただく事を検討します。