美しいコードを見ると感動する、RPAワークフロー(シナリオ)作成のテクニック
目次
美しいコードを見ると感動する。優れたコードは見た瞬間に何をしているかが伝わってくる。
「リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック」より
そんなRPAワークフロー(シナリオ)を作成してみたいと思いませんか。
> RPA開発におけるワークフロー(シナリオ設計書)作成の方法やコツに役立つ
過去セミナー動画はこちら
誰でも簡単に読み解くことができる、美しいワークフロー(シナリオ)を作成できるということは良きRPA開発者であるといえます。
私はRPAプロジェクトの現場で、開発は勿論ですが、保守運用を担当しています。自分以外の誰かが作ったワークフロー(シナリオ)を理解して、改修を加えていくことは容易ではないと感じることもあります。それでも、組織や業務は変わっていくものですし、その中で引継や担当者の変更があるかと思います。実は、最近も少し解読に困ったワークフロー(シナリオ)と出会うことがありました。
今や当たり前のGUI開発ツールでの開発にも、お作法というものがありそうです。
このコラムではUiPathを例にしますが、他のGUI開発ツールとの共通点は多いと思います。また、開発者、保守担当向けのテクニックと思われがちですが、RPAを推進する立場の方にも規約作成の一助となるので、RPAに関わるすべての方に役立つ内容になっていると思います。みなさんの、ご参考になれば幸いです。
さて、下記で上げている誰でも読み解くことができるワークフロー(シナリオ)の作成テクニックには、『表面上の改善』と『ロジックの単純化』の2つのポイントがあります。これを踏まえて、RPAシナリオ設計書の作り方のコツをみていきましょう。
アクティビティ名/変数名/引数名は分かりやすく、一意にする
まず、アクティビティ名には処理概要を追記すること。
各アクティビティのプロパティ「表示名」には、デフォルトでアクティビティ名が入っていますので、前に処理概要を書くことで『処理概要+アクティビティ名』のように名称を一意に付けることができます。
次に、変数名には役割や用途が分かるよう概要を付けること。
その変数に何の情報が入るのか、ファイルの名前なのか、パスなのか、シート名なのか、、明確な単語を使い、汎用的な名前を避けることなどに気を付けて分かりやすく書くように心がけます。
最後に、引数名には役割や用途が分かるよう概要を付けることに加え、入出力方向を書くこと。
例として、初期設定でよく見る「インプットファイルを読み込む」場面で比べてみましょう。
左側は、アクティビティ名がそのままで、変数名も他と区別がつかず、わかりづらい印象があると思います。比べて右側は、どうでしょうか。一目見ただけなのに理解度が変わってきませんか。
このように名称を分かりやすく、一意にすることで、開発者にとっては、用途が不明な複数の変数や引数が増えていくことを防ぐことができて、保守担当にとっては、エラーや改修箇所を最短距離で見つけることができます。
可変情報は外部ファイルに情報を持たせるようにする
前の項では変数や引数の名前について書きましたが、その値をどこで定義するのかというと、やはりパラメータやコンフィグと呼ばれるExcelファイルに持たせることが多いかと思います。外出しする情報として、ファイルパスやフォルダ名、メールの宛先などは、既に皆様が実践し、テンプレート化されていることだと思います。
ですが、システムに登録されている部署名や課名等の名称はどうでしょうか。ワークフロー(シナリオ)に、べた書きしていることもあるのではないでしょうか。
設計時に見落とされがち、ユーザーからの要望としても漏れがちですが、組織改編で名称の変更がある度に改修が発生します。頻繁に起こることでもないですが、だからこそRPAシナリオ開発設計した時のメンバーが誰一人いない状態でワークフロー(シナリオ)と向き合わなければならない。そんな時に、すべての項目や要素を洗い出すことは膨大な時間が必要になります。
また、商品のコードや名称が変わることは容易に想像ができますので、マスタやテンプレート等のファイルにもたせることが、後々の運用負荷を軽減します。
1つのアクティビティにつき1つの処理をかく
まずは、二つの処理を比べてみましょう。
右側は、1アクティビティにつき1操作の処理であること、加えて①でふれた「処理概要+アクティビティ名」が書いてあることで流れが分かりやすいかと思います。比べて左側は、見づらく、読み込まないとわかりづらい印象を受けます。
簡単に読み解くことができるということは、保守のしやすさにもつながります。左側のワークフロー(シナリオ)でエラーが起こった時に、「コピー」ができていないのか、「ペースト」ができていないのか、他がうまくいっていないのかを見ていこうとすると、ステップインで1操作ずつの動作検証ができないため、アクティビティを分割する作業が生じます。結果、右側のようなつくりに変えなければなりません。
左側は分かりやすさに加えて、保守にやさしいワークフロー(シナリオ)でもあります。
ここで例に挙げたホットキーを使ったアクティビティ、そして、「代入」アクティビティには複数の処理を書いてしまいがちで、読み解きづらくなることが多いです。コードは短く書くことより、コードを読んだ人が理解するまでにかかる時間が短くなるように書くことが重要です。
処理の内容・目的を記述する
私が初めて保守を担当したワークフロー(シナリオ)は、実は少し前に自分が作成したものでした。見覚えのないつくり、何をしているか分からないアクティビティが並んでおり、どんな処理をしているのか分からない部分が多々出てきました。
私と同じような経験をした方はいないと良いのですが、いろいろな事例を見てみると、珍しいことでもないようです。いつかの自分にも優しいワークフロー(シナリオ)が作れるように、コメントや説明は十分に考えて記述しなければなりません。
もう一つ残念な例をご紹介すると、、
あるプロジェクトで保守をしているとき、クリックや項目をプルダウンで選択する操作を「ホットキーを押下」アクティビティにて、TabキーやEnterキーを使って実装されているものがありました。セレクターで要素が取れる箇所を何故、このような安定性が低い方法を取っているのかと不思議に思いました。開発担当者に改修の話をしていたところ、実はシステムとUiPathのレコーディング機能や「クリック」アクティビティの相性があまり良くなかったことで、精度が低くなってしまい、何度も検証した結果「ホットキーを押下」アクティビティを使うことでエラーを防いでいました。
読み手の立場になって考えること、質問されそうなことを想像することが非常に大切です。今回であれば、誤って修正されないようコメントが必要でした。
優れたコードを書くにはやはり経験が求められることも多いですが、優れたコメントを書くには何度も繰り返しお伝えしている「誰でも読み解くことができるか?」を考えることで補うことができます。優れたコメントが書ければ、開発初心者でも良いワークフロー(シナリオ)をつくることができるということです。
処理を分割して単純化する
人間の脳はグループや階層を1つの単位として捉え、考えるようにできています。大まかな処理を分けて書くこと、UiPathでいうと「シーケンス」アクティビティや「ワークフローファイルを呼び出し」アクティビティを使うことが有効です。「ワークフローファイルを呼び出し」アクティビティは以下どちらかの手順で使用します。
また、何度も同じ処理を書かないことも重要です。開発者にとっては、処理を書く手間を省くことができますし、ロジックを考え検証することも一度で済みます。保守担当者にとっても、何度も同じ処理を読み解く必要がなくなりますし、一回の修正のみですべての箇所に反映されます。
「ワークフローファイルを呼び出し」アクティビティはここでも役立ちますし、ライブラリ機能でも簡単に使いまわすことができます。ライブラリを作成する際は、UiPath「スタート」画面より、「ライブラリ」を選択します。
そもそも再利用が、なぜ良いのでしょうか? いろいろなプロジェクトで使用されている成熟したライブラリやモジュールには、膨大な設計・実装・テスト・実績を経て、これを生き延びてきた大きな価値があります。これらをうまく活用することで、品質の高さと保守性の高さを得ることができます。
まとめ
冒頭でテクニックのポイントとして、『表面上の改善』と『ロジックの単純化』をあげました。これが品質の高さと保守性の高さにもつながることがご理解いただけたかと思います。そして、品質の高さと保守性の高さが担保されたワークフロー(シナリオ)を作成できることは、良き開発者である、何よりの証明ではないでしょうか。
一生懸命考えて作っても、自分のつくったものを振り返ってみたとき、ひどい名前、処理が見つかるかもしれません。注釈やコメントの重要性をお話ししましたが、「優れたコード>ひどいコード+優れたコメント」といわれているように、コメントで補うぐらいなら、変数や引数の修正、改修した方が良い場合もあります。
それでも、ここで紹介した規則や原則を実践して「読みやすさ」を最優先としてワークフロー(シナリオ)を見直してみるのはいかがでしょうか。また「理解しやすく書けているか?」ともう一人の自分に問いかけてみてはいかがでしょうか。
CACでは、こうした開発規約やテンプレートを用意しており、美しいコードを書くことができるノウハウがあります。これを活かしたRPAの開発、運用・保守やトレーニングをワンストップにご提供しており、さらに、皆様にも美しいコードを書ける開発者となっていただけるよう内製化立ち上げ支援サービスも行っています。
是非お気軽にお問い合わせください。一緒に美しいワークフロー(シナリオ)を作成していきましょう。
> RPA開発におけるワークフロー(シナリオ設計書)作成の方法やコツに役立つ
過去セミナー動画はこちら
参考文献:
『リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック』
Dustin Boswell、Trevor Foucher 著、角征典 訳、2012年06月、オライリー・ジャパン
このコラムの執筆者
株式会社シーエーシー
アドバンスドテクノロジー本部
森永 和花
入社以来、RPAの開発・保守を担当しています。RPAが初めての方はもちろん、今、運用中のお悩みをお持ちのお客様と一緒に、RPAを着実に進めていけるよう、日々業務に取り組んでいます。
本記事のカテゴリ :RPA技術コラム
関連記事
-
美しいワークフロー(シナリオ)の作り方をUiPathで
-
美しいワークフロー(シナリオ)の作り方をUiPathで、コラム「RPAの気になる話」2021/3/15
-
「自社開発」でも「お任せ」でも
PickUP
本記事に関連するCACのサービスやお役立ち情報をご紹介します。
RPA技術レポート無料ダウンロード
- 【コラム】WinActor ver7.5.0「シナリオ作成ガイド」で作ってみました
- 【コラム】 RPA導入・拡大の課題と解決 ―知っておきたい3つのTIPS
- 【コラム】RPA開発のポイント ―RPAを一人で始めて会社を巻き込む
- 【コラム】医療事務の現場 事務でRPAが求められる背景から対象業務、メリット、事例まで一挙解説!
- 【サービス】RPA開発/サポートサービス
- 【サービス】RPA+Oneソリューション
- 【サービス】RPA研修 自社開発イネーブルメントプログラム
- 【動画】CAC RPAセミナー オンデマンド
- 【資料ダウンロード】美しいコードをみると感動する、美しいワークフローの作り方|CAC RPA White Paper