情シス・社内SEのためのチケット管理システム構築・運用実践ガイド
目次
情シスの業務は、「入社対応」「PC故障」「パスワードリセット」といった定型業務と、「システム障害」「セキュリティインシデント」といった緊急対応が混在しています。これらを効率よく捌くために特化した、情シス向けチケット管理システムの運用設計について解説します。
情シスが抱えがちな課題
一般的なカスタマーサポートと異なり、情シスには以下のような特有の課題があります。
- ユーザー数が社員数とイコール: 顧客が増減するのではなく、社員数がそのままサポート対象数となる。
- 物理的作業の発生: PCのキッティングや修理手配など、オンラインで完結しないタスクが多い。
- 承認フローの必要性: 権限付与やSaaSアカウント発行には、上長の承認エビデンスが必要になる。
情シスに必要な機能要件
これらの課題を解決するために、以下の機能が求められます。
- 承認ワークフロー: チケットのステータス遷移に「承認」プロセスを組み込めること。
- 資産管理連携: ‘PC-001’ の故障チケット起票時に、そのPCのスペックや購入日を即座に参照できること。
- ナレッジベース(FAQ): ユーザーに自己解決を促すFAQ記事を簡単に作成・公開できること。
運用フロー例
1. 問い合わせ受付
メール、Slack、Webフォームからの依頼を全てチケット化します。
- Slack連携: チャンネルでのメンションを自動でチケット起票し、Slackスレッドとチケットのコメントを同期させます。
- メール取り込み:
[email protected]へのメールを自動チケット化。
2. 一次切り分けとアサイン
情シスの当番担当者(ディスパッチャー)がチケットを確認し、「ネットワーク」「端末」「SaaS」などのカテゴリに分類し、適切な担当者に割り当てます。
3. 対応と承認
担当者は対応を実施します。権限付与が必要な場合、チケット上で上長に「承認依頼」を飛ばします。承認ログが残るため、後日の監査対応もスムーズです。
4. クローズとナレッジ化
解決後、チケットをクローズします。その際、特筆すべき解決策であれば「ナレッジベースに追加」ボタンを押し、FAQ記事として公開します。
よくある失敗と対策
失敗例:入力項目を増やしすぎて誰も使わなくなる
分析のためにと張り切って、「OSバージョン」「発生頻度」「ブラウザ種別」など必須入力項目を増やしすぎると、ユーザーは面倒がって電話をしてくるようになります。 対策: 必須項目は「件名」「内容」だけにし、入力ハードルを極限まで下げましょう。
失敗例:チケット放置による信頼低下
チケット化したことに満足して、対応がおろそかになるパターンです。 対策: 「24時間以内に一次返信がないチケット」をSlackに警告通知する自動化ルールを設定しましょう。
既存システムとの連携
Active Directory / Google Workspace 連携
ユーザー認証を統合(SSO)することで、利用者のログインの手間を省きます。また、ユーザー情報を同期しておけば、チケット起票時に「部署」「役職」が自動入力され、属性に応じた対応が可能になります。
Slack / Teams 連携
チャットツールとの連携は必須です。
- 通知: チケットの更新をチャットに通知。
- 操作: チャット上のボタン操作でチケットのステータスを変更したり、担当者を追加したりできます。
OSSツール(Redmine等)との住み分け
開発部門がRedmineやJiraを使っている場合、無理に統合する必要はありません。「社内問い合わせはZammad」「開発タスクはJira」と使い分け、相互にリンクを貼る運用が現実的です。
技術要件:OSS導入の実用例(Zammad × Docker)
情シス自身でサーバーを構築・運用する場合の選択肢として、モダンなUIを持つ Zammad の構築例を紹介します。実務運用ではデータベースの永続化が必要ですので、以下のような構成を用います。
ファイル名:compose.yaml
services:
zammad-backup:
command: ["zammad-backup"]
entrypoint: /usr/local/bin/backup.sh
environment:
- BACKUP_TIME=03:00
- HOLD_DAYS=10
- POSTGRESQL_USER=zammad
- POSTGRESQL_PASSWORD=zammad_db_pass
image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.4.0-37}
depends_on:
- zammad-railsserver
- zammad-postgresql
links:
- zammad-postgresql
volumes:
- zammad-backup:/var/tmp/zammad
- zammad-data:/opt/zammad
zammad-elasticsearch:
environment:
- discovery.type=single-node
image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.4.0-37}
restart: always
volumes:
- zammad-elasticsearch-data:/usr/share/elasticsearch/data
zammad-init:
command: ["zammad-init"]
environment:
- POSTGRESQL_USER=zammad
- POSTGRESQL_PASSWORD=zammad_db_pass
image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.4.0-37}
depends_on:
- zammad-postgresql
links:
- zammad-elasticsearch
- zammad-postgresql
volumes:
- zammad-data:/opt/zammad
zammad-memcached:
command: memcached -m 256M
image: memcached:1.6.29-alpine
restart: always
zammad-nginx:
command: ["zammad-nginx"]
expose:
- "8080"
image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.4.0-37}
depends_on:
- zammad-railsserver
links:
- zammad-railsserver
ports:
- "80:8080"
volumes:
- zammad-data:/opt/zammad
zammad-postgresql:
environment:
- POSTGRESQL_USER=zammad
- POSTGRESQL_PASSWORD=zammad_db_pass
- POSTGRESQL_DB=zammad_production
image: postgres:15.8-alpine
restart: always
volumes:
- zammad-postgresql-data:/var/lib/postgresql/data
zammad-railsserver:
command: ["zammad-railsserver"]
environment:
- POSTGRESQL_USER=zammad
- POSTGRESQL_PASSWORD=zammad_db_pass
image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.4.0-37}
depends_on:
- zammad-memcached
- zammad-postgresql
links:
- zammad-elasticsearch
- zammad-memcached
- zammad-postgresql
restart: always
volumes:
- zammad-data:/opt/zammad
zammad-scheduler:
command: ["zammad-scheduler"]
environment:
- POSTGRESQL_USER=zammad
- POSTGRESQL_PASSWORD=zammad_db_pass
image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.4.0-37}
depends_on:
- zammad-memcached
- zammad-postgresql
- zammad-railsserver
links:
- zammad-elasticsearch
- zammad-memcached
- zammad-postgresql
restart: always
volumes:
- zammad-data:/opt/zammad
zammad-websocket:
command: ["zammad-websocket"]
environment:
- POSTGRESQL_USER=zammad
- POSTGRESQL_PASSWORD=zammad_db_pass
image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.4.0-37}
depends_on:
- zammad-memcached
- zammad-postgresql
- zammad-railsserver
links:
- zammad-memcached
- zammad-postgresql
- zammad-railsserver
restart: always
volumes:
- zammad-data:/opt/zammad
volumes:
zammad-backup:
driver: local
zammad-data:
driver: local
zammad-elasticsearch-data:
driver: local
zammad-postgresql-data:
driver: local
起動・運用のポイント:
docker compose up -dで起動。http://localhostでセットアップウィザードにアクセス。- 必須: 本番運用では必ずリバースプロキシ(Nginx等)でSSL化し、
.envファイルでパスワードを管理してください。
技術要件:Slack連携の自動化(概念コード)
OSSのチケットシステム(例:Zammad)などはWebhookに対応しています。これを利用して、独自の自動化スクリプトを組むことも可能です。
# 概念的な処理フロー
1. Slackでメンション受信
2. Webhookで中間サーバーへPOST
3. 中間サーバーがチケットシステムAPIを叩いてチケット作成
4. 作成されたチケットURLをSlackに返信
これにより、「チャットで気軽に依頼したいユーザー」と「チケットで管理したい情シス」の溝を埋めることができます。
FAQ(情シス向け)
Q. ひとり情シスでも導入すべきですか?
A. はい、ひとりだからこそ導入すべきです。自分が休んだ時の引き継ぎや、作業量の可視化(経営層へのアピール)にチケット履歴が最強の武器になります。
Q. スマホ対応は必要ですか?
A. 必須です。サーバールームでの作業中や、拠点移動中にスマホからチケットを確認・更新できることで、対応スピードが格段に上がります。
まとめ:守りのITから攻めのITへ
チケット管理システムで定型業務を効率化できれば、情シスはより付加価値の高い「攻めのIT」活動に時間を割けるようになります。まずは足元の問い合わせ管理から自動化を進めていきましょう。
次のステップとして、実際の企業の導入事例を見て、自社への適用イメージを膨らませてください。