TagUI 4.0 : AIシンガポール発RPAの日本語解説

# はじめに

探したけど、日本語の解説が皆無だったので、大まかに翻訳しながら覚書作り…。
<b>はじめに謝っておきます。すみません、自分用のメモなのでかなり適当です</b>

<b>TagUI [オフィシャルレポジトリ](https://github.com/kelaberetiv/TagUI) </b>

<b>AIシンガポール [オフィシャルサイト](https://www.aisingapore.org/) </b>

```
TagUIは、デジタルプロセスオートメーション（RPA）用のCLIツールです。
TagUIは、シンガポール政府が資金を提供して、人工知能を開発する企業、AIシンガポールによって運営されています。
利用開始には、チュートリアル、スライド、またはビデオをチェックしてください。
この自動化製品は、RPA（ロボットプロセス自動化）として商業的に知られており、
主にマウスクリックやキーボード入力などのコンピュータアプリケーションとのユーザー対話を再現することを目指しています。
```

なるほど、政府主導のツールなんですね。次に、見出し部分を訳しました。

```
TagUIは、デジタルプロセスオートメーション（RPA）用のCLIツールです。
人工知能を構築するために政府が資金を提供しているAIシンガポールによって維持されています。
開始するには、チュートリアル、スライド、またはビデオをチェックしてください。

特徴
 可視または不可視のChromeを自動化する
 ウェブサイトとデスクトップの視覚的自動化
 20カ国以上の人間言語とJavaScriptで書く
 ウェブアクションを記録するためのChrome拡張機能
 ビッグデータ/ AI / ML用のR＆Python統合

何のためのものですか?

UI（ユーザーインターフェイス）の自動化の目的は、Webサイトやデスクトップとのコラボレーションを再現し、
コンピュータがあなたのスケジュールや条件に基づいてあなたのためにできるようにすることです。 
TagUIを使用すると、プロセスの自動化、データ取得、Webアプリケーションのテストなど、
繰り返しまたは時間のかかるタスクを迅速に自動化できます。

詳細な情報や、フローサンプルセクションに直接ジャンプして、自然言語のような構文でTagUIの自動化の例を参照してください。こ
れは完全な機能を備えた無料のオープンソースツールであるため、
アップグレードすることも、有料のサブスクリプションもありません。

意見やバグをフィードバックするには、ディスカッションするか、ksoh@aisingapore.orgにメールしてください。
```

# 特徴

- 主な強み

```
クロスプラットフォーム、Windows、MacOS、Linuxで動作
ユーザーがソースコードを表示できるようにセキュリティを強化
フィーチャの改善における迅速な反復サイクル
Apache 2.0オープンソースライセンスの下で使用する$ 0
使いやすく、したがって迅速な開発+展開
ITポリシーの展開が簡単で、簡単に解凍して実行できます
AI / ML / DL用のPythonとRとのネイティブな統合
Azure / Amazon認知サービスへの簡単なAPIコール
```

- ニュートラルの違い

```
フローチャートではなく21の人間言語で書かれたスクリプト
C＃/ VBの代わりに高度なスクリプトのためのJavaScript
視覚的およびOCRベースのデスクトップアプリケーションの自動化
```

- 主な弱点

```
エンタープライズ監査、コントロール、ダッシュボード、レポートの欠如
インシデントハンドリングのためのSLAまたは24/7サポートチームの欠如
大規模な開発チームの欠如（容易に> 30人）
長年に亘って成長したユーザー/開発者ベースの欠如
コンサルタント/パートナーネットワークの不足
```

<b>TagUIは、異なる人間言語の意図をUIオートメーションを実行するJavaScriptコードの行に変換します。
内部では、Chrome DevToolsプロトコル、Sikuli、CasperJS、PhantomJS＆SlimerJSを使用しています。</b>

# 動作機構

![image.png](https://qiita-image-store.s3.amazonaws.com/0/114928/15574f97-09fe-6352-85bc-19aea93d3d8b.png)


# セットアップ

TagUIは、Windows、macOS、Linux上で動作します。
TagUIは、セットアップは不要です。ただパッケージを展開するだけで利用できます。
またほとんどの環境で、必要な依存関係はすべてパッケージ化されています。

- macOS

https://raw.githubusercontent.com/tebelorg/Tump/master/TagUI_macOS.zip

- Linux

https://raw.githubusercontent.com/tebelorg/Tump/master/TagUI_Linux.zip

- Windows

https://raw.githubusercontent.com/tebelorg/Tump/master/TagUI_Windows.zip

<font color=red> ※ TagUIのいくつかのコンポーネントがスペースの入ったフォルダ、またはファイル名でうまく動作しないため、パスやフローファイル名のスペースを避ける </font>

- 推奨される展開場所について

```
 Windows - c:\
 macOS - desktop
 Linux - /home/your_id
```

# 既知のトラブルシューティング

- Windowsコンピュータの場合、「MSVCR110.dllが見つかりません」というエラーが表示された場合は、MicrosoftのWebサイト（vcredist_x86.exeを選択）からインストールしてください。このファイルはTagUIパッケージのWindows PHPエンジンを実行するために必要です。

- 新しいMacOSバージョンでは、 'dyld：Library not loaded'エラーが発生した場合、この方法でOpenSSLをインストールしてください。

```
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update && brew upgrade
brew install openssl
```

すでにHomebrewが導入されている場合は、以下の手順

```
brew update && brew upgrade
brew install openssl
```

- PHPがあらかじめインストールされていないLinux（Ubuntuなど）では、GoogleにPHPをインストールする方法（例：Ubuntu、apt-get install php）があります。ほとんどのLinuxディストリビューションにはすでにPHPが付属しています。

Redhat系

```
sudo yum install php
```

Debian系

```
sudo apt-get install php
```


<font color=red> ※オプション - ブラウザの解像度、ステップタイムアウト（10秒など）など、システムの初期設定は、tagui_config.txtにて設定を記述し適用します。</font>

# 使い方(概要)

このセクションでは、TagUIの実行、Chrome拡張機能の使用、およびいくつかの例についての解説を行います。
まず、コマンドラインでのTagUIの実行について。

- Windows

```
tagui.cmd flow_filename [オプション]
```

- macOS / Linux

```
./tagui flow_filename [オプション]
```

 フローファイルは、ローカルファイル(./filename)または、オンラインファイルのURL(https://hostname/filename)にすることができます
 ファイル名には拡張子がなく、.txtまたは.jsまたは.tagui拡張子など任意に設定して問題ありません
 パラメータなしでtaguiと入力すると、バージョンとオプションが表示されます

 コマンドプロンプトやターミナルフォントのサイズが小さすぎる場合は、
 読みやすいようにもっと大きなフォントサイズに設定することができます。

 次の例では、Yahoo Webサイトで検索を実行し、結果のスクリーンショットをキャプチャするスクリプトを実行します

- Windows  

 taguiフォルダをc：\に解凍します。
 「スタート」メニュー - >「ファイル名を指定して実行」 - >「cmd」と入力し、次のように入力します

```
C:
cd\
cd C:\tagui\src
tagui samples\1_yahoo
```

- macOS

 taguiフォルダをデスクトップに解凍します。 
 Apps  - > Utilities  - > Terminalからターミナルを開き、次のように入力します

```
cd /Users/your_id/Desktop/tagui/src
./tagui samples/1_yahoo
```

- Linux

 taguiフォルダをホームフォルダ、例えば/home/your_idに解凍し、次のように入力します

```
 cd /home/your_id/tagui/src
 ./tagui samples/1_yahoo
```

<font color=blue> スクリプトがうまくいけば、5つの.pngファイルが出来上がるでしょう </font>

- 可視状態で実行状態の確認をするには

 これで、chromeオプション（Windowsの場合はtagui samples\1_yahoo chrome、macOS / Linuxの場合は./tagui samples/1_yahoo chrome）を入力して、Chromeブラウザで同じ自動操作を試すことができます。
 どのようにオペレーションがされているか、サンプルではYahoo!とDuckDuckGoのウェブサイトを用いた操作を見ることができます。

# 外部からの実行について

TagUIは、デスクトップアイコン、スケジュールされたタスク、またはREST API呼び出しから実行することもできます。

- TagUIでサポートされるコマンドラインオプションとその概要

|オプション |概要|
|---|---|
|headless |デフォルトのPhantomJSではなく、見えないChromeウェブブラウザで実行 (first install Chrome)|
|chrome |見えないPhantomJSではなく、目に見えるChromeウェブブラウザで実行 (first install Chrome)|
|firefox |見えないブラウザではなく、目に見えるFirefox Webブラウザで実行 (first install Firefox)|
|upload |自動化フローと結果をhastebin.comにアップロード (expires 30 days after last view)|
|report |ウェブサーバー上で実行結果を共有するためのWebレポート (default is only a text log file)|
|debug |PhantomJSのランタイムバックエンドメッセージを表示して詳細なトレースとロギングを行う|
|quiet |明示的な出力を除いて出力なしで実行する (echo / show / check / errors etc)|
|speed |データテーブル読み込みの3秒間の遅延をスキップする (and skip restarting of Chrome)|
|test |CI / CD統合のためのチェックステップテストアサーションによるテスト (output XUnit XML file)|
|baseline |実行ログと相対パス出力ファイルを別のベースラインディレクトリに出力する|
|input(s) |自動化フローで使用する独自のパラメータを変数p1〜p9として追加します|
|data.csv |多くのレコードのバッチ自動化のためのデータテーブルとして使用するcsvファイルを指定する|

- オートメーションログファイル、および任意のディレクトリからtaguiを実行する方法

各自動化の実行後、.logファイルは実行の出力を格納するために作成され、.jsファイルは生成されたJavaScriptファイル、.rawはそのフローで呼び出されたモジュールのサブスクリプトを読み込んだ後の展開されたフローです。これらのファイルはユーザー参照のためのもので、オートメーション・フローのデバッグやトラブルシューティングに役立ちます。

```
  taguiをどこからでも実行でき用にするには：

  MacOS / Linuxの場合、シンボリックリンクを作成するには、以下のコマンドを使用します。
  ln -sf /full_path/tagui/src/tagui /usr/local/bin/tagui

  Windowsの場合、環境変数PATHにインストール先フォルダを追加してください。(任意のパスに展開した場合はパスをフルパスで追加)
  PATH=C:\tagui\src;
```

※Firefox / SlimerJSを使用してオートメーションを可視状態で実行するのに問題がある場合、以下のサイトを参考に設定する
https://docs.slimerjs.org/current/installation.html#using-unstable-version-or-very-old-versions-of-firefox

- タスク実行

<b>Mac/Linuxの場合、Crontabであれば以下のように設定できます</b>

```
#Crontab 1行目付近###
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/full_path/tagui/src
#####################

0 8 * * * /full_path_on_your_server/tagui flow_filename option(s)
```

<font color=orange>この場合、内部的にパスが通っていないと実行されないため、実行ユーザの環境変数からPATHを持ってきておきましょう。</font>


<b>Windowsの場合、タスクスケジューラに設定します</b>

```
 トリガー : 時間
 プログラム/スクリプト : C:\tagui\src\tagui.cmd
 引数の追加(オプション) : C:\tagui\src\flow_filename option(s)
```

<font color=orange>注意点としては、フローファイルもフルパスで指定することです。</font>

- CHROME 拡張機能

https://chrome.google.com/webstore/detail/tagui-web-automation/egdllmehgfgjebhlkjmcnhiocfcidnjk/

TagUI Chrome拡張機能は、Resurrectioツールに基づいており、ページナビゲーション、Web要素のクリック、情報の入力などの手順を記録します。オートメーションフローの記録を開始するには、ChromeツールバーのTagUIアイコンをクリックします。右クリックすると、Webページのスクリーンショットのキャプチャや要素識別子の表示など、いくつかのTagUIステップへのショートカットが表示されます。
録画は完全なものではありません（たとえば、基礎となる録画エンジンがフレーム、ポップアップウィンドウ、タブキー入力をキャプチャできないなど）。手動ですべてを入力するのではなく、一部の編集でフロー作成を簡素化することを目的としています。ステップのシーケンスの記録、調整の編集、オートメーションの再生の例については、このビデオを参照してください。

https://www.youtube.com/watch?v=bFvsc4a8hWQ

- 対応言語

tagui_config.txtにて、自然言語の設定をします、デフォルトは `english` 

```tagui_config.txt
// TagUI web automation browser settings
// verbose style to support tester module

// set default flow language
var tagui_language = 'english';

// set time in ms before error out
casper.options.waitTimeout = 10000;
casper.options.logLevel = 'debug';

// set web browser display size
casper.options.viewportSize = {
width: 1366,
height: 768
};

// settings for PhantomJS mode
casper.options.pageSettings = {
loadImages: true,
loadPlugins: true,
webSecurityEnabled: true,
ignoreSslErrors: false,
localToRemoteUrlAccessEnabled: false
};
```

他の言語の情報は以下にあります。が、Japaneseを選ぶとなんとなく微妙な気分になります、正直フローを書くのに日本語は向いてないです。

https://github.com/kelaberetiv/TagUI/tree/master/src/languages

|EN |JA|
|---|---|
|click |クリック|
|tap |タップ|
|move |動く|
|hover |ホバー|
|type |タイプ|
|enter |入る|
|select |選択する|
|choose |選択する|
|read |読む|
|fetch |フェッチ|
|show |ショー|
|print |印刷する|
|save |セーブ|
|echo |エコー|
|dump |ダンプ|
|write |書きます|
|snap |スナップ|
|table |表|
|live |ライブ|
|download |ダウンロード|
|upload |アップロード|
|load |負荷|
|receive |受け取る|
|frame |フレーム|
|popup |現れる|
|wait |待つ|
|timeout |タイムアウト|
|seconds |秒|
|second |二番|
|api |api|
|dom |dom|
|js |js|
|else if |else if|
|else |else|
|if |if|
|for |ために|
|while |while|
|check |チェック|
|more than or equals to |以上または等しい|
|more than or equal to |以上|
|greater than or equals to |より大きいか等しい|
|greater than or equal to |以上|
|higher than or equals to |より高いか等しい|
|higher than or equal to |以上|
|less than or equals to |より小さいか等しい|
|less than or equal to |以下|
|lesser than or equals to |より小さいか等しい|
|lesser than or equal to |より小さいか等しい|
|lower than or equals to |より小さいか等しい|
|lower than or equal to |より小さいか等しい|
|more than |より多い|
|greater than |より大きい|
|higher than |よりも高い|
|less than |未満|
|lesser than |より小さい|
|lower than |より低い|
|not equals to |等しくない|
|not equal to |等しいではない|
|equals to |等しい|
|equal to |に等しい|
|not contains |含まれていない|
|not contain |含まれていない|
|contains |含まれる|
|contain |含む|
|and |そして|
|or |または|
|from |から|
|to |に|
|as |として|
|title() |タイトル（）|
|url() |url（）|
|text() |テキスト（）|
|timer() |タイマー（）|
|count() |カウント（）|
|present() |プレゼント（）|
|visible() |visible（）|

- 画像認識

TagUIには、Sikuli（OpenCVベース）との統合機能が組み込まれており、相互作用のためのWeb要素とデスクトップユーザーインターフェイス要素を識別できます。ビジュアルオートメーションをサポートする手順は、クリック、ホバー、タイプ、選択、閲覧、表示、保存、スナップです。要素識別子の代わりに視覚的に見えるもののイメージファイル名（.pngまたは.bmp形式）を指定するだけで、通常の自動化手順と一緒にビジュアルオートメーションを使用することができます。また、ビジョンステップを使用することで、複雑なキーストロークシーケンスを入力するなどのカスタムSikuliコマンドを送信できます。
Sikuliは、インストーラによって処理される複雑な依存関係のため、TagUIパッケージインストールから除外されています。まず、Java JDK v8がインストールされていることを確認します。 Sikuliをtagui / src / tagui.sikuliフォルダにダウンロードしてセットアップします（オプション1  -  Pack1を選択してください）。セットアップ中にエラーメッセージをダウンロードした場合は、このファイルの内容をtagui / src / tagui.sikuliフォルダに解凍し、sikulixsetup-1.1.3.jarを右クリックして開くか、管理者として実行してください。 Windowsでは、表示倍率が100％に設定されていることを確認してください。
特定の要素の代わりに画面に入力するには、page.pngをテキストとして入力するか、page.bmpをテキストとして入力します。画面全体のスナップショットまたはOCRを実行するには、snapまたはreadのステップの要素識別子としてpage.pngまたはpage.bmpを使用します。通常のヘルパー関数visible（）/ present（）を使用して、画像が画面上に見えるかどうかを確認することもできます。画像ファイル名には相対パスがサポートされています（例：pc.png、images / button.bmp）。ビジュアルオートメーションには画面（リアルまたはXvfb）が必要です。 Tesseract OCR（光学式文字認識）は、視覚的にテキストを検索するために使用されます。

- PYTHON

TagUIには、大規模なデータや機械学習のための多くの一般的なフレームワークを持つプログラミング言語であるPythonとの組み込み統合機能（v2とv3の両方に対応）があります。 pyステップは、Pythonでコマンドを実行し、それらのコマンドの出力を取得するために使用できます。 TagUIでPythonの統合を使用するには、まずあなたのOS用のPythonをダウンロードしてください。 macOSとLinuxは通常、Pythonでプリインストールされています。コマンドプロンプトからpythonコマンドにアクセスできることを確認してください。

```
// using py step to denote Python code, and getting back output from py_result
py a=1;b=2
py c=a+b
py print(c)
echo py_result

// alternatively, you can use py begin and py finish to denote a Python code block
// indentation of Python code is also supported, for example in conditions or loops
py begin
a=1;b=2
c=a+b
print(c)
py finish
echo py_result

// an example of passing dynamically generated variables to Python integraton
phone = 1234567
name = 'donald duck'
py_step('phone = ' + phone)
py_step('name = "' + name + '"')

py print(name)
echo py_result
py print(phone)
echo py_result
```

- R 

TagUIには、統計的な計算やグラフィックスのためのオープンソースのソフトウェア環境であるRとの統合機能が組み込まれています。 Rは大きなデータと機械の学習に使用できます。 rステップを使用して、Rでコマンドを実行し、それらのコマンドの出力を取り出すことができます。 TagUIでR統合を使用するには、まずあなたのOS用のRソフトウェアをダウンロードします。コマンドプロンプトからRscriptコマンドにアクセスできることを確認してください（パスに追加するか、シンボリックリンクしてください）。

```
// using r step to denote R code, and getting back output from r_result
r a=1;b=2
r c=a+b
r cat(c)
echo r_result

// alternatively, you can use r begin and r finish to denote a R code block
r begin
a=1;b=2
c=a+b
cat(c)
r finish
echo r_result

// an example of passing dynamically generated variables to R integraton
phone = 1234567
name = 'donald duck'
r_step('phone = ' + phone)
r_step('name = "' + name + '"')

r cat(name)
echo r_result
r cat(phone)
echo r_result
```

- CLI補助

TagUIスクリプトはJavaScriptコードに変換するための自然言語のような構文になっています。コマンドラインで自然言語に似た構文を使用するとさらに優れています。 tagui download_bank_report june creditcardを入力する代わりに、パラメータjune creditcardを使用してオートメーションフローdownload_bank_reportを実行すると、erina download my june creditcard bank reportと入力できます。これは、実行するために保存したオートメーションファイル名を呼び出すよりも直感的です。アシスタントの実際のCLI（コマンドラインインターフェイス）のデモについては、このビデオを参照してください。

https://www.youtube.com/watch?v=Sm4WNQ89gRA

- FLOW SAMPLES

|Flow Sample |Purpose|
|---|---|
|1_yahoo |ヤフーでgithubを検索し、結果のスクリーンショットをキャプチャ|
|2_twitter |Twitterのページに行き、いくつかのプロフィール情報を保存する|
|3_github |GitHubページに行き、リポジトリファイルをダウンロードします|
|4_conditions |自然言語で条件を使用する例|
|5_repositories |ロシアのソーシャルメディアサイトVK.comでリポジトリを使用しています|
|6_datatables |一連のフローは、GitHub情報を取得して動作させるためにデータテーブルを使用します|
|7_testing |CI / CD統合にチェックステップアサーションを使用する方法を示します|
|8_hastebin |アップロード結果をhastebin.comにアップロードするアップロードオプションで使用|
|9_misc |popup、frame、dom、js、{}ブロックの使用方法を示します。|
|a_facedetect |顔認識を使用してウェブページ上のプロフィール画像を検出する|
|b_visualoutlook |デスクトップMS Outlookの電子メール送信に視覚的認識を使用する|
|c_chineseflow |他の言語でフローを実行する (first, change src/tagui_config.txt)|

- フローステップについて

|Basic Step |Parameters (separator in bold) |Purpose|
|---|---|---|
|http(s):// |移動先URLを入力する ('+variable+' for variable) |指定されたウェブページに行く|
|click |クリックする要素 |要素をクリックする|
|rclick |要素を右クリックする |要素を右クリック|
|dclick |ダブルクリックする要素 |要素をダブルクリックする|
|hover |ホバーする要素 |カーソルを要素に移動する|
|type |テキストとしての要素 ([enter] = enter, [clear] = clear field) |要素をテキストとして入力|
|select |オプション値として選択する要素([clear] = clear selection) |ドロップダウンオプションを選択|
|read |読み込む要素(page = webpage) to variable name |要素テキストを変数にフェッチする|
|show |読み込む要素 (page = webpage, ie raw html) |出力する要素テキストを出力する|
|save |要素（page = webpage）からオプションのファイル名|要素テキストをファイルに保存する|
|load |ファイル名から変数名へ|ファイルコンテンツを変数にロードする|
|echo |テキスト（引用符で囲む）と変数 |出力するテキスト/変数を出力する|
|dump |テキスト（引用符で囲む）と変数（オプションのファイル名）|テキスト/変数をファイルに保存する|
|write |テキスト（引用符で囲む）と変数（オプションのファイル名）|テキスト/変数をファイルに追加する|
|variable_name |=値（テキストの場合は引用符で、連結の場合は+を使用）|変数variable_nameを定義する|
|// (on new line) |ユーザーのコメント（実行中は無視されます）|ユーザーのコメントを追加する|
|tagui |相対ファイル名または絶対ファイル名（MODULESセクションを参照）|別のフローを実行する|
|ask |ユーザに対する質問または指示（ask_resultに格納された返信） |ユーザーに入力を求める|
|live |Chrome /ビジュアル自動化のためのステップやコードのインタラクティブな試行|ライブモードに入る（まだFirefoxはない）|

- チェック、api、実行、dom、js、r、py、ビジョン、コードブロックなど

|Pro Step |Parameters (separator in bold) |Purpose|
|---|---|---|
|snap |要素（page = webpage）からオプションのファイル名 |スクリーンショットをファイルに保存する|
|snap (pdf) |page to filename.pdf（Headless Chrome / PhantomJS）|ウエブページを基本的なPDFにする|
|table |要素（XPathセレクターのみ）からオプションのfilename.csv |Tableタグをcsvに保存|
|wait |オプションの時間（秒） (default is 5 seconds) |明示的にある時間待つ|
|check |falseの場合は真のテキスト（引用符で囲む）の場合は条件文（引用符で囲む）|条件を確認して結果を出力する|
|upload |アップロードするファイル名としての要素（CSSセレクタのみ）|ファイルをウェブサイトにアップロードする|
|download |保存するファイル名にダウンロードするURL|URLからファイルにダウンロードする|
|receive |保存するファイル名を調べるurlキーワード|ファイルへのリソースを受け取る|
|frame |フレーム名サブフレーム名（存在する場合） |次のステップまたはフレーム/サブフレーム内のブロック|
|popup |検索する新しいタブウィンドウのurlキーワード |新しいタブウィンドウで次のステップまたはブロック|
|{ and } |{ブロックを開始するには}を使用し、ブロックを終了するには（新しい行に） |ステップとコードのブロックを定義する|
|api |api呼び出しの完全なurl（パラメータを含む） |api_resultに応答する|
|run |パラメータを含むOSシェルコマンド |OSコマンドを実行して＆run_resultに保存してください|
|dom |ドキュメントオブジェクトモデルのJavaScriptコード |domのコードを実行し、dom_resultに保存します。|
|js |javascript文（自動検出をスキップ）|明示的にJSコードとして扱う|
|r |大きなデータと機械の学習のためのRステートメント|R文を実行してr_resultに保存する|
|py |ビッグデータと機械学習用のPythonコード|Pythonコードを実行してpy_resultに保存する|
|vision |カスタムビジュアル自動化コマンド |カスタムsikuliコマンドを実行する|
|timeout |ステップエラーが発生するまでの秒数 |自動待ちタイムアウトを変更する|

また、コードの記述を補助するツールもWindowsのみですが存在します。

TagUI Writer [ダウンロード](https://github.com/adegard/tagui_scripts/blob/master/Tagui-Writer1.01.exe)
起動すると常駐するので、その状態で、CTRLキーを押しながら、クリックすると、フローコード入力の補助を行ってくれます。

- 条件例

|Condition (in natural language) |JavaScript|
|---|---|
|example - if day equals to "Friday" |if (day == "Friday")|
|example - if menu contains "fruits" |if (menu.indexOf("fruits")>-1)|
|example - if A more than B and C not equals to D |if ((A > B) && (C != D))|
|example - for n from 1 to 4 |for (n=1; n<=4; n++)]|
|example - for n from 1 to infinity |for (n=1; n<=1024; n++)]|
|example - while cupcakes equal to 12 |while (cupcakes == 12)|
|contain |.indexOf("text")>-1|
|not contain |.indexOf("text")<0|
|equal to |==|
|not equal to |!=|
|more than / greater than / higher than |>|
|more than or equal to / greater than or equal to / higher than or equal to |>=|
|less than / lesser than / lower than |<|
|less than or equal to / lesser than or equal to / lower than or equal to |<=|
|and |&&|
|or |｜｜||

- ヘルパー機能

|Function |Purpose|
|---|---|
|csv_row(row_array) |csvファイルに書き込むためのフォーマットされた文字列を返します。|
|present('element') |指定された要素識別子が存在するかどうかをtrueまたはfalseで返します。|
|visible('element') |指定された要素識別子が可視かどうかをtrueまたはfalseで返します。|
|count('element') |指定された要素識別子に一致する要素の数を返す|
|url() |現在のWebページのページURLを返す|
|title() |現在のWebページのページタイトルを返す|
|text() |現在のWebページのテキストコンテンツを返す|
|timer() |ページロードの時間測定|

- モジュール

これにより、複雑なフローを構築するために自動化スクリプトを再利用して複合化することができます

サブスクリプトは、複数の深さで、ファイル名や拡張子を持つことができます
サブスクリプトを呼び出すには、taguiステップの後に絶対または相対ファイル名を使用します
たとえば、tagui login_crmまたはtagui crm.loginまたはtagui outlook \ sendmail
変数は、親スクリプトとサブスクリプトで直接使用または変更できます

ヒント -  taguiステップは、サブスクリプトの内容をtaguiステップが使用される行で、サブスクリプトの内容をフローに展開することによって機能します。したがって、親フローファイルからアクセス可能な変数には、サブスクリプトからアクセスすることもできます。オートメーション・フローの拡張内容を格納する.rawファイルが作成されます（エラー・メッセージのチェックに役立ちます）。別の方法として、実行ステップを使用してフローファイルでtaguiを実行して、別の子プロセスとして実行することもできます。

- リポジトリ

リポジトリのcsvファイルには2つの列があります（例：名前を付けるヘッダー）

TagUIは、フローの同じフォルダ内のローカルリポジトリファイルtagui_local.csvを検索します
TagUIは、tagui / srcフォルダ内のグローバルリポジトリファイルtagui_global.csvも検索します
あなたのフローで `object`を使うと、それをその定義に置き換えます（オブジェクトを含むことができます）
例えば、 `type email`は、user@gmail.comのようにタイプuser-email-textboxになります。


|OBJECT |DEFINITION|
|---|---|
|email |user-email-textbox|
|create account |btn btn--green btn-xl signup-btn|
|type email |type `email` as user@gmail.com|

- データテーブル

TagUIを実行しているときは、使用するcsvファイルを指定します。たとえば、tagui flow_filename trade_data.csv

TagUIは各行をループして、異なる行のデータを使用して自動化を実行します
例えば、あなたの流れの中のTESTCASE  -  `testname`をエコーし​​ます。TESTCASE  -  Trade USDSGD
echo `` [iteration] `'は現在の繰り返し番号を表示するためにあなたのフローで使うことができます
TagUI内部用のtagui / srcフォルダにtagui_datatable.csvファイルが作成されます

|# |testname |username |password |pair |size |direction|
|---|---|---|---|---|---|---|
|1 |Trade USDSGD |test_account |12345678 |USDSGD |10000 |BUY|
|2 |Trade USDSGD |test_account |12345678 |USDJPY |1000 |SELL|
|3 |Trade EURUSD |test_account |12345678 |EURUSD |100000 |BUY|

- ライセンス

TagUI is open-source software released under Apache 2.0 license

# 最後に

<b>ちょっと使えるかどうか調査するだけだったので、すごいメモ感ありますが、反響があるようだったらもうちょっとしっかり書きます…</b>
こんな、メモが参考になれば幸いです。