新機能のVolt IQを触ってみた

# 目次
1. はじめに
1. 使い方
1. 機能紹介
1. 最後に

# はじめに

2023/9/12にV9 SP5 FP15がリリースされ、いくつか新しい機能が追加されました！
今回はその中から、AIアシスタント機能であるVolt IQの魅力をご紹介していきたいと思います。

https://opensource.hcltechsw.com/volt-mx-docs/95/docs/documentation/VMX_release_notes.html#v9-servicepack-5-fixpack-15-iris


# Volt IQとは？
まず、Volt IQとは何か簡単に説明します。

Volt IQは、自然言語処理などの最先端テクノロジーを駆使して、
アプリケーション開発を簡素化および加速化するチャットボットです。

具体的には下記のようなことを行うことができます。
- 自然言語による Iris コマンドの実行
- サポートポータル、ハイキング、YouTubeなどから検索を実行
- デザインの提案
- コードの最適化、未使用のリソースのクリーンアップ、パフォーマンス最適化、ベストプラクティスの提案
- アプリケーションの自動翻訳

では、早速Volt IQの使い方とどのように活用できるかご紹介していきましょう！

# 使い方
Volt IQの機能を使うには、V9 SP5 FP15以上にアップデートする必要があります。
V9 SP5 FP15以下の人は、アップデートを行いましょう。

アップデートの方法はこちらの記事を参考にしてください。

https://qiita.com/VoltMX_Team/items/9623c054c3f3b122621f#version9%E3%81%AE%E5%A0%B4%E5%90%88-1


アップデートが完了すると、左下にチャットマークが表示されるようになります。

マークをクリックすると、チャット画面が開くので、
通常のチャットボットのようにテキストボックスに質問したい内容を入力すればすぐに使うことができます！

![スクリーンショット_0005-09-25_17_21_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/24174201-c6ce-21a6-416f-18d68cfb9db8.png)

それでは、実際に使っていきながら機能をご紹介していきます。

# 機能紹介

## デザイン提案
Volt IQでは、デザインのビジュアル、テキスト、およびウィジェットの階層を元に
類似したデザインをリコメンドすることができます。

この機能により、1から作成することなく既存のコンポーネントを再利用して開発を効率化することができます。  


デザイン提案の機能は、デフォルトで無効になっています。
メインメニューから、Help->Enable Design Suggestionsをクリックすることで有効にすることができます。

![スクリーンショット 0005-09-25 16.54.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/2e582f0c-f265-5429-559d-221a1158b8fc.png)

実際に、新しくフォームを作成しWidgetを追加してみましょう！

:::note
フォームのデザイン提案を表示するには、
少なくとも3つのウィジェットをフォームに追加する必要があります。 
:::

ラベルとテキストボックス、テキストエリアを配置した画面を作成してみると、、
左下に「デザイン提案を表示しますか？」とメッセージが表示されるようになります。

その状態でリコメンドを表示したい場合は、「Yes」をクリックします。
すると左側に提案されたデザインコンポーネントが表示されるようになりました！

提案されたデザインを見てみると、作成したフォームに似た構造のものが提案されていることがわかります。
![ezgif-5-e835b9e68f.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/3b7aef2d-1856-7df3-6fa6-c7baf371e8b2.gif)

提案されたコンポーネントの詳細を見たい場合は、
目のマークをクリックすると、Forge画面が開き対象のコンポーネントの詳細が表示されます。

もしそのままコンポーネントを使いたい場合は、
「Import to Collection Library」をクリックするとライブラリに追加されすぐに使うことができるようになります。


## Irisのアクションを実行
Volt IQにテキストを入力するだけで、アプリのビルドやコンポーネントのインポートを行うことができます。
試しにテキストを入力してIrisを動かして見ましょう。

入力ボックスに「Run」と入力すると、
プレビューを行いたいデバイスのボタンが表示され、iPhoneをクリックするとLive Previewが実行されました。
ビルドを実行する以外にも、開いているタブを全て閉じたりプロジェクトを保存したり様々なことをテキストで実行することができます。

![ezgif-2-0cf8dab775.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/fec1c55b-e8e0-f542-a1e9-6fd4d7ec84da.gif)


プロンプトの入力例は公式ドキュメントに記載がありますので、
必要に応じて使ってみてください。

https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0103992#li3G

ビルドやプロジェクト保存の場合は、テキスト入力する以外にもショートカットもあります。
ご自身のやりやすい方法で試して見てくださいね。

https://qiita.com/VoltMX_Team/items/9091cd4c6fd7e340ad4e



## AI Assisted Development

AI Assisted Developmentは、
AIがプロジェクトをスキャンして、スキン、リソース、ウィジェットなどの未使用の要素を見つけるのを支援します。
AI Assisted Developmentは、リッチテキストのような重いウィジェットを
ラベルのような軽いウィジェットに置き換えることができるかどうかを確認することにより、
パフォーマンスの向上を目的としたプロジェクト分析もサポートします。 

AI Assisted Developmentを使用すると、次のことが可能になります。  

- プロジェクトのサイズの最適化 
- ビルド時間の短縮 
- アプリケーションのパフォーマンス向上

AI Assisted Developmentを使うには、
チャットボットに下記のいずれかの文字を入力すればOKです。

```sample.txt
・　Run AI Assisted Development
・　Launch AI Assisted Development
・　Launch Cop
・　Open AI Assisted Development
・　Open Cop
```
また、メインメニューからHelp->AI Assisted Developmentをクリックして開くことも可能です。



### プロジェクト分析

では早速使ってみましょう。

実行前は、このようにSkinとComponentにそれぞれ未使用のリソースがある状態になっています。

|Skin|Component|
|--|--|
|![スクリーンショット_0005-09-26_15_25_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/e2a5f71a-a7d6-dcbb-d405-e5631b88cb1f.png)|![スクリーンショット_0005-09-26_15_25_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/24e8b8e6-0d12-b7d4-f202-efc22a3fcf6f.png)|

AI Assisted Developmentの画面を開き、
未使用のSkinとComponentを削除するルールにチェックをつけて分析を実行してみます。
![スクリーンショット 0005-09-26 15.30.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/87765df1-f13a-3508-9e2a-2f2c9fbbe193.png)

すると分析結果が開き、使っていないリソースの数、ID、全体の数、分析サマリが表示されます。

![スクリーンショット_0005-09-26_15_25_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/00bb6640-de04-dec9-9d4a-bc98d6ea8035.png)

ID名は見切れてしまうため、
`~/workspace名/project名/reports/outputFile.json`または
`~/workspace名/project名/reports/outputFile.html`を開くと全量を見ることができます。

![スクリーンショット_0005-09-26_15_34_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/4ddffe2c-a711-2864-0061-868c8f23b8be.png)

分析結果を見て、自分でリソースの見直しをしたい場合は、そのままCancelをすると分析を終了します。

分析結果でエラーと表示された箇所を全て修正したい！という場合は、
修正したいルールにチェックをつけて、
Fix Errorsのボタンをクリックすると、未使用のリソースはAIが自動で削除してくれます！

![スクリーンショット_0005-09-26_15_37_46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/74ef6af5-a750-7ea9-c50e-5a2f17332aa1.png)

自動修正実行後のGitの差分を見てみると、未使用と表示されていたリソースが削除されていることがわかります。
![スクリーンショット 0005-09-26 15.43.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/5c05ee52-fe98-dfed-dae3-e19acec1ee65.png)

ひとつひとつ人の手で未使用のリソースを見直すのは骨が折れる作業のため、
AIが分析を行うことで、工数を削減できプロジェクトのパフォーマンスも向上することができます！

SkinやComponent以外にも、
未使用の画像、関数、i18n、テンプレート、StudioActions、空のプレースホルダー、リッチテキストからラベルへの変換、フォントとサイズの一貫性、ハードコードされているデータ等も分析することが可能です。

特にStudioActionsなどは、アクションを一度設定すると自動的にフォルダが作成されてしまうので、
未使用ファイルを自動検知して削除してくれるのはとってもありがたいですね・・・！

それぞれのルール名とルールの詳細は、公式ドキュメントに詳しく記載がありますので、
こちらも参考にしてください！

https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0103992#li4A

:::note
Widgetでは使用していないが、ContollerにSkinを指定している場合はどうなる？
👉ControllerにのみSkinを指定している場合でも、「使用中」として判別することが可能です！

|Controller|分析結果|
|--|--|
|![skin指定時のcontroller.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/4917cd28-ddd0-f371-380d-aee2f882fb5a.png)|![スクリーンショット_0005-10-04_14_14_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/acb02cbe-a9d2-d523-84f9-d2a891805b51.png)|

一点、ControllerでSkinを設定後コメントアウトした場合でも
「使用中」として判別されるため、
不要なコードはコメントアウトするのではなく削除しておく等しておくようにしましょう！

:::


### プロジェクト分析の例外追加

AI Assisted Developmentの分析の際、
分析対象から除外したいSkinやWidget, Componentがある場合それらを除外することができます。

ルールを追加する場合は、Project SettingsのAI Assistant Rulesetで設定可能です。
![スクリーンショット 0005-09-26 16.00.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/75958dae-b0d7-6c2b-2c4a-7911b42785fe.png)

+ボタンをクリックして、除外したいSkin名を入力していきます。
（この時、分析結果のhtmlを開いておいて、コピペをすると楽に入力できます。）

入力したらEnterを押すと、一列に複数のSkinを入力することができます。
登録が完了したら、忘れずDoneを押して設定を保存しましょう！

![スクリーンショット 0005-09-26 16.14.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/47c04b58-046e-07f5-6ff4-b095a9ac0ea9.png)

ルールの保存ができたら再度分析を実行してみます。
除外したSkinは分析結果に表示されず、対象から外すことができました。


|設定したルール|分析結果|
|--|--|
|![スクリーンショット 0005-09-26 16.12.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/059c9b5f-82e0-f5bd-06f6-064084e128e5.png)|![スクリーンショット 0005-09-26 16.06.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/6d55f123-4308-cb4e-abee-8632f3da5e76.png)|

## 翻訳機能
AIチャットボットでは、Google 翻訳 APIを使用してプロジェクトをさまざまな言語に翻訳することができます。
i18nが未設定でUI上のみに文字を入力している場合でも、
翻訳機能を実行するとi18nのキーを自動生成し、指定した言語に翻訳・値を登録してくれます。

実際に使ってみましょう。
実行前はこのようにi18nを設定しておらず、Widgetに直接文字を入力していました。

|i18nの設定|文字の登録|
|--|--|
|![スクリーンショット_0005-09-26_16_37_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/c9e12cbc-1ae0-2847-271f-bb7ff9ce4350.png)|![スクリーンショット_0005-09-26_16_36_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/cd615220-72b8-7fe4-3687-648ad5eea7c1.png)|

この状態から、AIチャットボットを使って日本語に翻訳してもらいましょう。
![スクリーンショット 0005-09-26 16.49.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/fef1415e-9024-5ccd-e9a5-d7705c7d9845.png)

しばらくすると、プロジェクトがリフレッシュされました。
フォームを見てみると、英語から日本語に翻訳されi18nのキーも自動的に指定されています。
またi18nの設定を見てみると、i18nが有効になりキーと日本語と英語のロケールでの文字が自動で登録されていました！

|i18nの設定|文字の登録|
|--|--|
|![スクリーンショット 0005-09-26 16.39.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/ca32cd68-1905-e3f0-c174-66c9f96eb941.png)|![スクリーンショット_0005-09-26_16_38_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592264/13e9dd89-a612-b773-3d40-6d3fc0297d80.png)|

これまで1からキーと文言を作成していたのが、
翻訳機能を実行することで全て自動で行うことができるためとっても楽ですね！

キーの名前や翻訳の精度などは、人の目でチェックして適宜修正を行えば良いので、
これまでよりもはるかに楽に作業ができるのはないかと思いました:relaxed:

# 最後に

今回は、新機能のVolt IQを紹介しました！
全て魅力的な機能でしたが、特にAI Assisted Developmentは、
使いこなすことでアプリのパフォーマンスの向上やビルド時間の短縮が可能なので、
是非触ってみてどんどん活用してみてくださいね:thumbsup:🔥

# 参考
https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0103992

https://opensource.hcltechsw.com/volt-mx-docs/95/docs/documentation/VMX_release_notes.html#v9-servicepack-5-fixpack-15-iris