EN
AI-Led SDLC Enablement

SDLC on ServiceNow

ServiceNow SDK、Git、ReleaseOps、CI/CD パイプラインを使って ServiceNow アプリをビルド・テスト・リリースするための、エンドツーエンドの SDLC ガイドです。

Fluent + SDK でビルド
ATF + Test Agent でテスト
ReleaseOps でリリース

← → で移動  ·  Ashwin Patti, Shelby Cohen

Legal

セーフハーバー条項

このプレゼンテーションには、当社の信念と仮定、およびこのプレゼンテーションの日付時点で入手可能な情報に基づく「将来の見通し」に関する記述が含まれている場合があります。将来の見通しに関する記述には、既知および未知のリスク、不確実性、および実際の結果が将来の見通しに関する記述によって予想または暗示されるものと大幅に異なる可能性があるその他の要因が含まれます。このような差異の原因または一因となりうる、これらまたはその他の要因の詳細情報には、フォーム 10-K の最新の年次報告書、フォーム 10-Q の四半期報告書、およびその他の証券取引委員会に対する提出書類の「Risk Factors」(リスク要因) セクションの記載内容などが含まれます。当社では、将来の見通しに関する記述において開示されている計画、目的や期待を達成することは保証できません。また、お客様は、当社による将来の見通しに関する記述に過度の信頼を置くべきではありません。新製品、特長、機能に関する情報は、製品の一般的な方向性を概説することを目的としており、購入の判断材料にすることはお勧めしません。また、情報提供のみを目的としており、いかなる契約にも組み込むことはできず、いかなる資料、コード、または機能の提供もコミットまたは確約するものではなく、法的義務もありません。当社の製品について記載されている特長や機能の開発、リリース、およびタイミングは、当社の独自の判断で決定されます。当社は、将来の見通しに関する記述を更新する義務を負わず、また更新する意図もありません。

アジェンダ

今日を、最初から最後まで

👋 ようこそ — 10:00〜17:00。今日一日で、実際のアプリのビルド・テスト・ソース管理・リリースまでを一貫して体験します。

基礎知識

このモデルにおける「アプリ」とは?

「あなたが所有し、ServiceNow プラットフォーム上で構築するすべてを収める永続的なコンテナ。名前、バージョン、スコープを持つ。」

対象範囲

グローバルアプリ、非グローバルアプリ、そして「move and edit」で構築された ITSM 実装 — すべてが同一モデルの下にある。

対象外

「move」による所有権を取得していない、既存の OOTB アプリへのカスタマイズ — そのメタデータには独自の永続的なコンテナがなく、あなたのものではなく ServiceNow の所有権のままとなる。

重要な理由

新規構築であっても既存のカスタマイズであっても、開発モデルは一つに統一される。

基礎知識

推奨されるスタック

🛠️

SDK

ビルドエンジン。デプロイ可能なアーティファクトへコンパイル

💻

Studio

IDE / プロダクションコードモード

🌿

Git

ブランチ、PR、マージ

📦

サンドボックス

分離された開発用インスタンス

🤖

Build Agent

AI 支援による実装

✅

ATF

自動テストフレームワーク

🗄️

App Repo

不変のアーティファクトストア

🚀

ReleaseOps

アセス(評価)、承認、リリース

基礎知識

Fluent 以前:1つの表現形式、2度

これまでの ServiceNow では、ビルド時とランタイムは同じ表現形式でした — 人が読む場合もプラットフォームが実行する場合も、すべて XML だったのです。

編集していたもの

フォームとクリックによる XML — 読みにくく、diff を取りにくく、レビューしにくい。

プラットフォームが実行するもの

編集したのと同じ XML — コンパイルのステップも型チェックも、インストール前の診断もない。

基礎知識

Fluent はビルド時とランタイムを分離する

📝

ビルド時

TypeScript — 人が読み・書き・理解するためのもので、コンパイル時の型チェックと診断がある

→
⚙️

ランタイム

プラットフォームが実際に実行するもの — その表現形式に直接触れることはない

これが実践における「シフトレフト」です:ミスはビルド時、エディタの中で、インストールの前に検出される — すでに何かが壊れたあとのランタイムではありません。

基礎知識

SDK + Fluent = ソース駆動開発

Fluent

TypeScript ベースの DSL — .now.ts ファイルでメタデータを定義し、フォームをクリックして回る代わりに、コンパイル時の型チェックと診断が得られる。

export const MaintenanceRequest = Table({
  label: 'Maintenance Request',
  fields: { equipment: Reference('equipment') }
});

JS モジュール + React

ビジネスロジックは型付きの @servicenow/glide インポートとして記述。UI Page は React、Svelte、Vue、Preact で構築。

インナーループ

$now-sdk build # .now.ts ファイルの診断結果が即座に表示される

続いてインストールとテスト

$now-sdk install --sandbox
基礎知識

Git は正式なソース・オブ・トゥルース

Git

ブランチ分岐、プルリクエスト、行単位のレビュー、3-way コンフリクト解決、任意の時点への正確なロールバック。

Update Set

XML トランスポート用のアーティファクトに過ぎない — コラボレーション、ブランチ分岐、人間が読める diff のために作られたものではない。

この対比については、後ほどソース管理のモジュールで詳しく掘り下げます。

Setup

ソース管理を準備しましょう

休憩

☕

9:55 – 10:10 · Build-ready な要件定義から再開します

Build-ready な要件定義

曖昧なストーリー vs. Build-ready なストーリー

曖昧

「設備担当ユーザーとして、修理してもらうために設備のメンテナンスを依頼したい。」

Build-ready

エンティティ: Maintenance Request、Equipment
ロール: Requester(自分の依頼を作成・参照)、Technician(割り当てられた依頼を参照し、ステータスを更新)
Given–When–Then: Requester が稼働中の Equipment に対して依頼を送信した場合(Given)、送信すると(When)、ルーティングルールに従って「New」状態の Maintenance Request が作成され割り当てられる(Then)。

アクティビティ

あなたの番です:書き直してみましょう

サンドボックスを使う理由

1つのインスタンス、複数の開発者、衝突ゼロ

エージェント型ツールは、大量のメタデータを高速に変更します。共有インスタンス上では、開発者間で最後に書き込んだものが勝つ(last-write-wins)状態になりますが、サンドボックスが影響範囲を閉じ込め、Git がそれを統合します。
🏢

開発用インスタンス

共有、非本番

→
📦

あなたのサンドボックス

フィーチャーブランチはここに存在

→
🧪

テスト用インスタンス

開発用とは別

→
🏭

本番環境

テスト用とは別

開始前にサンドボックスを割り当て、その中でフィーチャーブランチを作成し、作業が終わったら廃棄しましょう。

セットアップ

サンドボックスを準備しましょう

  • ✅サンドボックスにログイン — Exercise 01 と同じ認証情報で、ベースインスタンスではなくサンドボックスの URL を指定
  • ✅開発用サンドボックスが割り当てられていることを確認(Exercise 01 で完了済み)
  • ✅main からフィーチャーブランチを作成
$git checkout -b feature/maintenance-app
Build Agent

Build Agent とは?

平易な言葉によるプロンプトから、動作するアプリへ — 今日ビルドするのと同じセッション、同じインスタンス上で。

対話的

やりたいことを平易な言葉で説明すると、Build Agent がエンティティ・ロール・ロジックを提案します — フォームをクリックして回る必要はありません。

プラットフォームネイティブ

あなたのアプリのスコープ内に、実際の Fluent メタデータオブジェクトを構築します — 後で捨てる使い捨てのプロトタイプではありません。

フルループ

同じセッションでアプリとその ATF テストの両方を生成します — これが次にビルドしていく内容です。

Build Agent

ServiceNow Studio 内の Build Agent

ServiceNow Studio 内の Build Agent チャットパネル。フローのロジックを平易な言葉で説明し、見つかったバグとスケーリング問題の修正案を提示している画面(英語版 UI)

アプリの既存のメタデータを読み取り、フローが実際に何をしているかを平易な言葉で説明し、具体的な修正案を提示します — 汎用的な回答ではなく、あなたのインスタンスに基づいたものです。

Build Agent + ATF

テストは後付けではなく開発ループの中に存在する

テストはアプリのスコープ内に存在し、ビルドしながら作成されます — 後から追加するものではありません。
ビルド+テスト(演習)

メンテナンスアプリのビルド+テスト

  • 👀まず、完成したアプリ — 目指すべきゴール — を見てみましょう。
  • 💬ホワイトペーパーの自然言語による説明を使って Build Agent にプロンプトを与えます。
  • 🧑‍🏫私たちは各テーブルを巡回します — いつでもお気軽にお呼びください。

任意・アーキテクト向け

// Build Agent が裏で生成する Fluent コード
export const MaintenanceRequest = Table({
  label: 'Maintenance Request',
  fields: { equipment: Reference('equipment') }
});
Q&A

質問はありますか?

11:30 – 12:00

ランチ

🍽️

再開まで少々お待ちください

振り返り

ここまでの進捗

✅

ビルド

完了

→
✅

テスト

完了

→
🗂️

管理

PR、マージ、公開

→
🚀

リリース

ReleaseOps、デプロイ

アプリはビルドとテストが完了しました。次はソース管理とリリースです。

Q&A

質問はありますか?

1:45 – 2:00

オフインスタンス開発(演習)

同じアプリを、プラットフォームの外で

ソース管理(演習)

演習:Git でリリースする

📌 押さえておきたい点

Git はブランチ分岐・レビュー・行単位のコンフリクト解決ができます。Update Set にはできません。

休憩

☕

3:00 – 3:15 · ReleaseOps から再開します

ReleaseOps

App Repository:ReleaseOps への橋渡し

🌿

ソース管理

main にマージ済み — サンドボックスをまたいで複数のバージョンが同時に存在

→
🗄️

App Repository

Studio での publish により、会社内のすべてのインスタンスでアプリがインストール可能になる

→
📦

Update Set

publish によって自動生成される — 実際のデプロイのペイロード

ReleaseOps はソース管理に直接接続しているわけではありません — この自動生成された Update Set こそが、次に Deployment Request にプロモートされるものです。

ReleaseOps

ReleaseOps:2つのオブジェクト、1つのパイプライン

Deployment Request

ペイロードを格納するコンテナ。Update Set を Deployment Request にプロモートし、「Ready to Assess」にマークすると — アセスメントの手順(Instance Scan → Move to Test → Run ATF)がそれに対して実行されます。

Release

クリアされた Deployment Request を本番環境へ移すレコード — On Demand(即時)または Scheduled(指定日時にまとめて実行)。ReleaseOps のコントローラー環境(通常は本番環境)上に存在します。

ここに到達する経路は2つあります:Update Set を Deployment Request にプロモートする方法(本ラボの方法)、または承認ゲート付きで Git から CI/CD REST API 経由でトリガーする方法(choose-your-own-adventure を参照)。

ReleaseOps

なぜ3つのインスタンスが必要なのか

💻

Dev

ビルドする場所、Instance Scan が実行される場所

→
🧪

Test / Staging

アセスメントのターゲット — 設定可能なラベルであり、文字通り「test」という意味ではない

→
🚀

本番環境

別の、最終的な移行先

アセスメントは、ペイロードを dev からテスト/ステージングのターゲットへすでに移動させています。それが最終的な移行先でもある場合、リリースにはもう先がありません — 各ステージにそれぞれ別のインスタンスが必要です。

Freeze date

Ready for Deployment に到達するための締め切り。過ぎてしまうと、Deployment Request は deferred(延期) とマークされます — ブロックされるわけではなく、後のリリースに乗ることもできます。

Release date

準備が整ったすべての非延期 Deployment Request に対して、本番環境への一括プッシュが実際に発生するタイミング。

ReleaseOps(演習)

品質管理のモデル

🔍

Instance Scan

開発用インスタンス上での静的ポリシーチェック

→
📥

Move to Test

アセスメント開始

→
✅

Run ATF

機能面のカバレッジ

→
🚀

Ready for Deploy

リリースの準備完了

ラボ:Deployment Request を作成し、「Ready to Assess」にマークして実行を確認しましょう

Retest

そのままアセスメントを再実行。

Need Code Change

アセスメントは無効化されます — Deployment Request は Draft に戻り、新しいペイロードが必要になります。

Sign Off

手動承認で先に進めます。

Q&A

質問はありますか?

3:45 – 4:00

本番環境へのプッシュ(デモのみ)

プロモート、デプロイ、そして必要であればロールバック

Choose your own adventure(演習)

トラックを選んで深く掘る

Fluent 深掘り

より多くのメタデータ型、UI ビルダーからの transform/sync

テスト深掘り

Test Agent によるトリアージ、Cloud Runner、回帰スイート

CI/CD API

now-sdk cicd、Git トリガーのパイプライン、承認ゲート

MCP 連携

Connect Hub 経由で Figma/Miro を連携し、仕様から直接ビルド

カスタムルール

Build Agent の出力の言葉・用語を変更するルール

ReleaseOps

Deployment Request、アセスメントのプレイブック、Ready for Deploy

興味のあるトラックを自由に探索してください — ご質問はいつでもどうぞ。始め方のヒントは演習を参照してください。

まとめ

1枚の絵にたどる、あなたのアプリ

📝

計画

→
🛠️

ビルド

→
🧪

テスト

→
🗂️

管理

→
🚀

リリース

Update Set は作業をまとめて運ぶだけのものです — それ以上ではありません。ソース管理ではなく、マージもできません。

ご質問は Ashwin Patti、Shelby Cohen まで。

Warp Speed(デモのみ)

Warp Speed — プラットフォーム上でvibe coding

今日、Build Agent を使うということは、admin であることを意味します — それ以外の選択肢はありません。delegated dev もこれを完全には解決しません:delegated dev であっても、新しいアプリケーションを作成することはできないのです。Warp Speed は、本番環境に触れる前に、分離された環境の中でアプリを構築し、その内容を確認できるようにするものです。
🔑

ログイン

ホームベースに対して認証

→
💬

Build Agent にプロンプト

分離されたランタイムでビルド

→
🚀

ライブ URL

Dev と Prod が同時に

ありがとうございました

🙏

SDLC ガイド全文、リファレンス、トラブルシューティング:
servicenow.github.io/sdk/guides/sdlc-guide

ボーナス

Build Agent — Autonomous Engineering

ボーナス

Autonomous Engineering における Test Agent

ボーナス

Build Agent + MCP

プロンプトで手作業により再度説明する代わりに、すでに使っているツール(Figma、Miro)から直接仕様を取り込みます。
🔌

Connect Hub

管理者が Figma/Miro アプリを設定

→
🛡️

AI Control Tower

管理者が承認

→
⚙️

あなたの設定

MCP サーバーを有効化(MCP タブ)

→
🤖

Build Agent

ツールから直接仕様を読み取る

一度だけの管理者設定(Connect Hub + AI Control Tower の承認)を行えば、あとは各開発者が自分の Build Agent 設定で有効化できます。

ボーナス

カスタムルール — 言葉づかいを変える

BONUS SLIDE — PENDING/ROADMAP CONTENT PER LEGAL(SLIDE 2). PRESENTER TO FILL IN BEFORE SESSION.