ServiceNow
こんにちは、初めまして。開発本部の赤塚です。
みなさんはServiceNow(サービスナウ)というプラットフォームをご存知でしょうか。
今回は、ServiceNowがどのようなものなのか、
僕がグリーに入社してから1年間開発してきた経験を踏まえて分かったことや、
苦労したことをご紹介したいと思います。
ServiceNowとは
ServiceNowとは、ワークフローや資産管理などの様々な業務システムを一元化することができるSaaS型のツールです。
グリーでは、入社の依頼やPC / 携帯電話 / ソフトウェアライセンス / ツールのアカウントなど、社内ITを利用する上で必要となるほぼ全ての申請をServiceNowで受け付けています。
ITに関する様々な依頼をServiceNowに集約することによって
- 「ユーザーが申請し、サービスデスクが対応するまでの一連の業務フローを標準化できる」
- 「様々な作業タスクを単純化・自動化できる」
この二点が特徴だと私は考えています。
例えば、Excelや書類でやりとりを行う場合、作業内容の複雑化、手順の抜け漏れ、内容に不備による差し戻し等、色々と問題が起きます。また、同じ作業でも、人によってクオリティや対応スピードにばらつきがでます。
ServiceNowを使うことで、申請を行うユーザーにとってはシンプルで分かり易く、申請を処理するサービスデスクにとってもクオリティやスピードの改善が見られました。様々なタスクを自動化することで、少ない人数でも多種多様なサービスを提供できるようになったと思います。
開発について
開発面におけるServiceNowのメリットは、画面やロジックを作成する際にソースコードの記述が最低限で済むことです。
以前、私はJavaとJSPでアプリを開発していたのですが、その時と比べると圧倒的に少ない作業で開発が出来てしまうことに驚きました。
開発する上での基本的な考え方は同じなので、Javaを用いての開発経験がある方はもちろん、どんな言語であっても開発経験がある方ならそこまで難しくはないと思います。
ただし、これまでやってきたコーディングと違うところがいくつかあり、慣れるまで戸惑うことがありました。その中で代表的な例を挙げるとデータベースの操作です。
ServiceNowのテーブル定義はこんな感じです(ハードウェア情報を管理しているテーブル)
ServiceNowではデータベースにデータを挿入する際にSQLを書くことがなく、具体的には下記のような記述です。
1 2 3 4 5 |
gr_emp = new GlideRecord('Employee'); gr_emp.initialize(); gr_emp.id = '000001'; gr_emp.name = 'taro'; gr_emp.insert(); |
全然違いますね!
ServiceNowのテーブル操作にはGlideRecordという文法を使用します。
詳しく話すと長くなるので割愛しますが、詳細はServiceNowの公式ドキュメントを
記載しておきますので気になる方はそちらを読んでみてください。
良いことばかり説明してきましたが、欠点や使いづらいなと感じた点もいくつかあるので箇条書きでご紹介します。
- リファクタリング機能がない。例えば、修正時の影響範囲を確認するためにメソッド名で全検検索をしてもヒットしない場合がある
- ServiceNow標準の、ボタンや入力フィールド等の部品の種類が少ない。足りない部品はフルスクラッチで作らなければならず、結局時間がかかる
- ソースコードのバージョン管理という概念がない。常にUPDATEで本番環境に変更を加えていくため、間違えた場合に「直前のソースコードに戻す」という行為が不可能(Git Hubとの連携でソースコード管理が可能らしいですが、修正内容などのソースコードはXMLなので前後比較は厳しいのでは...?と思っています。GitHub連携でのバージョン管理はまだ実践していないので、空き時間を見つけてやってみようと思います。)
色々と書かせていただきましたが、この記事はあくまでGREEで使用しているバージョン(London)の事です。ServiceNowは半年に1回という早いペースで大型アップデートがあり、次々と新機能がリリースされています。前述した使いにくい点もいずれ解消されるのではないかと期待しています。
簡単なアプリであれば無料で使用できるトライアル版があるので、少しでも興味がある方は実際に触っていただくことをおすすめします。