最初に知っておくべき5つのポイント
UiPath Studioを使うと、簡単な作業から、複雑な業務まで簡単に自動化することができます。しかし、そこには「UiPathのことをある程度知っている場合」という条件が付きます。
全くのUiPath初心者の場合「何から始めたらよいのかわからない」「何が正解なのかわからない」という中で、手探り状態で進まないといけません。このチャプターでは、そんなUiPath初心者の悩みを解決するきっかけとなる5つのポイントを解説します。
2.1 最初にやってしまいがちな3つの誤り
UiPath初心者が陥りやすい3つの誤りを紹介します。
2.1.1 勉強から始めてしまう
システム開発の未経験者に多いのが「勉強から始めてしまい、勉強が終わらないので作れない」というパターンです。勉強熱心なのはよいことですが、勉強だけをしていてはオートメーションは実現できません。
RPAで大事なことは「動く」ことです。RPAを動かして、実際に自分の業務を楽にすることが一番大事です。
UiPath Studioには「レコーディング機能」があります。簡単な業務をそのままUiPath Studioにレコーディングして実行することで、すぐにオートメーションを体感することができます。
簡単なオートメーションを体感できた方は、UiPathの勉強を始めてください。このとき自分で考えてもわからないことがたくさんあります。UiPathにはオンラインアカデミーや書籍など、数多くの情報があります。
「ワークフロー作成→オートメーション体験→勉強」の繰り返しが上達の早道です。
2.1.2 難しい業務を自動化しようとしてしまう
UiPathで自動化する最初の案件として難しい業務を選択してしまい、失敗してしまう人は多いです。
UiPathを知ったことでモチベーションが高まり、「どうせUiPathに取り組むなら、一番手間がかかっている業務を自動化したい」となる気持ちもわかります。しかし、最初に取り組む案件としては向いていません。まずは簡単な自動化から始めてください。
まず、本書の中から、身近な業務に近いサンプルをいくつか動かしてみるとよいでしょう。その後、業務に関係のあるワークフローを作成します。ポイントはワークフローの目的を1つに絞ることです。一歩一歩成功事例を積み上げることが大切です。
MEMO 「ワークフローの目的を1つに絞る」の例
- 基幹システムからファイルをダウンロードするだけ
- いつも使うExcelファイルを開くだけ
- クラウドシステムにログインするだけ
2.1.3 完璧さにこだわってしまう
最初から完璧な自動化を目論むのもつまずく原因です。UiPathのワークフローだけで業務を遂行させるには、いくつもの分岐に対応しなくてはなりません。
MEMO 「いくつもの分岐」の例
- ネットワーク負荷により操作対象のアプリケーションの動作速度が変化する
- ログイン画面で3ヶ月ごとにパスワードの更新を求められる
業務の中では、ワークフロー内で対応できない例外も発生します。
MEMO 「ワークフロー内で対応できない例外」の例
- ワークフロー内で操作対象としているアプリケーションのUIが変更される
- OSのバージョンアップにより環境が変化する
- ワークフロー内で操作対象としているExcelファイルが削除される
RPAとは外部環境の影響を受けるソフトウェアなので、完璧な自動化を実現することは事実上不可能です。人間の認識力と判断力を利用することで、シンプルなロジックで信頼度の高いワークフローを作成することができます。人とRPAが協力して、業務を早く正確にこなしていく姿を目指してください。
また、UiPathのテクニックに強固なこだわりを持ってしまうと失敗します。アプリケーションによっては、意図するように動作してくれないことがあります。例えば、「アクティビティは確実に画面上のボタンをクリックしているはずなのに、なぜか反応してくれない(もしくは、反応するときと反応しないときがある)」といったケースです。
このような場合、1つの「正しい」方法に固執して、動作しない原因を探求するより、他の方法を模索しましょう。「数回クリックすれば反応する場合がある」ならリトライすればよいし、「要素認識できているはずなのに反応しない」なら画像認識も試してみましょう。それでも失敗することがあるなら、メッセージボックスをポップアップさせて、ワークフローを止め、人手でクリックする手段もあります。
柔軟にアイデアを取り入れて、進めていきましょう。
2.2 ワークフローの特徴をつかむ
2.2.1 2つのワークフローの特徴を理解し、正しく選択する
UiPathの初心者は最初「どのワークフローを使えばよいのか」に迷います。ワークフローには種類がありますが、本書の読者の対象から考えて実質的に以下の2つです。
-
シーケンスワークフロー
複数のアクティビティを直線的に実行できる
-
フローチャートワークフロー
複雑なワークフローを記述できる
どちらのワークフローを使用しても、同じオートメーションを記述することはできます。選択するコツは2つあります。
選択するコツ(1):複雑さを見極める
条件分岐が多い場合、フローチャートワークフローの方が適しています。シーケンスワークフローでも記述できますが、可読性が著しく落ちます。フローチャートワークフローは、業務フロー図で見慣れたビジュアルであるため、可読性が高く、メンテナンス効率も向上します。
フローチャートワークフローは[デザイナー]パネルの中を広く使うため、多くの記述をした場合は一覧で見ることが困難になるという難点もあります。
一方、シンプルなアクションが順番に実行されるだけのオートメーションを記述する場合はシーケンスワークフローが向いています。ループがある場合はシーケンスワークフローの方が記述しやすいです。特に[繰り返し(コレクションの各要素)(For Each)]アクティビティを使いたい場合はシーケンスワークフローを選択しましょう。
業務全体を構成する大枠のワークフローはフローチャートワークフローで記述し、部分を構成するシンプルなワークフローはシーケンスワークフローで記述するとよいでしょう。
選択するコツ(2):業務の構造を把握する
やみくもにワークフローを作り始める人が多いですが、まず業務をしっかりと構造化して認識しましょう。業務構造を把握したのちに業務フロー図を描きます。
作成した業務フロー図を元にUiPathでワークフローを作成してください。どちらのワークフローを選択すべきか、業務フロー図を描く段階で見えてきます。
2.3 変数を使いこなす
2.3.1 変数作成の基本
(1)変数を作成する
変数を作成する方法は2つあります。1つは[変数]パネルで作成する方法です。[変数]パネルを選択し(図2.1❶)、名前、変数の型、スコープ、既定値を直接入力することで変数を作成することができます❷。
もう1つは、アクティビティのプロパティを設定する際に[プロパティ]パネル内で作成する方法です。
[メッセージボックス(Message Box)]アクティビティを使って解説します(図2.2)。
- UiPath Studioを起動し、新たにプロジェクトを作成する。
- Main.xamlを開く。
-
[メッセージボックス(Message Box)]アクティビティを追加する。
プロパティ[テキスト]に「" 楽しい? "」と入力する。
プロパティ[選択されたボタン]の入力ボックスにカーソルをあてた状態で[Ctrl]+[K]キーを押し、[変数を設定]に「Answer」と入力し、[Enter]キーを押す。 - [変数]パネルを開き、変数[Answer]が作成されていることを確認する。このとき[変数の型]は[String]となっていることも確認する。
UiPath Studioが適切な型を選択するため、型を意識することなく変数を生成することができます。多くの場合、後者の方法で変数を作る方がよいでしょう。
(2)型の変更方法
「変数を作成する」の2番目の方法で変数を生成したとき、多くのプロパティで[GenericValue]型が指定されます。[GenericValue]型は汎用的な型で、とても便利ですが、型を指定しなければならないケースも発生します。
型を変更するには[変数]パネルの[変数の型]をクリックし、ドロップダウンリストから該当の型を選択します。ドロップダウンリスト内に該当の型がない場合は[型の参照]を選択して[参照して.Netの種類を選択]画面を開きます。
[型の名前]に直接入力して該当の型を探し(図2.3❶)、該当の型を選択したら[OK]をクリックします❷。
2.3.2 変数名の命名規則
UiPathでの命名規則は以下のページに記載してありますので、参考にしてください。
MEMO ワークフローデザインの命名規則について
ワークフローデザインに記載している内容は、一般的なものであり、UiPathの決まりではありません。日本語を使って変数名を命名しても問題ありません。本書では、ある程度、上記のページの規則を参考にして命名しています。
2.3.3 変数を使いこなす
(1)変数のスコープは狭くする
変数にはスコープと呼ばれる使用可能な範囲があります。スコープにワークフローを指定すれば同ワークフロー内のどこでも使える変数となります。コンテナー内だけで使用する変数は、スコープにコンテナー名を指定しましょう。これには2つのメリットがあります。
-
バグの発生を防ぐ スコープを無意味に広く設定すると、本来のスコープ外で使われてしまう可能性がある。これが逆に便利なのでスコープを最大限広くする作成者もいるが、バグを発生させる要因になる。
-
変数の管理がしやすい
すべての変数のスコープを一番大きな範囲に設定すると、[デザイナー]パネル上にどの階層を表示していても、すべての変数が[変数]パネルに表示されることになる。スコープを適切な範囲に絞ることにより使用する変数のみを閲覧でき、修正する際に便利である。
(2)変数名を後から変更する
「変数を作成する」の2番目の方法で変数[Answer]を生成しましたが、[変数]パネルで変数名を変更すれば(図2.4❶)、プロパティの変数名も変更されます❷。
これは1つの変数を複数のプロパティに設定している際に非常に便利です。[変数]パネルの[名前]だけを1箇所変更するだけでよく、すべてのプロパティの設定をひとつひとつ変更しなくてよいからです。
(3)ワークフロー内で使用しない変数を削除する
ワークフローのテスト時に作成した変数が残ってしまう場合があります。作成者以外がワークフローをメンテナンスするとき(図2.5)、もしくは自分で数ヶ月後にメンテナンスするとき、使っていない変数が混ざっていると混乱し、メンテナンス性が下がってしまいます。使用していない変数は[デザイン]リボンの[未使用の変数を削除]をクリックして、削除しておきましょう。
2.4 制御フローは非常に大事
制御フローは表2.1の3つを基本とします。
条件分岐と繰り返し処理を体験するために以下のようなプログラムを考えてみましょう。
【プログラム】商品送料の計算
あなたは商品をいくつか購入します。合計金額が2000円未満の場合一律500円の送料がかかります。合計金額が2000円以上の場合は送料がかかりません。いくらの商品を何個買うかは、毎回入力することとします。
2.3.1 作成手順
- UiPath Studioを起動し、新たにプロジェクトを作成する。
- Main.xamlを開く。
- [フローチャート(Flowchart)]アクティビティを追加し、表示名を「Main」に変更する。[Main]フローチャートをダブルクリックして展開する。
-
[アクティビティ]パネルの検索ボックスに「入力ダイアログ」と入力し、[入力ダイアログ(Input Dialog)]アクティビティを検索し、[Main]に配置する。
[アクティビティ]パネルのお気に入りから[メッセージボックス(MessageBox)]アクティビティを2つ、[代入(Assign)]アクティビティを3つ、[フロー条件分岐(Flow Decision)]アクティビティを2つ、[Main]に 配置する。 - [入力ダイアログ(Input Dialog)]アクティビティの表示名を「商品価格を入力」に変更する。
- [メッセージボックス(Message Box)]アクティビティ2つの表示名をそれぞれ「商品有無を確認」と「商品価格合計を表示」に変更する。
- [代入(Assign)]アクティビティ3つの表示名をそれぞれ「商品価格を合計」と「商品数カウントアップ」と「商品価格合計に送料を加算」に変更する。
- [フロー条件分岐(Flow Decision)]アクティビティ2つの表示名をそれぞれ「商品有無」と「合計2000円未満」に変更する。
- 図2.6を参考にして、流れ線で結ぶ。
大枠が完成したので、それぞれのアクティビティのプロパティを設定していきます。[商品価格を入力]の設定から始めます。
-
[商品価格を入力]を選択する。
- プロパティ[ラベル]で[Ctrl]+[K]キーを押し、[変数を設定]に「Counter」と入力し、[Enter]キーを押す。
- [変数]パネルを開き、[Counter]の変数の型を[String]から[Int32]に変更する。
- [Counter]の既定値に「1」と入力する。
- プロパティ[ラベル]において、Int32型変数[Counter]の前と後ろに文字列を加えて、最終的に「"商品の価格を入力してください。[" + Counter.ToString + "商品目]"」となるように変更する(図2.7)。プロパティに長い文字列を入力するときは、プロパティの入力ボックスの右にある[...]をクリックし、[式エディター]を表示させる。
- プロパティ[タイトル]に「"商品価格入力"」と入力する。
- プロパティ[結果]の入力ボックスにカーソルをあてた状態で[Ctrl]+[K]キーを押し、[変数を設定]に「Price」と入力し、[Enter]キーを押す。
- [変数]パネルを開き、[Price]の変数の型を[GenericValue]から[Int32]に変更する。
-
[商品価格を合計]を選択する。
- プロパティ[左辺値(To)]の入力ボックスにカーソルをあてた状態で[Ctrl]+[K]キーを押し、[変数を設定]に「PriceSum」と入力し、[Enter]キーを押す。
- [変数]パネルを開き、[PriceSum]の変数の型を[GenericValue]から[Int32]に変更する。
- プロパティ[右辺値(Value)]に「PriceSum + Price」と入力する。
-
[商品有無を確認]を選択する。
- プロパティ[テキスト]に「"商品はまだありますか"」と入力する。
- プロパティ[キャプション]に「"商品有無確認"」と入力する。
- プロパティ[ボタン]で[YesNo]を選択する。
- [商品有無を確認]のプロパティ[選択されたボタン]の入力ボックスにカーソルをあてた状態で[Ctrl]+[K]キーを押し、[変数を設定]に「IsExistsItem」と入力し、[Enter]キーを押す。
- [商品有無]のプロパティ[条件]に「IsExistsItem = "Yes"」と入力する。
-
[商品数カウントアップ]を選択する。
- プロパティ[左辺値(To)]にInt32型変数[Counter]を設定する。
- プロパティ[右辺値(Value)]に「Counter + 1」と入力する。
- [合計2000円未満]のプロパティ[条件]に「PriceSum<2000」と入力する。
-
商品価格合計に送料を加算]を選択する。
- [プロパティ[左辺値(To)]にInt32型変数[PriceSum]を設定する。
- プロパティ[右辺値(Value)]に「PriceSum + 500」と入力する。
-
[商品価格合計を表示]を選択する。
- プロパティ[テキスト]に「Counter.ToString + "商品の送料込みの商品価格は"+PriceSum.ToString+"円です"」と入力する。
- プロパティ[キャプション]に「"商品価格合計"」と入力する。
2.4.2 実行する
合計金額が2000円未満のパターンと合計金額が2000円以上のパターンを試して条件通りに動作していることを確認してください。例えば、500円の商品1点の場合は、送料500円が加算されて、[商品価格合計]メッセージボックスに「1商品の送料込みの商品価格は1000円です」表示されます。
1000円の商品2点の場合は、合計金額2000円に送料が加算されないので、[商品価格合計]メッセージボックスに「2商品の送料込みの商品価格は2000円です」表示されます。
2.4.3 使用する変数
使用する変数は表2.2の通りです。
2.5 信頼性の高いワークフローを効率的に作成する
さっそくUiPath Studioでワークフローを作成したい気持ちはよくわかります。しかし、信頼性の高いワークフローを効率的に作成するためには、注意すべきことがあります。
2.5.1 シナリオ設計が必要
ワークフローの作成・運用で失敗するパターンがあります。
- アクティビティをつなげただけの可読性が低いワークフローが作成される。
- ワークフローが失敗したときの例外処理が稚拙である。
- 効率的にワークフローが作成できないので、人間が業務を行った方が速い。
- ワークフローの部品化が行われていないため、メンテナンス性が低い。
まとめると失敗するワークフローの特徴は、「信頼性」「効率性」「メンテナンス性」が低いということです。その原因は、「設計せずに、行きあたりばったりでワークフローを作成するから」だといえます。
簡単な作業の自動化であれば、設計する必要はありませんが、業務を自動化するには設計が必要です。筆者はRPAの設計のことを「シナリオ設計」と呼んでいます。
2.5.2 業務の構造
業務を自動化するためには、業務というものを理解することから始めましょう。そのために業務での2つの特性を押さえましょう。
(1)「インプット⇒処理⇒アウトプット」の構成を持つ
業務とは、必ず「インプット⇒処理⇒アウトプット」という構成を持つ独立した仕事です。例えば、メールや基幹システムからダウンロードしたデータを「インプット」して、Excelなどを利用してデータを「処理」します。「処理」により生成されたデータ(Excelファイルなど)を人やITシステムに「アウトプット」します。
アウトプットする成果物を生成できない状態が「例外(エラー)」です。
(2)階層構造を持つ
業務には階層構造があります。筆者は図2.8のように定義しています。
[業務]は複数の[業務プロセス]によって構成され、[業務プロセス]は複数の[サブプロセス]によって構成されています。[サブプロセス]は[アクション]によって構成されています。
[アクション]は「ボタンをクリックする」「Excelファイルを開く」といったマウス操作やキーボード操作に対応する階層です。
階層が深くなりすぎることはお勧めしませんが、必要な場合は、[2ndサブプロセス]、[3rdサブプロセス]と階層を作って管理します。
階層それぞれの要素の流れを図式化したものが業務フロー図です。例えば[業務]の業務フロー図は、複数の[業務プロセス]の流れで表されます。
2.5.3 シナリオ設計書のイメージ
業務を階層と流れで把握することで、UiPathのワークフローが設計できます。業務構造を整理し、UiPathに正確に変換したワークフローは、信頼性、メンテナンス性の高いものとなります。
シナリオ設計書にはフロー図(UiPathの[フローチャート(Flowchart)]アクティビティと区別するためにフロー図と呼びます)とその他の情報(変数や引数など)を書きます。図2.9がそのイメージです。
2.5.4 フロー図に使う図形
フロー図の作図に使用する図形を表2.3に紹介します。参考にしてください。
MEMO 使う図形は限定する
使う図形は増やしすぎないことが大切です。なるべく上記の10個の図形で描きます。慣れてくると、複雑な表現にも挑戦したくなるものです。また、細かいニュアンスの違いを表現したい気持ちも生まれます。例えば、同じデータでもデータベースとCSVファイルは違う表現にした方がよい、などと思えてきます。CSVファイルの図形がドラム型の図形(図形No7)では違和感があるからです。
しかし、データはすべてドラム型の図形に統一しましょう。細かい部分にこだわると、フロー図を作図する人によって違いが出てきてしまい統一できなくなるからです。