【FAQ】HeartCore Roboに関する質問集

# HeartCore Robo - FAQ(よくある質問)

HeartCore Roboを使って開発する際のFAQ(よくある質問)をまとめました。内容は随時更新します。

##動作条件について

###Q: HeartCore Robo開発・動作条件としてのJREはどのバージョン以降で動くのか？
A: 1.6以上になります。

###Q: JRE・JDKどちらでも動作するのか？
A: どちらでも動作しますが、Javaブロック（スクリプト内にJavaコードを部分的に記載する）や独自のJavaモジュールを使用する場合にはJDKが必要になります。JavaブロックやJavaモジュールの使用方法については今後記載します。

###Q: ロボットの開発・動作に望ましい条件は？
A:  
- 開発・実行環境の解像度は可能な限り合わせる（HeartCore Roboでは特に重要）
- ロボット開発中はデスクトップの解像度を変更しない
- アプリケーション表示スケールを合わせる
- マウス・キーボードの干渉が無いこと
- 実行端末のスタンバイ・スリープを無効にする
- 安定したネットワークの確保（例：電波が弱いWiFiで実行する事が無いようにする）
- OS・アプリ・PCからの通知をOFF
- 開発・実行は同一ブラウザ（バージョンも統一するのが望ましいが必須ではない）
- ブラウザのポップアップブロックはOFF
- アプリケーションのセッションタイムアウトが発生しない


##ライセンス

###Q: HeartCore Roboのライセンスはどのような形態か
A:　ライセンスサーバーへのアクセスが必要になります。トライアル申し込み及び製品購入後２−３営業日後に弊社ライセンスサーバーへのURLが提供されるのでライセンスマネージャーで設定します。ライセンスサーバーにはHTTPSでのアクセスが必要になります。

外部サーバーへのアクセスが許可されていない場合には、弊社が提供するライセンスサーバーモジュールを使って、社内ネットワーク上にライセンスサーバーを構築して頂く必要があります。

###Q: ライセンスサーバーURLを入力後にRefreshを実行しても、"TimeOut"等の表示が現れて、セットアップガイドの様にライセンスサーバーへの認証が行われず、HeartCore Roboが起動しない
A: プロキシ設定のため弊社指定のライセンスサーバーとの通信が正常に行われていません。社内ネットワークのプロキシ設定の有無については各社ネットワーク管理者とご確認下さい。
社内ネットワークからポケットWifiのネットワークに切り替えると、正常にライセンス動作する場合はプロキシに起因しています。

###Q: 今まで起動していたHeartCore Roboが、起動時にライセンスエラーが発生するようになった
A: 何かのきっかけで、弊社ライセンスサーバーとのセッションが開放されていない状況となります。

起動後に表示される「You have no valid license」メッセージボックスから、「Manage License Key」をクリック > リスト内に表示されている接続情報のNo.1を選択してから「Invalidateボタン」(リストの左上に表示されているゴミ箱)をクリックします。OKをクリックしてHeartCore Roboの再起動を選択します。

###Q: トライアルライセンスの期限
A: 弊社による発行から30日です。


##GUI
###Q:　日本語対応はされているのか
A: 全てのメニュー・メッセージは日本語対応されています。

###Q:　開発画面のルック＆フィールや環境設定は変えられるのか？
A: 編集 > プリファレンス設定から変えられます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/147730c3-db14-9a4d-b7ab-b5450e94c365.png)
↓
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/e5b3136a-1299-689a-43ed-b117f7ac4c42.png)


###Q: 「マウスが動かされたので、スクリプトは一時停止しました」が頻出し、動作が進行しない。
A: 何も触れていないにもかかわらず当該メッセージが表示される場合はマウス動作検知感度が良すぎて発生した可能性があります。
プリファレンス > スクリプト > ローカルマシン > マウス動作検知感度で感度が設定できます。
 ![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/3529a7a6-b611-f1c5-6d51-3519df70a4ff.png)

###Q: ロボット実行中のマウスの速度を変えたい。
A: 編集 > プリファレンス設定 > プラグイン > スクリプトコマンド > Mouseコマンドにてマウス操作に関するパラメータの設定が行えます。

「スムーズなMouse moveイベントを有効にする？」のチェックを外すとロボット実行時にマウスが動かなくなり実行速度の向上が期待出来ます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/3058dcee-6517-4220-76cc-245cbdb87ea9.png)

###Q: HeartCore Roboが開発時に認識しているデスクトップの解像度はどこからわかるか
A: タイトルバーに表示されています。
例：下記では1440*900の解像度で開発しています
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/a660481b-5356-834a-bb42-89caf94379c5.png)

###Q: HeartCore Roboの開発中にデスクトップの解像度を変更した場合どうなるのか
A: 解像度を変更する前に取得した画像を使ったイメージマッチングでは期待した動作が得られない場合があります。HeartCore Roboは起動時のデスクトップ解像度を保持しているため、途中でデスクトップの解像度を変更する場合には必ずHeartCore Robo開発ツールを起動し直す必要があります。


##スクリプト
###Q: 日本語は入力できるのか
A: プロジェクト名、スクリプト名、コメント、ログの内容で入力可能です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/6f67b8c3-fe74-8706-2b77-e8aea692e211.png)

###Q: スクリプトコマンド（命令文）を手入力する必要があるのか
A: ほぼ全てのコマンドはテンプレートが準備されており、スクリプト上での右クリックからのメニュー選択やプロパティ画面でのパラメータ指定が出来ます。
Excelファイルを扱う際の使用例:
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/75763179-1fd7-296f-2f6b-b84593fa2edd.png)
↓
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/2636b89b-28f2-7dae-937c-6835f3b19bd7.png)
↓
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/74be0488-6476-a5ac-6940-f5afdc294200.png)

###Q: 変数は定義出来るのか
A:　任意の場所で文字・数値型での定義が可能です。
Varで文字型定義
Evalで数値型定義
変数の定義例：

```java
Var myText="test" 
Eval myNumber=5
```

###Q: スクリプト内で中括弧｛｝で囲まれているのは何か
A: 変数です。変数はスクリプト内で定義可能です。

変数の使用例：

```java
Log {myText}
Eval myNumber={myNumber}+5
```

###Q: ツールパネルの変数タブにおいて、スクリプトに定義していない変数名が複数表示されているがこれらの変数は何か？
A: HeartCore Roboは、任意のスクリプトから参照することができる事前定義された（明示的に呼ばれる）システム変数のセットを提供します。 実行開始日、デスクトップサーバーのホスト名、実行されたスクリプトの名前など、さまざまな有用なデータが含まれています。定義済みの変数の完全なリストについては、以下のURLを参照してください。（現時点では英語表記）
http://www.docs.t-plan.com/robot/docs/latest/scripting/commref.html#var
※日本語訳したサイトについては近日中に公開予定です。

###Q: ロボット実行中に変数の値を確認するには？
Ａ: ツールパネルの変数タブから確認することができます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/d1f2cd56-d11d-6db2-5105-3346170011bd.png)

またLogコマンドを使用すればツールパネルの実行ログ上にメッセージを記録できます（コマンドの使用例：Log {変数名}）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/f167542b-724d-d7ba-97c7-5bc4066e78eb.png)
↓
![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/1d990a82-4ed6-f442-5090-59ff623ffdee.png)

###Q: 変数のスコープについて教えてください。
A: HeartCore Roboではグローバル変数とローカル変数の二種類の変数が存在します。グローバル変数はコマンドによって明示的に宣言は行いませんが、変数を宣言する位置によってグローバル変数かローカル変数かが決まります。

- グローバル変数：プロシージャやifやforなどのブロック外で変数を宣言することで、スクリプト全体で使える変数
- ローカル変数：プロシージャやifやforなどのブロック内で変数を定義することで、そのブロック内のスコープのみで使用可能な変数


###Q: プロシージャ（関数）の作り方を教えてください
A.: procedureコマンドを使うことでプロシージャを作成することが可能です。

```java
Procedure <プロシージャ名> {
	コマンド
}
```
なお、プロシージャ作成時には以下を注意して下さい。
① 左中括弧「{」は必ずprocedureコマンドと同じ行に存在しなければならない。
② 終端の中括弧「}」は必ず１行に単独で書かなくてはならない。
③ 同じ名前でプロシージャを定義した場合、最後に定義したものが優先される。
④ プロシージャは定義後であればスクリプト内のどこからでも呼び出すことができる。
⑤ 別のスクリプトファイルで定義されたプロシージャはincludeコマンドでインポートする必要がある。

プロシージャ終了時にはプロシージャ内で最後に実行されたコマンドの終了コードを返します。特定の終了コードを返すためにはExitコマンドで終了コードを指定することができます。

###Q: プロシージャに対して引数を渡せないのか？
A: プロシージャに対して引数を渡すことは可能です。
呼び出し側はプロシージャを呼び出す際に引数として半角スペース区切りで値を設定することで受け手に値を渡すことが可能です。

＜プロシージャ名＞ ＜引数１＞ ＜引数２＞ ……

{1}という変数名に引数１が入っていますので、{1}という書き方で引数を使うことができます（２番目の引数の場合{2}）。

※_PROCEDURE_ARG_COUNT：プロシージャに渡された引数の数を表すシステム変数

###Q: スクリプトのインデントをTabやSpaceキーで行うのが面倒だが
A: スクリプト画面内で右クリック > フォーマットコードを使えばFor文やIf文の範囲({}で囲まれる部分)が自動でインデントされます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/c651c008-c511-8c9b-1220-a0971d0e9c4f.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/254242/ec28f747-0507-b22e-c193-c78ed513c409.png)

#最後に
本ページのコンテンツはこれからも追加していきます。
次回からはロボットの定義となるスクリプトについて記載をします。