application-scope について
ServiceNow のカスタムアプリ開発者向けスキルです。アプリケーションスコープの選択と更新セットとの整合を案内し、開発レコードの適切な記録やクロススコープアクセスの確認に役立ちます。
主な機能
- 01対象アプリケーションの検索と選択
- 02現在のアプリケーションスコープ設定
- 03アプリ専用更新セットの作成と設定
- 04スコープと更新セットの整合確認
- 05クロススコープアクセス権の管理
活用シーン
- 01カスタムアプリ開発前のスコープ設定
- 02機能ごとのアプリ専用更新セット作成
- 03誤ったスコープやセットへの記録の調査
- 04他のテーブルへのアプリのアクセス設定
MCP 対応
ServiceNow MCP ツールでアプリケーションと更新セットを照会し、現在のスコープと更新セットを設定して整合性を確認する方法を説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill application-scopeインストール後、Claude Code で/application-scopeを入力して読み込まれたか確認します。
詳細
アプリケーションスコープの管理
概要
ServiceNow のスコープ付きアプリケーション開発では、アプリケーションコンテキストと更新セットの整合性を慎重に管理する必要があります。このスキルでは、現在のアプリケーションスコープの設定、スコープ付きアプリケーションとグローバルアプリケーションに関する考慮事項の理解、アプリケーション開発に合わせた更新セットの適切な設定について説明します。
- どのような問題を解決しますか? レコードが誤ったアプリケーションスコープに作成されるのを防ぎ、スコープ付きアプリケーションの更新セットが適切に記録されるようにします
- このスキルは誰が使うべきですか? カスタムのスコープ付きアプリケーションを開発する ServiceNow 開発者
- 期待できる成果は何ですか? 適切な更新セットへの記録と名前空間の分離を実現した、正しいスコープのアプリケーション成果物
前提条件
- 必要な ServiceNow ロール:
adminまたはapplication_creator - 既存のスコープ付きアプリケーション、またはアプリケーションを作成する権限
- ServiceNow のアプリケーションスコープと名前空間に関する理解
- 関連スキル:
admin/update-set-management(最初に更新セットについて理解しておく必要があります)
手順
ステップ 1:対象のアプリケーションを特定する
まず、作業対象のアプリケーションを探します。
MCP ツールを使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: sys_app
query: scope!=global^active=true
fields: sys_id,name,scope,version,vendor
limit: 50
想定される応答:
{
"result": [
{
"sys_id": "abc123def456...",
"name": "My Custom Application",
"scope": "x_myco_custom_app",
"version": "1.0.0",
"vendor": "My Company"
}
]
}
判断基準:
- アプリケーションが存在する場合 → ステップ 2 に進みます
- アプリケーションが見つからない場合 → 新しいアプリケーションを作成します(例 3 を参照)
- 複数のアプリケーションから選ぶ場合 → スコープのプレフィックスが意図した名前空間と一致することを確認します
ステップ 2:現在のアプリケーションスコープを設定する
以降のすべての操作に適用するアプリケーションコンテキストを設定します。
MCP ツールを使用する場合:
Tool: SN-Set-Current-Application
Parameters:
app_sys_id: abc123def456...
重要: これは sys_trigger メカニズムを使用した自動操作です。約 1~2 秒で実行されます。
確認:
Tool: SN-Query-Table
Parameters:
table_name: sys_user_preference
query: user=javascript:gs.getUserID()^name=apps.current_app
fields: value
ステップ 3:アプリケーションの更新セットを確認または作成する
スコープ付きアプリケーションには、明確に分離するために専用の更新セットを用意する必要があります。
アプリケーションの既存の更新セットを検索します:
Tool: SN-Query-Table
Parameters:
table_name: sys_update_set
query: application=abc123def456...^state=in progress
fields: sys_id,name,state,application
limit: 10
判断基準:
- 適切な更新セットが存在する場合 → 既存のものを使用します(ステップ 4)
- 更新セットがない、またはすべて完了済みの場合 → 新しい更新セットを作成します
アプリケーション専用の更新セットを作成します:
Tool: SN-Create-Record
Parameters:
table_name: sys_update_set
data:
name: "My Custom App - Feature Development v1.1"
application: abc123def456...
state: in progress
description: "Development update set for new features"
ステップ 4:現在の更新セットを設定する
更新セットをアプリケーションスコープに合わせます。
MCP ツールを使用する場合:
Tool: SN-Set-Update-Set
Parameters:
update_set_sys_id: xyz789ghi012...
確認:
Tool: SN-Get-Current-Update-Set
Parameters: (none required)
想定される応答:
{
"name": "My Custom App - Feature Development v1.1",
"sys_id": "xyz789ghi012...",
"state": "in progress",
"application": "abc123def456..."
}
ステップ 5:スコープと更新セットの整合性を確認する
開発を始める前に、スコープと更新セットが両方とも正しく設定されていることを確認します。
整合性の確認クエリ:
Tool: SN-Query-Table
Parameters:
table_name: sys_update_set
query: sys_id=xyz789ghi012...
fields: sys_id,name,application.name,application.scope
整合性チェックリスト:
- アプリケーションスコープが対象のアプリケーションと一致している
- 更新セットのアプリケーションフィールドが正しいアプリケーションを参照している
- 更新セットの状態が「進行中」である
- ユーザーがそのスコープへの書き込みアクセス権を持っている
ツールの使用
MCP ツール(Claude Code/Desktop)
| ツール | 用途 |
|---|---|
SN-Set-Current-Application | アクティブなアプリケーションスコープを設定する |
SN-Set-Update-Set | アクティブな更新セットを設定する |
SN-Get-Current-Update-Set | 現在の更新セットを確認する |
SN-Query-Table | アプリケーションと更新セットを検索する |
SN-Create-Record | 新しい更新セットを作成する |
REST API(ChatGPT/その他)
| エンドポイント | メソッド | 用途 |
|---|---|---|
/api/now/table/sys_app | GET | アプリケーションの一覧表示 |
/api/now/table/sys_update_set | GET | 更新セットの一覧表示 |
/api/now/table/sys_update_set | POST | 更新セットの作成 |
注: REST API を介して現在のアプリケーションを設定するには、バックグラウンドスクリプトの実行またはセッションの操作が必要で、複雑です。MCP ツールを使えば、この操作は自動的に処理されます。
ネイティブツール(Claude Code)
| ツール | 用途 |
|---|---|
Bash | REST 操作用の curl コマンドを実行する |
Read | アプリケーション設定ファイルを読み取る |
スコープ付きアプリケーションとグローバルアプリケーションに関する考慮事項
スコープ付きアプリケーションを使用するタイミング
スコープ付きアプリケーションを使用する場合:
- 再利用可能で配布可能なアプリケーションを構築するとき
- 名前空間の分離が必要な機能を開発するとき
- ServiceNow Store 向けのアプリケーションを作成するとき
- マルチテナントのシナリオで、テナント固有のカスタマイズを構築するとき
- アップグレード後も問題なく維持されるべき機能を実装するとき
グローバルスコープを使用する場合:
- 小規模で一度限りのカスタマイズを行うとき
- ServiceNow の標準機能を変更するとき
- 幅広いテーブルへのアクセスが必要な連携を作成するとき
- スコープ付きアーキテクチャに移行する前にプロトタイプを作成するとき
スコープ付きアプリケーションのメリット
| メリット | 説明 |
|---|---|
| 名前空間の分離 | テーブル、スクリプト、UI 要素にスコープのプレフィックスが付きます(例:x_myco_app_*) |
| アップグレードからの保護 | スコープ付きアーティファクトはプラットフォームのアップグレードから分離されます |
| 依存関係の管理 | アプリケーション間の依存関係が明確になります |
| アクセス制御 | アプリケーションレベルでアクセスを制限できます |
| 移植性 | 更新セットまたはストアを介して簡単にエクスポート/インポートできます |
スコープ付きアプリケーションの制限
| 制限 | 影響 | 回避策 |
|---|---|---|
| GlideRecord アクセスの制限 | デフォルトではすべてのグローバルテーブルをクエリできません | Application Properties からスコープ間アクセスをリクエストします |
| API の制限 | 一部の GlideSystem API を利用できません | 許可された API を使用するか、権限の昇格をリクエストします |
| UI の制限 | グローバル UI 要素を変更できません | スコープ付き UI コンポーネントを作成します |
| Script Include の可視性 | スコープ間で利用するには明示的に公開する必要があります | accessible_from: all_application_scopes を設定します |
スコープ間アクセス
スコープ付きアプリケーションからグローバルまたは別のスコープ付きテーブルにアクセスできるようにするには:
Tool: SN-Create-Record
Parameters:
table_name: sys_scope_privilege
data:
application: abc123def456...
table: incident
operation: read_write
status: allowed
ベストプラクティス
- 更新セットより先にスコープを設定: 必ず最初にアプリケーションスコープを設定し、その後で更新セットを設定します。これにより、更新セットが正しいアプリケーションに関連付けられます。
- 機能ごとに更新セットを作成: きめ細かなデプロイを可能にするため、個別の機能やスプリントごとに別々の更新セットを作成します
- 命名規則: 一貫した命名を使用します:
{App Name} - {Feature/Sprint} - {Version}(例:「My App - User Portal v1.2」) - 開発前に確認: 各開発セッションの開始時に、完全な検証手順(ステップ 1~5)を実行します
- アプリケーションに合わせた更新セット:
applicationフィールドにスコープ付きアプリの sys_id を設定して、必ず更新セットを作成します - スコープのプレフィックスを統一: 関連するアプリケーション間でスコープのプレフィックスを一貫させます(例:
x_myco_*)
トラブルシューティング
よくある問題 1:レコードが誤ったスコープで作成される
症状: 新しいレコードが、意図したアプリケーションではなくグローバルスコープに表示されます
原因: レコード作成前にアプリケーションスコープが設定されていません
解決方法:
SN-Set-Current-Applicationを使用してアプリケーションスコープを設定します- sys_user_preference をクエリして、スコープが有効であることを確認します
- 誤ったスコープで作成されたレコードを削除して、再作成します
よくある問題 2:更新セットにレコードが取り込まれない
症状: 変更が更新セットに表示されません
原因: 更新セットがアプリケーションスコープに合っていないか、更新セットが有効になっていません
解決方法:
- 更新セットの
applicationフィールドが現在のスコープと一致することを確認します - 更新セットの状態が「進行中」であることを確認します
- 変更対象のテーブルが更新セットに取り込まれることを確認します(一部のテーブルは対象外です)
よくある問題 3:アプリケーションスコープを設定できない
症状: SN-Set-Current-Application が失敗するか、効果がありません
原因: 権限が不足しているか、アプリケーションが見つかりません
解決方法:
- ユーザーに
adminまたはapplication_creatorロールがあることを確認します - app_sys_id が正しく、アプリケーションが存在することを確認します
- アプリケーションが有効であり、廃止されていないことを確認します
よくある問題 4:スコープをまたぐアクセスが拒否される
症状: GlideRecord クエリで結果が返されない、またはエラーが発生する 原因: スコープ付きアプリケーションに対象テーブルへのアクセス権限がありません 解決方法:
- アクセスを許可する sys_scope_privilege レコードを作成します
- または、スクリプトインクルードを変更して、昇格された権限で
GlideRecordSecureを使用します - アプリケーションプロパティでスコープをまたぐアクセスをリクエストします
よくある問題 5:更新セットが誤ったアプリケーションに関連付けられている
症状: 更新セットは存在しますが、Global または別のアプリにリンクされています 原因: アプリケーションのスコープを設定する前に更新セットが作成されました 解決方法:
- 更新セットの
applicationフィールドを更新します:
Tool: SN-Update-Record
Parameters:
table_name: sys_update_set
sys_id: xyz789ghi012...
data:
application: abc123def456...
- 必要に応じて、既存のレコードを新しい、アプリケーションに紐付いた更新セットに移動します
例
例 1:標準的な開発セッションのセットアップ
スコープ付き開発セッションを開始するための完全なセットアップです:
# Step 1: Find application
Tool: SN-Query-Table
Parameters:
table_name: sys_app
query: scope=x_myco_custom_app
fields: sys_id,name,scope
# Step 2: Set application scope
Tool: SN-Set-Current-Application
Parameters:
app_sys_id: abc123def456...
# Step 3: Find or create update set
Tool: SN-Query-Table
Parameters:
table_name: sys_update_set
query: application=abc123def456...^state=in progress
fields: sys_id,name
# Step 4: Set update set
Tool: SN-Set-Update-Set
Parameters:
update_set_sys_id: xyz789ghi012...
# Step 5: Verify setup
Tool: SN-Get-Current-Update-Set
Parameters: (none)
例 2:アプリケーション用の新しい更新セットを作成する
適切に関連付けられた更新セットを作成します:
# Create update set linked to application
Tool: SN-Create-Record
Parameters:
table_name: sys_update_set
data:
name: "Customer Portal - Sprint 14"
application: abc123def456...
state: in progress
description: "Sprint 14 features: ticket submission, knowledge base search"
# Set as current
Tool: SN-Set-Update-Set
Parameters:
update_set_sys_id: [sys_id from above]
例 3:新しいスコープ付きアプリケーションを作成する
新しいスコープ付きアプリケーションをゼロから作成します:
# Step 1: Create the application
Tool: SN-Create-Record
Parameters:
table_name: sys_app
data:
name: "My New Application"
scope: "x_myco_newapp"
version: "1.0.0"
vendor: "My Company"
short_description: "Application for managing custom workflows"
# Step 2: Set as current application
Tool: SN-Set-Current-Application
Parameters:
app_sys_id: [sys_id from above]
# Step 3: Create initial update set
Tool: SN-Create-Record
Parameters:
table_name: sys_update_set
data:
name: "My New Application - Initial Development"
application: [sys_id from step 1]
state: in progress
# Step 4: Set update set
Tool: SN-Set-Update-Set
Parameters:
update_set_sys_id: [sys_id from step 3]
例 4:複数インスタンスでのスコープ付き開発
特定のインスタンスでスコープを設定します:
# Set application on dev instance
Tool: SN-Set-Current-Application
Parameters:
app_sys_id: abc123def456...
instance: dev
# Set update set on dev instance
Tool: SN-Set-Update-Set
Parameters:
update_set_sys_id: xyz789ghi012...
instance: dev
# Verify on dev instance
Tool: SN-Get-Current-Update-Set
Parameters:
instance: dev
例 5:更新セットによるレコードの取得を確認する
レコードが正しく取得されていることを確認します:
# Create a test record
Tool: SN-Create-Record
Parameters:
table_name: sys_properties
data:
name: x_myco_app.test_property
value: test_value
type: string
# Verify capture in update set
Tool: SN-Query-Table
Parameters:
table_name: sys_update_xml
query: update_set=xyz789ghi012...^nameSTARTSWITHsys_properties
fields: sys_id,name,type,action
limit: 10
自動化ワークフロー全体
スコープと更新セットの管理を組み合わせた完全な自動化の例です:
# FULLY AUTOMATED SCOPED APP DEVELOPMENT (Zero Manual Steps!)
# 1. Query for existing application
Tool: SN-Query-Table
Parameters:
table_name: sys_app
query: scope=x_myco_custom_app
fields: sys_id,name,scope,version
# 2. Set as current application (automated via sys_trigger)
Tool: SN-Set-Current-Application
Parameters:
app_sys_id: abc123def456...
# 3. Find or create update set
Tool: SN-Query-Table
Parameters:
table_name: sys_update_set
query: application=abc123def456...^state=in progress
fields: sys_id,name
# 4. Set update set (automated via sys_trigger)
Tool: SN-Set-Update-Set
Parameters:
update_set_sys_id: xyz789ghi012...
# 5. Verify both are active
Tool: SN-Get-Current-Update-Set
Parameters: (none)
# 6. Begin development - create business rule
Tool: SN-Create-Record
Parameters:
table_name: sys_script
data:
name: Validate Custom Record
table: x_myco_custom_app_records
when: before
active: true
script: |
(function executeRule(current, previous) {
if (!current.name) {
gs.addErrorMessage('Name is required');
current.setAbortAction(true);
}
})(current, previous);
# 7. Verify capture
Tool: SN-Query-Table
Parameters:
table_name: sys_update_xml
query: update_set=xyz789ghi012...
fields: sys_id,type,name,action
関連スキル
admin/update-set-management- 更新セットを詳しく管理するadmin/instance-management- スコープ付き開発のためにインスタンスを切り替えるadmin/deployment-workflow- スコープ付きアプリケーションを複数のインスタンスにデプロイするadmin/batch-operations- スコープ内で一括操作を実行する