Blue Prism 事始め

業務で [Blue Prism](https://portal.blueprism.com/) を扱うことになったので、Learning Edition で学習がてら、基礎的な情報をまとめたいと思います。

# Blue Prism とは
イギリスの Blue Prism 社が提供する RPA ツール。
日本語UIのフローチャート操作や、オブジェクトの利用による部品の再利用性の良さから、開発のしやすさが利点として挙げられている。
また、編集履歴管理や、証跡の記録に秀でており、セキュアに利用できるのも特徴とされる。


# 導入
今回は学習用の Leaning Edition をローカル環境にインストール。
[Blue Prism ポータル](https://www.blueprism.com/japan/resources/blog/blue-prism-onboarding-01/) にアクセスし、アカウントを登録後、[Learning Edition ダウンロードページ](https://portal.blueprism.com/products/learning) から最新版のインストーラを入手。

インストール後、admin 用のパスワード設定やら、ライセンスキーの登録（アカウント作成時に登録したメールアドレスに送信される）を済ませれば晴れて利用可能に。
※ インストール方法の詳細は[ここ](https://www.blueprism.com/japan/resources/blog/blue-prism-learning-edition/) を参照。

学習版の有効期限は180日。一部機能が制限されているので注意。

# 開発者向けトレーニングの進め方

[はじめよう! Blue Prism - Blue Prism Onboarding資料](https://www.blueprism.com/japan/resources/additional-resources/blue-prism-onboarding-material-jp/) 内の資料に記載されている通り、

基礎トレーニング(ビデオ&スライド)
↓
ハンズオントレーニング
↓
ドキュメント読み込み
↓
(+α資格取得のトレーニング) ※ 本記事では割愛

の順で進めていくのが良いかと。
基礎トレーニングはその名の通り、本当に基礎的な部分を取り扱っており、ハンズオンや各種ドキュメントの理解を深めてくれるため最優先で行うと良い。

## 基礎トレーニング
[Online Courses](https://university.blueprism.com/pages/25/course-catalog) の検索フォームにて、`Blue Prism Foundation Training` と検索、選択し、`ENROLL`をクリック。
各種ビデオやスライドでの学習を開始できる。

ビデオコンテンツでは、画面内右下の`CC`ボタンをクリックし言語設定を日本語にすることで、日本語字幕を表示できる。

※ コンテンツによっては、日本語字幕対応と謳いながら字幕が表示されないものもあるので注意。

全12セクションで構成され、各セクションの最後には選択式のテストを行う。
テストに関しては英語のみなので頑張る。

全セクション終了後には、最終課題として、指定された条件を満たすパッケージを作成するミッションがある。
こちらも日本語訳は無いため頑張る。(英語が得意でない筆者でも今までのセクションを踏まえて理解できるような内容だった。)




## ハンズオントレーニング
[ハンズオン資料1](https://www.blueprism.com/japan/resources/white-papers/blue-prism-handson-1/)
[ハンズオン資料2](https://www.blueprism.com/japan/resources/white-papers/blue-prism-handson-2/)
[ハンズオン資料3](https://www.blueprism.com/japan/resources/white-papers/blue-prism-handson-3/)

上記3つのプログラムが用意されている。
基本的に各プログラム内の資料に沿って進めていけばOK。
基礎トレーニングから一歩踏み込んだ、より実践よりの開発について触れることができる。

## ドキュメント読み込み

ポータルサイト内の[ドキュメントページ](https://portal.blueprism.com/documents/standard) より各種ドキュメントを検索可能。
以下は資料内で必須とされているガイドの抜粋。

* [Work Queues Guide](https://portal.blueprism.com/system/files/documents/Work%20Queues%20Guide%20%28Japanese%29.pdf)
* [Exception Handling Guide](https://portal.blueprism.com/system/files/documents/Exception%20Handling%20Guide%20%28Japanese%29.pdf)
* [Object Design Guide] (https://portal.blueprism.com/system/files/2018-04/Object%20Design%20Guide%20%28Japanese%29.pdf)
* [Process Creation Guide](https://portal.blueprism.com/system/files/2018-04/Process%20Creation%20Guide%20%28Japanese%29.pdf)
* [Solution Design Overview](https://portal.blueprism.com/system/files/2018-04/Blue%20Prism%20-%20Solution%20Design%20Overview%20%28Japanese%29.pdf)

また、下記も必要に応じて参照すべきとされている。

* [Environment and Session Variables](https://portal.blueprism.com/system/files/2018-04/Blue%20Prism%20Guide%20-%20Environment%20and%20Session%20Variables%20%28Japanese%29_0.pdf)
* [Browser Automation](https://portal.blueprism.com/system/files/documents/Browser%20Automation%20Guide%20%28Japanese%29_0.pdf)
* ~~Excel Automation~~ (2021/04/11時点で検索結果無し。削除済？)





# Blue Prism 基礎用語

Blue Prism で開発を行うための最低限押さえておきたい要素をまとめる。

## オブジェクトとプロセス
Blue Prism の特徴として、プロセスとオブジェクトの分離が挙げられる。
これにより再利用性、変更容易性の高さを実現している。

###オブジェクト
機能ごとに作成される処理群。
各オブジェクトはプロセスから呼び出される。
オブジェクトにはビジネスロジックは含めず、あくまで機能を提供する部品として振る舞う。
例) アプリケーション起動、ボタン操作、エクセルのセル操作

オブジェクトは汎用的な作りとし、アプリケーションへの入力値などは保持しないほうが望ましい。
入力値はプロセスから呼び出される際のインプットとして受け取る。

パフォーマンスの向上、管理の容易さの向上のため、1つのオブジェクトはなるべく小規模に設計する。
アプリケーションの各画面に対して1つのオブジェクト程度の粒度が良いとされる。

#### アプリケーションモデラー
オブジェクト内で定義される、オブジェクトが接続するアプリケーションの定義モデル。
アプリケーションの要素（ボタンやテキストボックスなど）の定義によって構成される。

### プロセス
業務フロー。スケジューラ等によって起動される。
プロセス内でオブジェクトを呼び出し、フローを定義していく。
プロセス内にビジネスロジックを構築し、例外のハンドリングもプロセス内で行うのが良いとされる。
例) 売上情報の取得、集計情報のエクセルファイル作成



## ワークキュー

プロセスによる処理のケースのリスト。
リスト内の処理はそれぞれステータスを持つ。(未処理、完了、例外など)
処理をワークキューに登録 → ワークキューの内容を順次取得 → 処理実行 → 完了したらステータスを更新
と順序を踏むことで、各処理の状態や証跡ログ、パフォーマンス等を管理できる。


## パッケージ
作成したオブジェクト、プロセス、ワークキューなどを、パッケージとしてひとまとめにし、エクスポートできる。



# 最後に
Blue Prism は対外的な情報が少なく、 ~~またポータルサイトも欲しい情報が見つけづらく、イケてないと感じたため、~~ 最初の学習段階に最低限必要な情報をリンク集的にまとめてみました。

今後は別記事にて、ベストプラクティスを踏襲した開発のために情報をまとめていきたいと思います。