
開発(App Engine・Creator)のNow Assist機能紹介とOOTBのまま使えるかの検証
検証環境:Now Assist デモ環境(Australia Patch 5)/ 2026-10-02〜03 確認。生成コードの実行は自前のPDI(Australia)で2026-10-03に確認
有効なスキルと無効なスキルが混在する環境で確認しました。検証中にスキルの設定は変更していません。出荷時点の初期状態は検証していません。
この環境で試して分かったこと
開発(Creator)のNow Assistスキルは43行、この環境で有効なのは30行
コード生成は、日本語の指示で3回とも14〜16秒でコードを返した。3回とも実装が違い、担当グループが空のときの扱いは人が決める必要がある
生成された3つのコードを自前の環境で実行すると、画面と同じ影響度・緊急度だけの登録では3つとも作業メモに何も書かなかった。ビジネスルールが動く時点で優先度がまだ5だったため
フロー生成は、トリガーを先頭に置きテーブルを #incident と書いた2種類の指示で、9回ともプレビューを返した
フロー生成のプレビューは、トリガーとアクションを持つ下書きをデータベースに作る。確認した3回とも作業メモに入れる値は空。追加の1回では Discard flow を押しても下書きが残った(確認後に私が削除)
コード編集に自由な指示を1回出すと、約50秒以内に1行の差分が表示された。承認はしていない
カタログ項目生成は約45秒でプレビューを表示し、その時点で下書きのカタログ項目と質問3つをデータベースに作った。プレイブック生成は入力欄が使えなかった。作った下書きは削除し、残りが0件であることを確認
開発者向けのNow Assistは、ビジネスルールのコードやフローを日本語の指示から作ります。有効になっていても、生成物をそのまま使えるとは限りません。ビジネスルールのスクリプト欄でのコード生成と、Workflow Studioでのフロー生成を、同じ要件で動かしました。要件は「優先度1のインシデントが作成されたら、作業メモに担当グループ名を追記する」です。生成物がどこまで要件を満たすかを確かめます。
試行の規模は小さく、ケーススタディです。コード生成は新規の未保存ビジネスルールで3回、フロー生成は2種類の指示で合計9回です。評価は画面と公式ドキュメントとの照らし合わせに加え、生成コードは自前のPDIで実行し、フローの下書きはデータベースの記録まで読みました。OOTB全体の品質評価ではなく、実装判断に必要な観点を洗い出す目的で確認しています。
開発(Creator)のOOTBスキル一覧
この環境のCreatorに関するスキルは43行です。ステータス表で有効なのは30行でした。ここでの「有効」は、ステータス表の active と in_product_active がともに true の行です。残りの13行の内訳は、次のとおりです。
製品側が有効になっていない行が8つ(内部用のIA系やProcess Miningの一部)
無効の行が4つ(Text2Test Sentinel、Flow Execution Analysis、Intent and Activity Analysis、Flow Generation with Images)
設定は無効で製品側は有効の行が1つ(Playbook Generation)

表の内容を文字でも書き出します。
Code Assist Generation(コード生成):有効。スクリプト欄で日本語の指示からコードを提案する。今回試した
Code Assist AutoComplete(コード補完):有効。入力中に続きの候補を灰色で出す。今回試した(候補の確定はしていない)
Code Assist Edit(コード編集):有効。選んだコードを指示で書き換える。コメントの追加と、自由な指示での書き換えを、差分の表示まで試した(承認していない)
Code Assist Summarization(コード要約):有効。コードの要約と説明を作る。要約と詳細な説明を試した
Code Assist API Definition(API定義の作成):有効。プラットフォームAPIからAPI定義を作る。試していない
Flow generation(フロー生成):有効。複数ステップのフローを生成AIで作る。今回試した
Now Assist Recommendations(フローで次に置く手順の推奨):有効。フローの次のステップを推奨する。試していない
Flow summarization(フロー要約):有効。フローを要約して検索や発見を助ける。試していない
Flow Generation with Images(画像からのフロー生成):無効。画像を使ってフローを作る
Flow Execution Analysis(フロー実行の分析):無効
Playbook Generation(プレイブック生成):設定は無効。複数ステップのプレイブックを作る。Workflow Studioの新規プレイブック画面では、Now Assistのタブに「アドミンに連絡し、設定を依頼してください。」と表示され、生成ボタンを押せなかった。スキルの有効化はしていない
Playbook generation with images(画像からのプレイブック生成):有効。試していない
Playbook Summarization(プレイブック要約)、Playbook recommendations(プレイブックの推奨):有効。試していない
App Generation(アプリ生成):有効。Creator Studioではサービスデスクのテンプレートを選んだあとの名前・説明の画面を、App Engine Studioでは名前・説明の画面を開いた。確認した画面には、指示から作る入力欄が見当たらなかった。動かしていない
App Summary Generation(アプリ要約)、Table Summary Generation(テーブル要約):有効。試していない
Experience Generation(エクスペリエンス生成):有効。UI Builderのホームから使う。今回の検証結果には含めていない(末尾の検証範囲を参照)
Data Binding Generation(データバインディング生成)、Event Handler generation(イベントハンドラー生成)、Client Script Summarization(クライアントスクリプト要約):UI Builder向けで、有効。試していない
Catalog item generation(カタログ項目生成):有効。カタログビルダーの「Build with Now Assist」から使う。1回試して、約45秒でタイトル・説明・質問3つのプレビューが出た
Refine content(内容の改善):有効。試していない
Mobile card generation(モバイルカード生成):有効。Mobile Card Builderの新規カードはテンプレートを選ぶ画面で、指示を入力する欄が見当たらなかった。動かしていない
RPA bot generation(RPAボット生成)、Spoke generation(スポーク生成):有効。試していない
Test Generation(テスト生成)、ATF troubleshooting agent(ATFのトラブルシュートエージェント):有効。Text2Test Sentinel は無効。いずれも試していない
Build Agent(ビルドエージェント):有効。ServiceNow Studioの画面右下から開くパネルで、使うモデルの欄に「Claude Opus 4.6」と表示された。外部のモデルを使う連携を伴う可能性があるため、動かしていない
Build Agent Preprocessor、BA Glide Tools Metadata Summarizer:有効。試していない
Work Notes Analysis(作業メモの分析)、Process Inefficiency Highlights(非効率の強調):Process Miningで有効。ほかの4行は無効か、製品側が有効になっていない
IA Discover roles for capability など内部用の4行:製品側が有効になっていない
有効でも、使えるとは限りません。代表として動かしたのは、コード生成とフロー生成です。コード生成は、開発者がスクリプトを書く場面で使う種類で、提案を画面に出し、承認ボタンで取り込みます。フロー生成は、フロー全体を指示から作る種類です。あわせて、コード編集の自由な指示と、プレイブック生成・カタログ項目生成を各1回確かめました。
アプリ生成やBuild Agentなど、アプリやテーブルをその場で作るスキルは動かしていません。理由は、各スキルの行に書いたとおりです。フロー生成とカタログ項目生成は、プレビューの段階で下書きのレコードを作っていました。この点は、それぞれの検証の節で書きます。
元にした指示と、見る観点
生成物を見る前に、使った指示を示します。要件は3回とも同じで、「優先度1のインシデントが作成されたら、作業メモに担当グループ名を追記する」です。コード生成の指示は、次の1文です。
優先度1のインシデントが作成されたら作業メモに担当グループ名を追記するビジネスルール
コード生成の場所は、新規のビジネスルールです。テーブルはインシデント、タイミングは「前」、「挿入時」にチェックを入れ、「詳細」で出るスクリプト欄を使いました。送信ボタンは押しておらず、レコードは保存していません。
フロー生成の指示は2種類です。
指示B:フローを作成する。トリガーは #incident テーブルにレコードが作成されたとき。条件は優先度が1。アクションは「レコードを更新」で、作業メモに担当グループ名を追記する
指示C:#incident が作成され、優先度が1のとき、作業メモに担当グループ名を追記する。担当グループが空の場合は、作業メモに「担当グループ未設定」と追記する
指示Bは分岐のない基本形、指示Cは担当グループが空の場合の分岐を持つ形です。どちらも、トリガーを先頭に置き、テーブルを #incident で指定しています。#incident は、候補の一覧から選ばず、文字として打っています。
生成物を見る観点は、次の4つです。
指示の中核(優先度1・作成時・担当グループ名・作業メモ)を満たしているか
指示にない振る舞いが足されていないか
APIの使い方が公式ドキュメントの記述と合っているか
人が決め直す項目は何か
最初の確認では、コードは未保存の画面の中だけにあり、フローはプレビューの段階でした。そのあと、コードは自前のPDIで実行し、フローは下書きの中身をデータベースから読んでいます。レビューにかかった時間は測っていません。
指示の文字数の上限
公式ドキュメントのGeneral guidelines for code generationでは、コード生成の入力は300文字までです。一方、別のページ(Generate code with AI-powered code generation)には1,000文字という記述があり、公式の記述が食い違っています。実機のダイアログに301文字と1,001文字を貼り付けると、どちらも入力欄は300文字で止まりました。この環境でコード生成の入力欄にかかる上限は300文字です。入力が長くなると「指示が長いと、生成されるコードの品質に影響を与える可能性があります」という案内が出ます。この記事の指示は44文字でした。
フロー生成の入力欄は、301文字と1,001文字をそのまま受け付けました。4,000文字を貼ると1,880文字で止まりました。コード生成の300文字より入力は多く保てますが、上限の値と切れた原因は確認していません。
Now Assist「Code Assist Generation」の検証
Code Assist Generation(コード生成)は、スクリプト欄の中で日本語の指示を入力し、カーソル位置にコードを提案するスキルです。起動の方法は、公式ドキュメントのGenerate code with AI-powered code generationにあります。スクリプト欄で右クリックして「Open Code with Otto」を選ぶか、Ctrl+Enterを押します。必要なロールは now.assist.creator です。
画面の表示は日本語で、ダイアログの見出しは「Now Assist でコードを生成」でした。

①の入力欄に指示を打ち、Enterで送信します。コードは②の3行目の位置に入ります。
生成にかかった時間は、3回とも14〜16秒でした。1回は14.7秒、次が15.6秒、最後が14.2秒です。準備の確認で動かした別の1回は153秒かかっており、時間にはばらつきがあります。

生成が終わると、削除される行が赤、追加される行が緑の差分で出ます。①には「コードを承認する前に、コードが正確かどうかを確認してください。」という注意があります。承認すると、コードがスクリプト欄に入ります。3回とも承認ボタンを押して、スクリプト欄に入ったコードを読みました。送信ボタンは押しておらず、保存していません。
3回のコードは、次のとおり実装が違いました。
1回目:GlideRecordSecure で担当グループのレコードを検索し、名前を取り出して追記する。担当グループが空のときは何もしない。見つからないときはエラーログを書く
2回目:同じく GlideRecordSecure で検索する。担当グループが空のときも、見つからないときも、「該当なし」を作業メモに書く
3回目:current.assignment_group.getDisplayValue() で名前を直接取り出す。担当グループが空のときは、警告ログを書いて作業メモには何も書かない

2回目のコードで見ると、①の3行目は「// Add your code here// サーバーサイド実行コンテキスト」と、元のコメントと生成コードの先頭のコメントがつながっています。この連結は3回とも出ました。②の6行目の条件は、3回とも current.priority == '1' && current.isNewRecord() です。③の10行目は、2回目の GlideRecordSecure による検索です。
コードを読むと、3回とも指示の中核が入っていました。優先度1の判定、作成時の判定、担当グループ名の取り出し、作業メモへの追記です。一方で、レビューで確認する項目が次のように残りました。
実行タイミングは生成されない。「前」「挿入時」の設定は人が決める。今回は私が先に入れていた
3回とも isNewRecord() で作成時かを判定している。実行タイミングを「挿入時」だけにすれば、この条件は重なる。更新時も動かす設定にする場合は、意図に合うか確認する
current.priority == '1' は文字列の比較。優先度は影響度と緊急度から決まる値で、生成コードは実行順序(Order)を決めないため、優先度が確定した後に判定されるかが問題になる。次の節で実行して確かめた
GlideRecordSecure は、2回のコードで使われた。読み取り権限のないグループでは「見つからない」扱いになる。3回目のように表示値を直接取る書き方なら、追加の検索はない
作業メモのような履歴項目の読み取りと連結は、既存の入力値と合わせる書き方が2回、getDisplayValue() で読む書き方が1回。実行した結果、優先度1を指定した新規登録では、担当グループがあると3回とも作業メモに書き込めた(次の節)
2回目と3回目のコードは GlideSystem.logError(...) や GlideSystem.logWarning(...) と書き、1回目のコードは gs.logError と書いている。3回目のコードで担当グループを空にした場合は、GlideSystem.logWarning(...) を通ってもインシデントの登録は成功した。ログの出力先までは確認していない
担当グループが空のときの振る舞いは、指示に書いていない。3回で「何もしない」「該当なしを書く」「警告ログだけ」と3通りに分かれた
読んだだけでは分からなかった問題は、実行で見つかりました(次の節)。同じ指示でも再生成のたびに実装が変わるため、承認の前に要件(空のときの扱い)を人が決めておき、その基準でコードを見比べる運用が必要です。
自前の環境で3つのコードを実行した結果
検証用に用意した自分のPDI(共用のデモ環境とは別のインスタンス)で、3つのコードを1つずつビジネスルールとして登録して動かしました。ビジネスルール名は「記事検証:」で始め、タイミングは「前」・「挿入時」・Order 100です。インシデントは影響度1・緊急度1で登録し、担当グループがあるときと空のときを比べました。確認後にビジネスルールとインシデントは削除しています。

表の内容を文字でも書き出します。
影響度・緊急度だけで登録:3つとも作業メモは空。担当グループがあっても同じ
優先度1を指定・担当グループあり:1回目と2回目は「担当グループ: 名前。」、3回目は句点のない「担当グループ: 名前」を書いた
優先度1を指定・担当グループ空:1回目と3回目は何も書かず、2回目だけ「担当グループ: 該当なし。」を書いた
画面からの登録と同じ入力(影響度と緊急度だけ)で動かないのは、ビジネスルールが動く時点で優先度がまだ5だったためです。診断用のビジネスルールで確かめると、Order 100と500の時点の priority は5で、1000と2000では1でした。登録後の優先度は1に決まっていますが、それは後の処理で計算された値です。

起点は登録の入力、赤は生成コードが動くのに条件に合わない時点、灰色は優先度が5のままの時点、緑は優先度が1に確定した後。青は試していない直し方の候補
図の内容を文字でも書き出します。
登録の入力:影響度1・緊急度1(画面と同じ入力)。優先度は入力していない
Order 100(生成コードのビジネスルール、既定のOrder):priority は5。条件 priority == '1' に合わず、作業メモは空。エラーは出ない
Order 500:priority は5のまま
Order 1000・2000:priority は1に確定
登録後:優先度1のインシデントとして保存される
直し方の候補:Order を優先度の確定後にずらす、または影響度と緊急度で判定する。どちらも今回は試していない
生成コードはOrderを決めません。この環境のように優先度が後で計算される場合、Order 100の既定値のままでは条件に合わず、エラーも出ないまま何も起きません。優先度を条件にするコードは、優先度が確定する後のOrderに置く、または影響度と緊急度で判定する、という直し方が候補になります。ただし、直したコードの動作は試していません。
担当グループが空のとき、コードの処理は3通りでした。実行して作業メモに出た結果は、何も書かない2つと、「該当なし」を書く1つです。1回目と3回目の違いは警告ログの有無で、ログの出力先は確認していません。なお、実行はREST経由の登録で行っており、フォームの送信でも同じ結果になるかは確かめていません。
補完・要約・説明・コメント追加・編集
コード生成のほかに、スクリプト欄では選択したコードに対する機能が動きました。確認は共用のデモ環境の新規ビジネスルール画面で、承認も保存もしていません。右クリックのメニューには「Now Assist でコードを開く」「Summarize code」「Explain code in detail」が並びます。選択範囲の横には星のボタンも出て、そのメニューはコードの編集、コメントの追加、コードの要約、コードの詳細な説明の4つでした。

①の説明は、実行から約45秒後には日本語の文章で表示されていました。説明用に入力したのは、優先度1のインシデントを検索して番号をログに出す短いコードです。要約でも同じコードについて、優先度が最も高いインシデントの番号を一覧にして記録するコード、という内容が返りました。

コメントの追加は、①の指示が自動で入り、②のように追加される行が緑の差分で出ます。③の承認を押すまで、コードは変わりません。私は承認していません。

コードの補完は、①のコメントと数行のコードを入力すると、続きの候補が②のように灰色で出ました。Tabキーで確定する前の表示で、確定していません。候補の中には、ループの中で gr.update() を呼ぶ書き方が含まれていました。ビジネスルールの中で別のレコードを更新する処理は、更新の連鎖を起こし得るため、補完も承認の前に読む対象です。
コードを編集する機能は、星のボタンから開く入力欄に自由な指示を書いて使います。次の指示を1回出しました。
gs.info を gs.debug に変更し、ループの中で件名(short_description)も一緒に出力する。

①の指示を送ると、約50秒以内に②の差分が表示されました。gs.info の1行が削除され、gs.debug の1行に置き換わっています。追加された行は gs.debug("インシデント番号: " + gr.number + "、件名: " + gr.short_description) で、番号と件名を出力する内容です。「インシデント番号:」などの文字は、私の指示にも、削除された元の行にも含まれていない文字列です。変更はこの1行だけで、ほかの行は変わっていません。③の承認を押すまでコードは変わらないため、承認は押していません。試したのは1回だけです。
Now Assist「Flow generation」の検証
Flow generation(フロー生成)は、Workflow Studioで日本語や英語の指示から、複数のステップを持つフローを作るスキルです。画面は「新規」から「フロー」を選び、「Now Assist を使用した構築」のタブを使います。公式ドキュメントのTurn on the flow generation skillによると、必要なロールは flow_designer と now.assist.creator です。画面のラベルは日本語で、ボタンは英語の「Generate flow preview」でした。
公式ドキュメントのCreate a flow with Now Assistは、指示の書き方を3点案内しています。指示の先頭にトリガーを書くこと。テーブル名を正確に書くこと。アクションやフローロジックを名前で呼ぶことです。指示BとCは、この案内に沿って書きました。

指示B(分岐のない基本形)では、6回ともプレビューが出ました。計測した3回で44.5秒、46.4秒、48.2秒です。①のトリガーは「インシデント 作成時」で、②のアクションは「Update インシデント Record」でした。各ノードの下には、指示のどの部分から作ったかが注釈で出ます。
③の「Save and edit flow」は押していません。プレビューは読み取り専用で、ノードを選んでもプロパティの欄は開きませんでした。画面からは、優先度1の条件の値や、作業メモに入る値が担当グループ名になっているかは分かりません。そこで、指示B(基本形)で2回再生成し、プレビューが出た状態のまま、データベースに作られた下書きの中身を読み取りました。

表の内容を文字でも書き出します。
トリガー:画面は「インシデント 作成時」。データベースは、種類が record_create、テーブルが incident、条件が priority=1
アクション:画面は「Update インシデント Record」。データベースは1件で、対象はトリガーのレコード、テーブルは incident
作業メモに入れる値:画面では見えない。データベースでは、アクションの「values」(更新する項目と値)が空
2回とも同じ内容でした。指示にあった「作業メモに担当グループ名を追記する」は、アクションのコメントに文章として残るだけで、更新する項目と値としては設定されていません。プレビューが出ただけでは、指示を満たしたフローとは言えません。保存して編集画面で値を入れる作業が残ります。保存したあとの編集画面とフローの実行は、確かめていません。
分岐つきの指示Cでは、分岐2つとアクション2つが作られた
担当グループが空の場合の分岐を含む指示Cは、1回実行し、72.4秒でプレビューが出ました。データベースの下書きは、トリガー1つ、分岐2つ、アクション2つの構成です。
下書きを読むと、2つのアクションの更新値(values)はどちらも空でした。指示B(基本形)と同じく、作業メモに入れる値は人が入れる前提になります。分岐の構造は指示どおりに作られても、分岐ごとの中身までは設定されません。
入力欄は、「#」を打つとテーブルの候補一覧(Incident [incident] など)が開きます。今回の試行では、候補を選ばず文字のまま使っています。文字入力の途中で候補一覧にフォーカスが移ると、指示が欠けたり、フロー名の欄に混ざったりしました。そのような回は集計に入れていません。
プレビューを出すだけで、下書きのフローが作られた
公式ドキュメントには、次の記述があります。
Workflow Studio does not save flow previews.
(訳:Workflow Studioはフローのプレビューを保存しません。)
実機では、プレビューが出た6回のあとに、sys_hub_flow に下書きのレコードが6件ありました。状態は draft、アクティブは false、スコープは global で、名前は入力したフロー名の末尾に3文字が付いた形です。フローを保存するボタンも、送信のボタンも押していません。それでも、プレビューが出た回数と同じだけ、レコードが残っていました。
ブラウザを閉じる前に、画面で「Discard flow」を押すと、確認のダイアログが出ます。ダイアログの文面は次のとおりでした。
You'll no longer have access to this Now Assist generated flow or your directions. Open the flow first if you want to save it to work on later.
(訳:このNow Assistが生成したフローと指示には、アクセスできなくなります。後で作業するために保存したい場合は、先にフローを開いてください。)
追加の確認では、ダイアログの「Discard flow」まで押しました。続けて「このタブを閉じますか?(閉じると、未保存の変更が失われます)」と出るので、「タブを閉じる」を押しています。画面は閉じましたが、データベースの下書きは残っていました。この1回では、Discard flow とタブを閉じる操作の後も、下書きのレコードが残ったことになります。
下書きは、作成者・状態・名前・作成時刻で絞って Table API で削除しています。最初の6件に加え、追加の確認で作った分も同じ方法です。更新セットの記録は、削除の操作に変わりました。対象は作成者が私で、名前が tmp unsaved flow で始まる下書きだけで、削除前に件数を確かめています。ほかのレコードには触れていません。
Now Assist「Playbook Generation」の検証
Playbook Generation(プレイブック生成)は、Workflow Studioで指示から複数ステップのプレイブックを作るスキルです。画面は「新規」から「プレイブック」を選びます。開くと、「Now Assist を使用した構築」と「自分で構築」の2つのタブが出ます。

①のとおり、Now Assistのタブには「アドミンに連絡し、設定を依頼してください。」と表示されました。②の「プレイブックプレビューの生成」ボタンは押せず、指示を入力する欄も出ていません。③の「自分で構築」のタブは使えます。スキル一覧で Playbook Generation の設定が無効だったことと合います。今回は設定を変更せず、案内の表示と、押せない生成ボタンまでを確認しました。生成は実行していません。
Now Assist「Catalog item generation」の検証
Catalog item generation(カタログ項目生成)は、カタログビルダーで使うスキルです。指示から、カタログ項目のタイトル・説明・利用者向けの質問・動的な動作のプレビューを作ります。画面は、ホームで「カタログアイテムを最初からビルド」の「最初から作成する」を押し、「標準」を選び、「Build with Now Assist」で「Build」を押すと開きます。
左のチャット欄に、次の指示を1回入力しました。
記事検証用の設備貸出申請のカタログアイテムを作る。設備の種類、借りたい期間、利用目的を入力する。

①の指示を送ると、約45秒で②と③が表示されました。②には、アイテム名「記事検証用の設備貸出申請」と、説明・短い説明が返っています。説明には「申請後は内容が確認され、対応担当者によって貸出可否が処理されます」という、指示にない一文が足されていました。③のプレビューには、指示の3つの項目がそのまま質問として並びました。
データベースを読むと、プレビューが出た時点で、sc_cat_item に状態がドラフト(active は false)のレコードが1件作られていました。質問は item_option_new に3件です。
設備の種類:1行テキスト、必須ではない
借りたい期間:期間(日・時間・分・秒)、必須
利用目的:複数行テキスト、必須ではない
必須にしたのは「借りたい期間」だけで、どれを必須にするかは指示に書いていません。期間の型も、日数だけの欄ではなく、日・時間・分・秒を入れる形になりました。貸出の運用に合わせて、必須の項目と質問の型は人が決め直します。「次のステップに進む」は押しておらず、公開もしていません。作ったドラフトと質問3件、関連する翻訳テキスト3件は、作成者と sys_id で絞って削除し、残りが0件であることを確認しました。試したのは1回です。
生成の結果の出方で、導入前に決めることは変わる
Creatorのスキルは、結果の出方で3つの種類に分けられます。

図の内容を文字でも書き出します。
提案を画面に出し、人が承認する機能:コード生成・補完・編集。承認するまでスクリプト欄は変わらず、保存しなければレコードは作られない。導入前に決めるのは、ロールの付与、承認前の確認項目、要件の文章化
下書きを作る機能:フロー生成・カタログ項目生成。プレビューを出した時点で下書きのレコードができる。導入前に決めるのは、下書きの削除の担当と時期、検証用の命名、検証環境での事前確認
アプリやテーブルを作る機能:App Generation・Build Agent。今回は動かしていない
人が承認する機能は、レビューの基準を先に決める
コード生成・コード補完・コード編集がこの種類です。承認するまでスクリプト欄の内容は変わらず、保存しなければレコードは作られません。コード編集(コメントの追加と自由な指示)も、承認前は差分を表示するだけで、同じ扱いでした。コード補完は、灰色の候補を表示するだけで、Tabキーで確定するまでコードは変わりません。
導入の前に、次を決めます。
誰に now.assist.creator のロールを付与するか
承認の前に確かめる項目(今回の7項目が例。実行して見つかった、優先度の確定前に判定される問題も含める)
同じ指示で実装が変わるため、要件を先に文章で決めておくこと
提案されたコードには、AI生成の印が付きます。公式ドキュメントのTracking AI-generated codeでは、承認したコードの行が行番号の横の線で示され、既定では6か月間記録されます。今回は承認だけで保存していないため、この記録のテーブル(sn_now_assist_code_ai_generated_lines)に私の行は残っていませんでした。
下書きを作る機能は、下書きの後始末を決める
フロー生成とカタログ項目生成がこの種類です。フロー生成はプレビューを出すだけでフローの下書きが作られ、カタログ項目生成はプレビューを表示した時点で、ドラフトのカタログ項目と質問3件が作られていました。
導入の前に、次を決めます。
下書きのフローやカタログ項目を、誰がいつ削除するか
検証用のフロー名の付け方(今回は tmp unsaved flow から始め、検索しやすくした)
本番の環境で試す前に、検証用の環境で動かす手順
アプリやテーブルを作る機能は、今回動かしていない
App Generation と Build Agent は、アプリ全体を作るスキルです。App Generation は、Creator StudioとApp Engine Studioの画面に、指示から作る入力欄を見つけられませんでした。Build Agent は、モデルの欄に外部のモデル名が表示されていたため、外部連携を伴う可能性があるものとして動かしていません。どちらも結果は評価していません。
今回見つかった不足は、どこで対応するか
今回見つかった不足は、次の順に確かめてから、カスタマイズが要るかを判断します。
データ
指示の書き方は、公式ドキュメントの案内(トリガーを先頭に書く・テーブル名を正確に書く)に合わせます。今回プレビューが出た指示B(基本形)とC(分岐つき)は、どちらもテーブルを #incident と書いています。列の名前を実機の表示と合わせることの効果は、確認していません。これは設定を変えずに試せます。
標準設定
スキルの有効化は、AI Admin Hubの「Creator」から行います。公式ドキュメントでは、フロー生成のスキルを有効化するときにサブスクリプションが別に要ります。ロールは、now.assist.creator と flow_designer です。
運用(レビュー)
コード生成の承認前の確認項目と、フロー生成の下書きの後始末は、運用の手順で決めます。再生成のたびに実装が変わるため、要件の文章を先に決めておく運用が要ります。優先度を条件にするコードは、実行順序(Order)の確認も承認前の項目に加えましょう。
カスタマイズ
入力する指示の文面は、スキルを変えずに試せます。スキルそのものの動きを変える方法は、今回確認していません。スキルを変える場合は、管理するスキルとプロンプトが増え、アップグレード後の確認も増えます。
まとめ
開発者向けのNow Assistは、有効になっていても、指示の書き方と承認の基準で結果が変わります。
コード生成は3回とも動いたが、実装は3通りに分かれた。要件を先に決めて、承認前に7項目を確認する
フロー生成は、トリガーを先頭に置きテーブルを #incident と書いた指示で、9回ともプレビューを返した。分岐つきの指示でも分岐2つとアクション2つが作られた
フロー生成はプレビューだけで下書きのレコードを作り、Discard flow でも消えない。確認した3回は作業メモの値が空。保存後の状態は確認していないため、人が入れる前提で見る。確認の環境では、後始末の担当を決める
コード編集の自由な指示は、1回の試行で、指示どおりの1行の差分になった。カタログ項目生成は約45秒でタイトル・説明・質問3つを作り、ドラフトと質問をデータベースに残した。必須の設定と質問の型は人が決め直す。プレイブック生成は、スキルが有効でないため入力欄に届かなかった

導入の検討は、有効なスキルの一覧から始めます。次に、指示の書き方を決めたうえで、動かす範囲を決めます。
付録
用語
Creator:ServiceNow Otto for Creator(旧称 Now Assist for Creator)。開発向けの生成AI機能の総称で、スキルとAIエージェントを含む
Code Assist:スクリプト欄でコードの生成・補完・編集・要約をするスキル群。公式ドキュメントでは ServiceNow Otto for Code と呼ばれる
Workflow Studio:フローやサブフローを作る開発画面
下書き(draft):sys_hub_flow の状態の1つ。公開されておらず、アクティブでもない
試行の規模
コード生成:同じ指示で3回。新規の未保存ビジネスルール。準備の動作確認を含めて、記録上は6件
フロー生成:指示B(分岐のない基本形)で8回、指示C(分岐つき)で1回。合計9回で、すべてプレビューが出た
このほか、実行の途中で自分で止めた回、入力欄が崩れた回、プレビューが出ずに終わった回は集計に入れていない
生成コードの実行:自前のPDIで、3つのコードを4通りの条件で登録して確認(合計12件のインシデントと、優先度の診断用に4件)
コード補完・要約・説明・コメント追加・自由な指示での編集:各1回
プレイブック生成(画面を開いただけ)、カタログ項目生成:各1回
評価の方法:画面の表示、公式ドキュメントとの照らし合わせ、生成コードの実行、フローとカタログ項目の下書きのデータベース記録の読み取り、生成AIの実行記録とメール記録の確認
所要時間
コード生成:14.7秒、15.6秒、14.2秒。別の1回は153秒
フロー生成(指示B・基本形、プレビュー完了):44.5秒、46.4秒、48.2秒。追加の2回は54.0秒、42.5秒
フロー生成(指示C・分岐つき、プレビュー完了):72.4秒
コード編集(自由な指示):約50秒以内に差分が表示
カタログ項目生成:約45秒でプレビューが表示
到達しなかった機能
API定義の作成
フローで次に置く手順の推奨、フロー要約
アプリ生成(指示の入力欄を見つけられなかった)、モバイルカード生成(同)、Build Agent(外部のモデルを使う連携を伴う可能性があるため見送り)、プレイブック生成(スキルが有効でない)
テスト生成、RPAボット生成、スポーク生成、データバインディング生成、イベントハンドラー生成(起動する場所を確認していない)
エクスペリエンス生成(下の検証範囲を参照)
カタログ項目生成のあとの「次のステップに進む」以降と公開
フローを保存したあとの編集画面とフローの実行
フォームの送信による登録で、生成コードを動かすこと
ライセンス
公式ドキュメントの本文では、Creator Pro Plus にコード生成やフロー生成が含まれると書いたページは見つかりませんでした。確認できた記述は次の3点です。
フロー生成は、ServiceNow Otto for Creator の別のサブスクリプションが必要(Turn on the flow generation skill)
Creatorは、会社の権利(entitlement)を確認し、ServiceNow Store から申請してインストールする(Configuring ServiceNow Otto for Creator)
自動テストのページには「ServiceNow Creator Pro Plus's Test generation skill」という記述があり、Creator Pro Plus のスキルとして呼ばれている(Automated Test Framework (ATF))。Creatorのトップには、Foundation・Advanced・Prime の3つのライセンス階層の案内がある
どの階層・どの製品名に、コード生成やフロー生成が含まれるかは、この環境の契約内容とあわせて確認していません。
自分の環境で確認するときのURL
生成AIの実行記録:/sys_generative_ai_log_list.do?sysparm_query=ORDERBYDESCsys_created_on
スキルのステータス:/sn_nowassist_skill_config_status_list.do
フローの下書き:/sys_hub_flow_list.do?sysparm_query=status=draft
コード生成で承認した行の記録:/sn_now_assist_code_ai_generated_lines_list.do
確認した公式ドキュメントのページは、次のとおりです。
ServiceNow Otto for Code(コード支援の全体)
実機を見て気づいたこと
フロー生成は、プレビューだけで下書きを作る
公式ドキュメントはプレビューを保存しないと説明しています。その記述から、保存しなければ何も残らないと想定していました。実機では下書きのレコードが残り、成功した回の6件を数えて、想定とは違うと分かりました。検証用の環境で試すときは、フロー名に決まった接頭辞を付け、あとで一覧から探して削除できるようにします。
動かしてみると、優先度が確定する前に判定していた
生成コードは3つとも、読むと指示どおりに見えます。実行すると、画面と同じ入力(影響度と緊急度だけ)では3つとも作業メモに何も書きませんでした。ビジネスルールがOrder 100で動く時点では、優先度がまだ5だったためです。優先度1を指定して登録すると動きました。エラーは出ず、何も起きないだけなので、読むだけのレビューでは見落とします。優先度を条件にするコードは、Orderを後ろにずらすか、影響度と緊急度で判定します。
フロー生成は、プレビューが出ても作業メモの値を入れていない
プレビューの2つのノードは、指示どおりに見えます。データベースの下書きを読むと、アクションの更新値は空でした。ノードの名前が合っていることと、中身が設定されていることは別です。保存後に値を入れる作業を、承認の前の項目に入れます。
同じ指示でも、コードは毎回別の形になる
コード生成の3回は、どれも指示の中核がコードに入っていました。それでも、空のときの扱いが3通りに分かれました。1回の生成を見て「これで足りる」と判断せず、要件の文章を先に決めておきます。
検証範囲とおことわり
検証環境はNow Assistのデモ環境。有効なスキルと無効なスキルが混在しており、出荷時点の初期状態は確認していない
画面は日本語で、指示も日本語。英語の指示との差は確認していない
生成コードの実行は、自前のPDI(Australia)でREST経由の登録として行った。フォームの送信、他のビジネスルールとの組み合わせ、本番相当のデータは確かめていない
優先度の確定時点は、この環境のOrder 100〜2000で確かめた。環境ごとに変わり得る
生成コードのうち GlideSystem のログの出力先は確認していない。メール通知の動作は、メールの送信を無効にした環境のため確かめていない
フローは保存していない。保存後の編集画面の中身とフローの実行は、確かめていない
指示C(分岐つき)は1回の試行。再現性は確かめていない
生成が最後まで完了しなかった回は、回数・時間・結果に含めていない
入力の上限は、貼り付けた入力欄の文字数で確認した。生成の可否が上限で変わるかは、確かめていない
Discard flow を押しても下書きが残ることは、追加の1回で確認した
共用のデモ環境の下書きのフローは、確認後にTable APIで削除し、残りが0件であることを確認した。自前の環境のビジネスルール、インシデント、テスト用グループも削除した。自前の環境では、最初の試行で担当グループにメンバーがいたため、未送信のメールの記録が4件残っている(送信は無効)
コード編集の自由な指示、カタログ項目生成は、各1回の試行。再現性と、指示を変えた場合の結果は確かめていない
カタログ項目生成で作られたドラフト1件、質問3件、翻訳テキスト3件は、作成者と sys_id で絞って削除し、残りが0件であることを確認した
エクスペリエンス生成は、この環境では生成が最後まで完了しなかったため、検証結果に含めていない。UI Builder関連の3つのテーブルに新しい行がないことまでを確認した
プレイブック生成のスキルは有効化していない。生成の結果は確かめていない
Build Agent は、使うモデルとして外部のモデル名が表示されていたため動かしていない。外部との通信の有無は確認していない
契約や利用量の上限は確認していない