ServiceNow開発経験の説明について考える

:::note warn
一般的に使える情報ではありません 個人の記憶のまとめです 一通りまとめてから「市民開発」に気づいたので最後に追記しています
:::

# ServiceNow開発の経験ですが具体的にはどんなことをされてましたか？

と聞かれて

> 大手食品メーカーのカスタマーサポート部門でコンタクトセンターを運用していましてServiceNowのCSMを使っていました。私は主に画面周りの設計/製造を担当していました。月次で社内の課金システムにREST Messageで連携していたので他システムとの連携も経験があります。2022年の4月から先月まで携わっていました。利用していたバージョンはAspenからIstanbulです。

といった感じで答えられるようにしたいです

実際にはこんなに一息で回答することは無いでしょうが…上のような文章を紡ぐために以降に書いているようなことを整理して頭に入れて置きます

# 資格

ServiceNowの資格で持っているもの(と雰囲気次第で受験予定のあるもの)は全て説明します

# バージョン

ServiceNowは半年に一度バージョンアップします

https://qiita.com/20_percent_cooler/items/a1f8dadf6b2c1e60e979#%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3

バージョンで使える機能が結構違うので自分が携わっていた際のバージョンは覚えて説明出来たほうがいいです 新機能を調査したことあればどうキャッチアップしたか説明出来ると格好いいかもです バージョンアップはシステム全体に影響を与えるものなので対応したことがあればどう対応したかアピールできると思います

# ServiceNowパッケージ/機能

扱ったServiceNowのパッケージ/機能を説明できるようにします

## パッケージ
バージョンアップ毎に増えたり呼称が変わってるような気がしているので全網羅は諦めています
| 名 | 補足 |
|:-:|:-:|
| Now Platform | ServiceNowの全てのパッケージで使われている基盤 |
| ITSM  | ITサービスマネジメント いわゆるITIL 使う機能はIncident, Problem, Changeなど CMDBも絡むことが多いと思います |
| CSM  | Customer Service Management 一般的にはCRMと呼ばれる 使う機能はCase, Service Portal, Service Catalogなど Service PortalとService Catalogは癖が強いのでやったことがある/ないは大事かもです |
| HR | Human Resource 人事 導入事例でちょいちょい見ます |
| ITOM | ITオペレーション(運用)マネジメント 運用だからDiscoveryとか絡んだはず |
| (旧ITBM) SPM | ITビジネス(仕事)マネージメント プロジェクトマネジメントとか製品開発用に使えたはず いつの間にか名前が変わってStrategic Portfolio Management (SPM) という名前になったようです |
| ITAM | ITアセット(資産)マネージメント |
| Security Operations | セキュリティ運用 |
| App Engine | 従前のStuidoより新しいIDEぐらいの理解でスマホアプリに特化したと記憶 |

## 機能
パッケージと機能のレイヤ分けが難しいのですが何となくで分けました 多分もっとたくさんあります
| 名 | 補足 |
|:-:|:-:|
| Incident/Problem/Change | システムなどで故障が発生したらIncidentを起票して同じ故障が続いたらProblemとして扱って本格対処(ファームウェアのアップデートや機器交換など)する場合はChangeで管理 |
| CMDB | 構成管理データベース(Configuration Item Management Database) 故障したり交換したりする機器(構成アイテム)の管理用 |
| Service Portal | ライセンスを持っているユーザー(オペレータ)ではなく全従業員や顧客向けのポータル機能 けっこう癖がある(↓のリンクシート参照) |
| Case | 全従業員や顧客からの問い合わせ |
| Service Catalog | 全従業員や顧客からの注文 |
| Knowledge | 全従業員や顧客の知識集約便利記事 |
| Discovery | MID Server(↓のリンクシート参照)をお客様のDCなどの特定セグメントに立てて機器情報を収集します MID Serverを扱った経験はアピールになるか…？ |
| Event Management | 監視システムのアラートのコリレーションなどを行い、ServiceNowで扱い易いものにします |
| Domain Separation | データを分離してユーザーが利用する単位に制御する めちゃめちゃ癖があるので強みとしてアピールするか2度とやりたくないなら経歴から抹消する |
| ATF| Automated Testing Frameworkで自動でテストする仕組みです 機能なのか技術なのか切り分けが難しいです|
|Next Experience|新しいGUIのことなので機能なのか技術なのか分からないのですが…経験があるかないかは大事かなと思います|
| Update set/XML | Update set/XMLを利用した開発物のリリース |
| Import set/Transform map | データ移行(旧システムから新システムへのデータ移行作業はとても大事) |
| Upgrade | ServieNowのUpgrade対応はそれだけで稼げるぐらいのイメージです |


https://qiita.com/20_percent_cooler/items/8d4998ffe0fe14293ca3

https://qiita.com/20_percent_cooler/items/d22f6462914aacd3a423

https://qiita.com/20_percent_cooler/items/013cb2f0088b16db66be

## 他システム連携(あれば)
| 概要 | 補足 |
|:-:|:-:|
| 監視システム | Zabbix/Datadog/Site24x7などの監視システムでアラートがあがったらRESTでServiceNowにIncidentを起票とかEvent ManagementでアラートをコリレーションしてIncidentを起票とか |
| CTI | Computer Telephony Integrationでコールセンターで電話を受電したらServiceNowに連携してお客様情報が画面に表示されるとかAmazon Connectもこれに入ると思います |
| その他REST(HTTP)連携 | 別システムとRESTでデータ連携 監視システムとほぼ一緒の経験だがプリミティブなRESTを扱ったことがあるかぐらいで|
|email|メール送受信契機でなんとか|
|MID Server|MID ServerをAWSのEC2上に立ててDiscoveryで機器の情報をCMDBに自動登録していたとか|
|SSO|Azure ADやOuth0などのSSOとSingle Sign-On|

# ServiceNowの技術…？実装方法/手段…？
こちらもレイヤ分けが難しいので何となくです
## Server Side
| 名 | 補足 |
|:-:|:-:|
|Table/Form周り|TableにFieldを追加してForm Layoutで画面を作ってLabelをどうこうなんて関連|
|Script Include|共通ライブラリ|
|Business Rule|Database Triggerのようにレコード操作起因でプログラム実行|
|Flow/Workflow|業務の流れを定義|
|Rest Message|REST(HTTP Request)を飛ばす|
|Notification|メールを飛ばす|
|ACL|アクセス制御|
|User Criteria|ユーザー資格|
|Scheduled Job|Linux系のOSでいうcron プログラムを定期実行|

## Client Side
| 名 | 補足 |
|:-:|:-:|
|Client Script|画面の制御|
|UI Policy|画面とデータの制御|
|UI Page|ServiceNowのお仕着せじゃない画面/部品|
|Form Layout/View/Section|画面周り|

## どちらともいえないもの
| 名 | 補足 |
|:-:|:-:|
|UI Action|ボタン制御 デフォルトはServer SideだがClient Sideにもできるのでここ |
|Wigdet|ServiceNowのお仕着せじゃない画面/部品 HTML(CSS)とServer/Client SideのScriptを組み合わせて作る |

## データのインポート/エクスポート

ServiceNowのデータのインポート/エクスポートはまあまあ独特なのでデータのインポート/エクスポートをされたことがあれば説明しても良さそうです

https://qiita.com/20_percent_cooler/items/c6c36a8db14fbfafbc71

ServiecNow以前に利用していた旧システムがあってそちらからデータを移行したことがあればそれだけで一仕事だと思います

# ServiceNowに限らない一般的なシステム開発の話

こちらは一般的なシステム開発の話です

## 業種/業務/規模/期間

### 業種
大きな会社であればWikipediaにページがあると思いますのでそちらのページの「業種」項目が参考になると思います

https://ja.wikipedia.org/wiki/%E6%A5%AD%E7%A8%AE

### 業務

システムを利用している方々が毎日している作業です CSMの話であれば「顧客からの問い合わせを確認してから問い合わせに回答できる人に内容を照会して回答を受領次第顧客に報告する」といった感じかなと思います

仮に戦国時代であれば「偵察部隊が敵陣の様子を見てのろしで報告 自陣の担当者はのろしを見てのろしの色で偵察部隊からの連絡内容を判断し武将に報告 報告された武将は報告内容に因って戦術を考える」といったところでしょうか

https://ja.wikipedia.org/wiki/%E7%8B%BC%E7%85%99

### 規模

システムを利用している方々の人数とシステムを開発しているメンバーの人数を大まかにでも把握しておきます メンバーそれぞれの立場ごとの人数があると規模感が掴みやすいと思います

仮に関ヶ原の戦いであれば「西軍戦力80,000以上［諸説あり] 東軍戦力74,000 - 104,000［諸説あり」といったところでしょうか それぞれの立場についてはとても書ききれないのでリンク先を参考にしてください

https://ja.wikipedia.org/wiki/%E9%96%A2%E3%83%B6%E5%8E%9F%E3%81%AE%E6%88%A6%E3%81%84

### 期間

開発していた期間がいつ、どのぐらいだったのか説明します ServiceNowは半年に1度メジャーアップグレードしているので半年以上の経験があればアップグレードをどう行ったか話すことが出来るかもです

遣唐使で例えると「舒明天皇2年（630年）に始まり、以降十数回にわたって200年以上」でしょうか

https://ja.wikipedia.org/wiki/%E9%81%A3%E5%94%90%E4%BD%BF

また、仮に景行天皇（第12代）から仁徳天皇（第16代）まで仕えたと言われている武内宿禰が在任期間を説明するとしたら記録が残っている範囲で「景行天皇25年(西暦95?)～仁徳天皇50年(西暦362?)で267年ほどになります」といった感じでしょうか

https://ja.wikipedia.org/wiki/%E6%AD%A6%E5%86%85%E5%AE%BF%E7%A6%B0

## 作業工程/役割
一般的には以下のような感じでしょうか 参考にWikipediaのそれっぽいページにリンクを張りました

* 要件定義
* 基本/詳細/プログラム設計
* 製造
* 単体/結合/システム/運用テスト
* ドキュメンテーション
* 運用
* システム移行

https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%E5%B7%A5%E7%A8%8B

https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A9%E3%83%BC%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A9%E3%83%BC%E3%83%AB%E3%83%BB%E3%83%A2%E3%83%87%E3%83%AB

https://ja.wikipedia.org/wiki/%E5%8F%8D%E5%BE%A9%E5%9E%8B%E9%96%8B%E7%99%BA

# 市民開発

ServiceNow DeveloperのLearning Plansを見ると「Citizen Developer」や「ServiceNow Application Developer」という違ったレイヤの用語が出ています

https://developer.servicenow.com/dev.do#!/learn/learning-plans/utah

「Citizen Developer」は市民開発とも言われておりエンジニアではない方が開発することを指します システム開発の敷居を下げるために最近出てきた概念な気がします 「No Code」とも言われていました

ここまで書いてから市民開発のことを考慮して無かった気づいて面食らいました…この記事で書いた技術の内容は「ServiceNow Application Developer」で書いてある内容に近いと思います