UiPathのプロジェクトファイルは、XAMLファイルと呼ばれるテキストベースのファイルのため、テキストエディタで参照することも可能です。

XAMLファイルのベースとなるXMLファイルはテキストベースのドキュメント且つ、マークアップ言語が「構造や修飾情報などの指示をテキストファイルに記述するための言語」であることから、XAMLファイルはテキスト形式=UiPathの「.xaml」ファイルがテキスト形式であると判断できます。(※1)

XAML(Extensible Application Markup Language)ファイルとは、XMLをベースとしたMicrosoft社が開発したマークアップ言語で、「.xaml」という拡張子を持ちます。

マークアップ言語とは「タグ」を使用して文章に意味を持たせるファイルの書き方です。
“<要素名>” と “</要素名>”で囲んだ文字列を修飾するものが「タグ」と呼ばれ、囲んだ範囲がそのまま影響範囲となります。
どのように表示したいか、タグを使用して記述することで文章構造を表現します。(※2)

“<要素名>”を開始タグ、”</要素名>”を終了タグ、タグに囲まれた文字列を「要素の内容」、タグと要素の内容を合わせて「要素」といいます。
XAMLでは「要素の内容」にアプリケーションソフトの表示や操作に関わる部分を記述します。

上記を踏まえ、UiPathのプロジェクトファイル(.xaml)をテキストエディタで展開して確認してみると、前述のように「要素の内容」にはアプリケーションソフトの表示や操作に関わる部分が記述されており、且つタグで囲まれていることが確認できます。

UiPath Studio上で展開した際には一見するとテキストファイルではなく「シーケンス」内や「フロー」内へ各種「アクティビティ」が配置されているように見えますが、上記に加えて各種アクティビティのプロパティ情報もテキストでデータが保持されています。

例として、以下のように構成されているプロジェクトがあります。
当プロジェクトをテキストで展開した際、テキスト(XAML)にてプロパティ含めて情報が記述されていることが確認できます。

プロジェクト

 

たとえば次のように設定されているクリックアクティビティのプロパティでは実行前待機時間が3000ミリ秒、実行後待機時間が500ミリ秒と設定されていますが、上記は「 DelayBefore=”3000″ DelayMS=”500″」と記されており、当該情報を読み取ることができます。
(それぞれ赤枠内参照)

クリックアクティビティのプロパティ

クリックアクティビティのプロパティ

 

その他にも設定されたプロパティは同様にテキストにて記述されております。

例えば上記画像の青で囲われた部分では、UiPath Studio上にてクリックタイプが「ClickType.CLICK_SINGLE」と設定されており、テキストで参照した際には「ClickType=”CLICK_SINGLE”」と記述されております。

更に画像の緑で囲われた部分では「Selector=”&lt;html app=’chrome.exe’ title=’日本気象協会 tenki.jp【公式】 / 天気・地震・台風’ /&gt;&lt;webctrl parentid=’hd’ tag=’A’ /&gt;”」というように、クリックしたい箇所のUI要素が記述されていることも確認できます。

 

また、変数の定義(記述)もXAML内には存在します。

当プロジェクトの変数は以下のように設定されていて、「strTest」のスコープはルート(一番外側)、「strTest2」のスコープはMain内に配置された「テストシーケンス」です。

テストシーケンス

上記をテキストで展開すると以下のように記述されています。

<Sequence.Variables>
<Variable x:TypeArguments=”x:String” Name=”strTest” />
</Sequence.Variables>

<Sequence.Variables>
<Variable x:TypeArguments=”x:String” Name=”strTest2″ />
</Sequence.Variables>

テキスト展開

テキスト展開

上記は「string」型変数を定義されていることがわかりますが、それぞれ記述されている箇所を確認すると、以下のように「それぞれの変数のスコープ内」にて定義されていることが確認できます。
(青枠がシーケンス、赤枠が変数定義箇所)

<Sequence DisplayName=”Main Sequence” sap:VirtualizedContainerService.HintSize=”492,561.3333333333334″ sap2010:WorkflowViewState.IdRef=”Sequence_1″>
<Sequence DisplayName=”テストシーケンス” sap:VirtualizedContainerService.HintSize=”450,224.66666666666666″ sap2010:WorkflowViewState.IdRef=”Sequence_2″>

テキスト展開

つまりUiPathのプロジェクト=RobotはStudio上で展開する場合には一見そうとは見えませんが、実態はXAMLで記述されているプログラムであると言えます。

 

※1:【補足】
以下の「参考ドキュメント」内にて、「10 MB未満のTXT、CS、VB、JSON(project.jsonファイルを除く)、 およびXMLファイルをダブルクリックすると、構文の強調表示機能を備えたテキストエディターを使用してStudio内で編集できる」と説明されているため、UiPath における「.xaml」ファイルも同様にテキスト形式のファイルであることが示されています。

参考ドキュメント:
オートメーションプロジェクトについて-プロジェクトを管理する-
https://docs.uipath.com/ja/studio/standalone/2023.10/user-guide/about-automation-projects#managing-projects

 

※2:【補足2】
XAMLには以下のような決まりがあります。(一例)
UiPathのプロジェクトファイルをテキストエディタで展開して参照した際にも、以下に則っていることが確認できます。

 

■例外なく、開始タグと終了タグは対になっている必要があります。
また、終了タグは置き換えで「 />」を使用することも可能です。

【例1】
開始タグと終了タグで挟む
<Element>~~~
</Element>

【例2】
「/>」は終了タグの省略形であり、使用する場合は要素を記述した最後に「 />」を加えます。
この場合、通常の終了タグ(以下では</Element>)は必要ありません。
<Element>~~~ />>

■タグ内の大文字と小文字は区別されます。
一般的にXAMLファイルでは大文字と小文字が区別され、上記はタグ内にも該当します。

例えば、<tag>と<Tag>は別物と区別されるため、誤って「<tag>~要素の内容~</Tag>」のように記述されている場合は、タグが対になっていないと見なされてエラーになります。

■ルート要素は1つだけであること。また、ルート要素を必ず設定(記述)すること。
要素の中には要素を入れ子にすることが可能であり、その際には外側の要素を親要素、内側の要素を子要素と呼びます。更にそれら全ての要素の一番外側になる要素をルート要素と呼ぶのですが、ルート要素は1つしか設定できません。
また、ルート要素を記述せずにその他の要素を並列で記述してしまうとエラーとなります。

【×例】
<Element>~~~
</Element>
<Element_2>~~~
</Element_2>

【〇例】
<List>
<Element>~~~
</Element>
<Element_2>~~~
</Element_2>
</List>

■親要素の終了タグが子要素の終了タグより先に来ないこと。
要素の内容は必ず開始タグと終了タグで挟まれている必要があるため、親要素の終了タグを子要素より先に記述はできません。

【×例】
<Parent>~~~
<Child>~~~
</Parent>
</Child>

【〇例】
<Parent>~~~
<Child>~~~
</Child>
</Parent>

参考ドキュメント:XAML の概要 (WPF .NET)
https://learn.microsoft.com/ja-jp/dotnet/desktop/wpf/xaml/?view=netdesktop-8.0

参考ドキュメント:WPF での XAML の概要 (.NET Framework)
https://learn.microsoft.com/ja-jp/dotnet/desktop/wpf/advanced/xaml-overview?view=netframeworkdesktop-4.8