[ServiceNow] Now Assist for Creatorを触ってみる (2) - Code Assist -

# はじめに
:::note warn
本記事は執筆（2024年2月）時点の情報です．最新の情報は製品ドキュメントを参考にしてください．
[Product Documentation | ServiceNow](https://docs.servicenow.com/ "Product Documentation | ServiceNow")
:::

---

### 前提
本記事は以下の記事の続きの内容です．Now Assist for Creator の ServiceNow のエディタでのスクリプティングをサポートする [Code Assist](https://docs.servicenow.com/bundle/vancouver-api-reference/page/script/now-assist-for-code/concept/now-assist-code-landing.html "Now Assist for Code | ServiceNow Documentation") 機能を対象としています．

https://qiita.com/mucho243/items/5649a043a7e70bf4a711

---

### 本記事のまとめ
* Now Assist for Creator 用のキーボードショートカットが追加される
* Code Assist を用いて，予約語や記述途中のスクリプトに対してコード補完（Code Complete）によりスクリプトを生成させてみる
* Code Assist の Text-to-code スキルを用いて，コメントからスクリプトを生成してみる

---

# セットアップ
前回記事 [[ServiceNow] Now Assist for Creatorを触ってみる (1) - Flow Assist -](https://qiita.com/mucho243/items/5649a043a7e70bf4a711) の [セットアップ](https://qiita.com/mucho243/items/5649a043a7e70bf4a711#%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97) が完了していることを前提とする．

:::note warn
特に「now.assist.creator」ロールの付与を忘れないこと
:::

---

### スキルの有効化
Code Assist に含まれるスキルを有効化（Activate）する必要がある．
* フィルタナビゲーターで [Now Assist Adimin] > [Features] に移動する
* [Now Assist Features] の中の「Creator」を選択し， Now Assist Features for Creator 画面を表示する
* Code Assist 内の Text-to-code が「Skill activated」になっていることを確認する
* 既にスキルは有効化されているが，確認のために「View details」ボタンを選択する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277712/c5b3429f-6372-7a6f-7ea4-bd19f4038a73.png "Now Assist Features for Creator")

* その後に表示される Active skills 内の Text-to-code を選択する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277712/bdffc2cc-b75b-8ff5-eba7-a371350e74d4.png "Code Assist")

* Code Assist の Config Code Assist 画面に遷移した後，右下部の「Save and continue」ボタンを選択して次に進む
    * 現時点では何も設定できない（ロードが永遠に続く）ように見える

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277712/561187cb-fa60-e526-2295-b7014b03bd4c.png "Config Code Assist")

* Choose where to display 画面では In-product の Display トグルを ON にして，右下部の「Save and continue」ボタンを選択する
    * 現時点では Now Assist panel の利用はできないように見える

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277712/2cf65778-8c99-064e-31fa-3343bf0dcb50.png "Choose where to display")

* Review and activate 画面で設定項目を最終確認して，右下部の「Done」を選択する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277712/57d9c556-3a20-7b22-e9ce-fd7a477511d0.png "Review and activate")

---

# 実際に動かしてみる

以下で，本ラボインスタンスで使用可能な Code Assist の各種機能を使いながらスクリプトを生成してみる．

---

### ショートカットキーの確認
初めに， Now Assist for Creator 用に追加されたショートカットキーを確認する．

* フィルタナビゲーターで [System Definition] > [Fix Scripts] に移動して，右上の「New」ボタンを選択する
* Scriptフィールドの１行目に青色のキラキラ絵文字（✨：Sparkles）が表示されていることを確認する
    * マウスオーバーすると「Powered by Now Assist for Code」が表示される

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277712/bfb10406-a9e7-3931-f5e0-8711d3956026.png "Powered by Now Assist for Code")

* [Ctrl] + [H] キーを押下して Help を表示し，以下のキーボードショートカットが追加されていることを確認する
    * **Trigger AI**:             Ctrl+Enter
    * **Accept suggestions**:     Tab   /   →   /   Enter   /   Click suggestion
    * **Dismiss suggestions**:    Esc   /   Click outside suggestion

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277712/d71df461-995c-f7e1-6f05-68ec0cda432d.png "Editor Key Map")

---

### コード補完（Code Complete）
予約語や記述途中のスクリプトの末尾で [Ctrl] + [Enter] キーを押下することで，コード補完することができる
* 以下は「 switch(today) 」入力後にコード補完した結果
    * [Tab] キーを押下することで，提案の採用
    * [Esc] キーを押下することで，提案の不採用（削除）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277712/8f459ed3-c474-ba5c-6acd-10bc4b71c689.png "Code Complete")

---

### Text-to-code
コメントの末尾で [Ctrl] + [Enter] キーを押下することで，スクリプトを生成することができる
* 以下は「 // get all active incidents where the assigned to is inactive 」入力後にText-to-codeスキルを用いた結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277712/e5064e92-e49c-a9a0-a775-334741f83dc7.png "Text-to-code")

* 日本語「 // 割り当て先が非アクティブであるアクティブなインシデントをすべて取得する 」でコメントした際にもスクリプトが出力される
    * 英語と同等の意味を入力としている（つもりだ）が，出力結果が異なっている点は興味深い

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1277712/6edf58a7-8b1f-d817-2621-3dd780745007.png "Text-to-code in Japanese")

---

# おわりに
本記事では Now Assist for Code の Code Assist について取り上げてみました．

実際に触ってみた感触としては全くの開発入門者というよりかは開発中級者以上のスクリプティングスピードの向上に寄与できそうな印象です．ただ，Text-to-codeで生成されたスクリプトを見て学ぶことも多くありそうですし，何よりコメントからスクリプトが生成されていく様を見るのは楽しいですね．

セキュアコーディングやベストプラクティスに沿ったコーディングが保証されるとより使い勝手が良くなる気がしてます．
なお，YouTube でも動画が配信されている[^1]ので，ご参考ください．

今後，他の Now Assist 製品についても実際に触りながら整理できればと思ってます！

---

# 参考
以下に，本記事では取り扱わなかったその他参考リソースを示す．
* [【デモ】Now Assist for Creator | ServiceNow Japan 合同会社](https://www.youtube.com/watch?v=NsWbSU5Dono "【デモ】Now Assist for Creator | ServiceNow Japan 合同会社 | YouTube")
* [Code generation | ServiceNow Documentation](https://docs.servicenow.com/bundle/vancouver-intelligent-experiences/page/administer/now-assist-platform/concept/now-assist-text-to-code.html "Code generation | ServiceNow Documentation")

[^1]: [Now Assist for Code | Getting started | ServiceNow Documentation](https://www.youtube.com/watch?v=Ln4dMDZOXtY "Now Assist for Code | Getting started | ServiceNow Documentation | YouTube")