【第10回】バッチファイルからロボットを起動してみる - 実行環境の作成方法

#はじめに

HeartCore Roboを開発環境以外の実行環境から実行する場合、CLI(Command Line Interface)からロボットを実行することが出来ます。開発エディタからもロボットの実行ができますがエディタ起動には「開発ライセンス」が必要になります。今回は「実行ライセンス」で起動する場合のロボットの展開と起動方法を記載します。

#実行ライセンスとは

HeartCore Roboには「開発ライセンス」と「実行ライセンス」の2体系があります。HeartCore Robo導入初期は「開発ライセンス」を用いて、開発を行いながら実業務用ロボットを構築するのが一般的です。開発したロボットが安定して動作する（シナリオのメンテナンスがほぼ不要になる）フェーズに入り、次のロボットを開発しながら現行の業務ロボットの稼働を同時に行いたい場合には「実行ライセンス」を追加で購入すると開発と実行が同時に行えます。「実行ライセンス」は「開発ライセンス」より安価なため追加の購入コストも抑えることが出来ます。

「実行ライセンス」での運用を考慮する一般的な要件：
 - ロボット開発と実行を別端末で同時に行いたい
 - 開発と実行端末を厳格に区別したい
 - 無人運用を行いたい（注：一般的にはスケールに伴い使用状況を把握するオーケストレーターが必要になります）
 - ユーザーが使用しない時間（アイドル）が発生する端末をロボの実行環境として利用したい
 - ユーザーにはロボットスクリプト（シナリオ）の内容はオープンにしたくない
 - ユーザーによるワンオペでロボットを起動させたい

#ロボットスクリプト
今回のサンプルロボットははシンプルな"hello world"的なスクリプトです。Windows上でロボットバッチファイル(.bat)を作成します。スケジュール実行はWindowsスケジューラーを使用します。

1) メモ帳を起動
2) "HeartCore Roboへようこそ！"とタイプ

以下サンプル：

スクリプト名:メモ帳起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/e8b1d410-5ed3-7934-ada4-66d07ba5e676.png)


```javascript
//「ファイル名を指定して実行」（Windows+R）を使用してメモ帳を起動
Press "Windows+R"
Paste "notepad" wait=1s
Press "Enter" wait=2s

//"HeartCore Roboへようこそ！"をタイプ
Type "HeartCore Roboへようこそ！"

//レポート
Report "result.xml"

```

上記のスクリプトを実行して結果を確認します。
1) メモ帳を起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/1f227701-b385-bc9f-ed81-701a0e11837b.png)

2) "HeartCore Roboへようこそ！"とタイプ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/c6c14950-21af-8e68-4f06-3b79be10853d.png)

上記のスクリプトが動作する事が確認出来たらロボット起動バッチファイを作成します。バッチファイルの作成オプションは実行環境によって異なります。以下ローカルデスクトップ上で動作するロボットバッチファイルのサンプル手順です。詳細は製品CLIリファレンスを参照して下さい。
https://www.heartcorerobo.com/hcrobodesktop/docs/scripting/commref.html


1) スクリプト名が表示されているタブ上で右クリック > CLIウィザードを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/30357d5e-713c-d455-a1eb-bdd55831a14c.png)

2) CLIウィザード起動 > 下記の設定 > ファイルに保存をクリック
ファイルパス：絶対パスを指定
接続："JAVA:localhost"を選択
CLIモードでスクリプトを実行する(GUIは非表示)：チェック
CLI Startコマンド：上記の設定に応じてコマンドが変更される事を確認(バージョン5.0.2以降で編集可能)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/09253df1-1fe8-ee08-9171-03bbdd1920e1.png)

**重要：CLIモードでスクリプトを実行する(GUIは非表示)にチェックを入れることで「実行ライセンス」が使用されるようになります**

Tips: 各項目横の？マークをクリックすると詳細が表示されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/d73d7fdc-af14-e0f1-1fc0-17c17641b6de.png)

3) バッチファイルの保存場所を指定(今回はデスクトップ) > デフォルトの名前がスクリプト名（メモ帳起動.tpr） > ファイル名の拡張子が.batであることを確認 > 保存をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/050b74e2-27a2-0f9e-1d90-e31cec3d2e6b.png)

4) CLIウィザードを閉じる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/d30da5cb-509d-fd19-6555-4c4a73acab25.png)

5) ファイル > 終了を選択してHeartCore Roboを閉じる
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/76752809-bad7-6460-c2b3-8c3741930f33.png)

**重要：開発エディタを閉じずに以降の手順を実行すると実行ライセンスが足りないメッセージが現れる場合があります**

6) 上記3)で指定した出力先(デスクトップ)のバッチファイル(メモ帳起動.tpr.bat)をダブルクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/1d979735-e912-920d-60bd-bd37233ededa.png)

7) コマンドプロンプトが起動 > キーボードマッピングが開始
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/e2493eb0-9791-80ca-a4f3-a351403d9e3a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/ae656e95-61ac-c2f6-7c57-7c4a74b84c76.png)

8) ロボットが起動

9) 終了するとプロンプトも自動で終了

**留意点：**
CLIから起動したロボットが稼働している最中にマウスやキーボード入力を行うとロボットが停止します。完了（以降の処理を続行しない場合）には**必ずCtrl+Cを押してからロボットを停止させて下さい。**右上のｘでCLIを閉じた場合にはCLI起動ロボットがライセンスセッションを持ったままになるので、他のマシンから起動する場合に、同時実行ライセンス数が不足する事があります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/c06ebd7d-be05-8a77-6555-5fc210037c97.png)
↓
バッチジョブを終了しますか(Y/N)?にはYもしくはyとタイプ > Enterキー
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/9133d744-d944-e5d5-4151-3f9c513b9967.png)

10) レポート出力フォルダ(デフォルトではProject > Reportsフォルダ)に結果が出力されているのを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/0d67322c-6d6d-95f8-36d2-4c127f5c9760.png)

#ロボットバッチファイルを作成してみる
Windowsタスクスケジューラを使用してHeartCore Roboを起動します。タスクスケジューラの設定については以下のサイトが役に立ちます。本稿ではタスクスケジューラの詳細はカバーしません。
https://qiita.com/Richard_Roe/items/44e16841f16ee40c6113

以下タスクスケジューラライブラリフォルダ("HeartCoreRobo"フォルダ)作成後
1) 右クリック > タスクの作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/8f5909f2-7ce0-bdd9-f885-b57fd6024d5d.png)

2) 全般タブ > スケジューラの情報を入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/afb9f77c-9f98-a5ee-138f-8928c9d5c3c5.png)

注１：今回のサンプルは「最上位の特権で実行する」にチェックを入れています。タスクスケジューラー運用のベストプラクティスとしてはチェックを入れる事が望ましいですが運用環境上のポリシーに準拠した設定を行って下さい。
注２：「ユーザーがログインしているかどうかにかかわらず実行する」にチェックを入れると保存時に管理者権限を持つOSユーザーの入力を求められます。

3) トリガータブ > 起動のスケジュールを設定(今回のサンプルは指定した時間1回のみと設定)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/c63ffbb9-b38b-7182-82d2-6a81878ef4a7.png)

3) 操作タブ > 新規 > ロボットバッチファイル(メモ帳起動.tpr.bat)を指定 > OKをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/5ff2ffd6-3a01-ac0b-ceb5-ae1af310a21f.png)

4） 条件タブ > 起動条件を指定 > OKをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/d3a4d960-46de-7863-45a7-dde6a19c76fd.png)

注：ノートPCでロボットを起動する場合には「コンピューターをAC電源で使用している場合のみタスクを開始する」のチェックを外しておくのが望ましいです。

5) タスクが追加されたのを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/78dce35c-3e4a-d808-3bb5-93ec5c6b5247.png)

6) 指定した時刻にロボットが自動で起動することを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/fbdac85d-6c30-517a-c38f-09bd1a54bb04.png)
↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254242/164fce3b-c05a-eb80-e89b-f9f08b1799d6.png)

参考：タスクスケジューラの履歴を有効にする方法：
https://toolmania.info/post-8065/

# 次回について
次回はHeartCore Robo v5.0以降の新機能であるSelenium連携を使用してのブラウザの操作方法をカバーします。HTMLタグやXpathを指定することでイメージに左右されないブラウザ操作が可能になります。