【UiPath】【23.4】StudioX の現在地 ～ これから Studio と StudioX の違いを知りたい人向け ～

# はじめに

- 本記事では、UiPath バージョン 23.4 の Studio と StudioX の仕様差について説明します。
- 読者については、UiPath に関する基礎知識および多少のプログラミング経験のある方を対象に記述しております。StudioX について理解を深めたい場合は[***公式のアカデミーのコース受講***](https://academy.uipath.com/courses/build-your-first-automation-with-studiox-v202110-jp)をお勧めします。
- 記事の内容は、個人の見解または確認結果であり、UiPath の公式見解ではありません。
- 製品仕様や参考画像は 23.4 バージョンで構成しています。

# 利用に必要なライセンス

次のいずれかのライセンスをお持ちの場合、StudioX をもちいたオートメーション開発が可能です。
1. ***Automation Developer***（旧***RPA Developer***）
2. ***Citizen Developer***
3. ***Automation Express***

::: note
● Studio は1番の Automation Developer ライセンスが必要です。
● Community や ProTrial の無償ライセンスプランでは Automation Developer が付与されているため、Studio と StudioX はともに利用できます。
:::

# プロジェクトフォルダの構成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/4da29c93-f504-1170-da1d-324f51ff66cf.png)
新規プロジェクトを立ち上げた際、Studio のプロジェクトには存在しない次の3つのファイルが作成されます。
1. GlobalHandlerX.xaml（グローバルハンドラー）
1. Project_Notebook.ja.xlsx（プロジェクトノートブック）
1. RuntimeExecutionError_Template.html

1番は例外制御用の監視ワークフローだとおもってください。こちらのファイルのおかげで、***StudioX では例外制御を意識することなくオートメーションを開発することができます。***
3番は1番のグローバルハンドラーが例外をキャッチした際に、ユーザーにアクション（「リトライ」「スキップ」「停止」）を選択してもらうためのダイアログを表示します。
***StudioX は Attended Robot（有人ロボット実行）での運用を前提とした対話型ワークフローのプロジェクト構成になっています。***
※グローバルハンドラーを修正することで無人ロボット実行は可能です。ガイド上は「削除」でも無人ロボット可能と読み取れる箇所がありますが、Studio 開発時と同様に例外制御は別途実装いただく必要があります。

2番のプロジェクトノートブックはノンプログラミングでデータを加工するための補助ツールとおもってください。
プロジェクトノートブックには便利な関数があらかじめ埋め込まれており、VBやC＃のコードがわからなくても簡単に文字列操作等ができます。
***StudioX では、値の入力欄の「＋」ボタンからこのプロジェクトノートブックを呼び出せるため、直感的なセルやシートの範囲指定が可能です。***

参考ガイド：

https://docs.uipath.com/ja/studiox/standalone/2022.10/user-guide/frequently-asked-questions

StudioX と Studio はともに以下3種類のランタイムプロジェクトを指定できるものの、***Studio のプロジェクトを StudioX で編集することはできません。***（※同じランタイムプロジェクトであっても編集不可）
- Windows
- クロスプラットフォーム
- Windows - レガシ

:::note warn
● ***StudioX*** で作成したプロジェクト　→　Studio で編集可
● Studio で作成したプロジェクト　→　***StudioX で編集不可***
:::

# StudioX の特徴（UIベース）

![23.4X_1.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/15c8cc66-1c9c-449c-0bd8-a4097553fa44.jpeg)
プロジェクトの起動については、***「新規（プロセスプロジェクト）」「（既存を）開く」「テンプレート」の3種類***のみです。

::: note
Studio ではプロセスプロジェクトの作成・編集に加えて、次のプロジェクト等を立ち上げることができます。
- ライブラリプロジェクト
- テストオートメーション（モバイルテスト含む）
- バックグラウンドプロセス
→　***簡単な手元の業務自動化は StudioX で問題ありませんが、複雑な業務処理の実装や共通部品をもちいた開発などは Studio にライセンスプロファイルを切り替えましょう。***
:::

![23.4X_2.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/f1b9d983-94a4-1643-afca-97bb35653a21.jpeg)
StudioX ではプログラミングで意識すべき例外制御やロギングを都度考慮する必要のない設計となっており、***開発ツールでありながらデバッグ機能もないところは大きな特徴の一つです。***
これは開発者のスキルに関係なく、グローバルハンドラーで例外を拾えて、かつ、有人（眼前）でロボット実行する前提のために成り立つUIです。
ワークフローもシングルスレッド（直列 / 上から下へ）のシンプルなものの開発を想定しているため、***画面左のサイドパネルも「アクティビティ」パネルのみとなっています。***

::: note
処理毎にサブワークフローを作成したり、部品の雛型を呼び出してコピー・再利用したい方は、「プロジェクトパネル」や「スニペッド」パネルが表示される Studio で開発するのを勧めます。
:::

![23.4X_3.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/4ed46eed-cf9f-620e-3706-e8ba2d8c69f6.jpeg)
コーディング経験がない方向けに ***表示制御を入れて、値を認識しやすくしてくれているところ*** などは筆者が個人的にもっとも良いところだとおもうポイントです。（上は、***StudioX*** ／　下が Studio の画面イメージ）
![23.4X_4.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/44cc8d71-cfe0-acd5-f6d9-2536bfe73a5a.jpeg)
StudioX ではアクティビティに対して表示上のSEQ-Noを自動で付与してくれるので、他の開発者に編集対象のアクティビティについて伝える際など便利です。
![23.4X_5.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/03fb3eff-3538-5621-3edb-2d62c08e289e.jpeg)
StudioX では上の様に、「＋」ボタンから直感的に欲しい値を辿り指定できますが、Studio ではVBまたはC＃のコーディングに従って「Notes.Sheet("テキスト").Cell("テキスト")」の様に記述する必要があります。
お約束のダブルクォーテーションすら非表示にして、変数の場合、背景色をグレーにしている部分など、市民開発者向けツールとしての矜持を感じます。

なお、プロジェクトノートブックを制御する関係上だとおもいますが、***StudioX のプロジェクトでは「単一のEXCELプロセススコープ」が既定で配置され、その中に業務処理を記述する仕様となっています。***
こちらも、StudioX のプロファイルで開発するときは非表示で気になりませんが、Studio ではそのまま表示されます。

次に、StudioX の『変数』と『引数』について補足します。
***19.10 のリリースから 22.4 までの間は「後で使用するために保存」「保存された値を使用」といった値指定のオプションがあり、「変数」や「引数」は在りませんでした。***
これも、コーディング経験のない方向けには、『変数』と『引数』を意識せずに済むため良い面もあったかとはおもいますが、Studio との互換性において制限が多かったかと想像します。
***StudioX で元来指定できたデータ型は「文字型」「数値型」「日付型」のみ***と言っても過言ではありません。
これが Studio で作成したプロジェクトを StudioX で編集できない（できないように制御されている）理由の一つだとおもいます。(実際に数年前、***StudioX のプロジェクトであっても、Studio で編集した後に StudioX で起動できなくなった***事象を確認しています。当時はそこを追求できてませんでしたが、いまおもえば「文字型」「数値型」「日付型」しか扱えない（値指定する機能がない）のに、IResource の入力欄を持つアクティビティとかどう表示するんだって話ですよね。表示できても値指定する術がない訳で）

で、この状況も ***22.4 で StudioX に「変数」「引数」が解禁？*** されることで大きく動きました。
この仕様変更に伴い、従来は ***StudioX では表示制限されて利用できなかったアクティビティもほとんどが利用可能となりました。***
以前は利用できなかった Try Catch をはじめとした開発者向け機能が使えるようになりました。（対象アクティビティはフィルタボタンから「開発者」のチェックをONにすれば確認できます。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3301444/f8eb583f-44da-28d4-4f9f-a2f68f0a09d4.png)

解禁された ***「変数」と「引数」は『データマネジャー』という機能で作成・編集できます。（以下、参考）*** Studio の画面中央の「変数」「引数」パネルに慣れている人は、最初どこから「変数」と「引数」をつくればいいか戸惑うかもしれないので補足します。

https://qiita.com/ETech222/items/432bc1523b55a3ec07fc

# 纏め

元々、アクティビティの制限によって、***サブワークフローの呼び出しもできなかった StudioX*** ですが、開発者向けアクティビティの解禁によって 22.4 以降は Studio と同等のワークフロー開発も可能になりました。
Studio と Studio Pro の統合のときの様に、Studio と一体化する流れも想像できますが、
あらためて StudioX を記事にしておもうことは、やはり ***市民開発者向けによく考えられたツール*** だということ。
いまや 当たり前のように Studio で利用している ***StudioX の開発機能（「+」ボタンからのメニュー操作）*** も、21.10 の頃に Studio から逆輸入されたことを考えると、***プロ開発か市民開発かは関係なくもっとも”開発しやすい”かたちに落ち着いていく***のだろうと。
ダブルクォーテーションで括る行為はお作法だから忘れずやりますが、あくまでお作法だからですよね。
StudioX と Studio の統合があるとすれば、***StudioX に寄せきって***、開発者向けのアドオンをパッケージインストールかオプション設定にするのがいいんだろうなーと。

来月には 23.10 がリリースされます！ StudioX の新たな方向性が出てくるか否か、要チェックです！