### 1. コールセンターシステムCRM初期開発
### 2007年6月~2008年11月
### [概要]
家電修理のコールセンターシステムをフルスクラッチで開発(フロントのCRM部分)。
### [工程]
フェーズ1:基本設計~総合テスト
フェーズ2:機能追加
### [開発規模]
約100Kstep(全体:150Kstep)
15名(全体:30名)
### [規模]
コールセンタ拠点数:2拠点
オペレータ数:約500名
### [役割]
PL
### [工夫した点]
* コールセンター知識、CTI知識の補完
コールセンターシステムやCTIの知識が乏しかった。現場のSVの方に現状業務や問題点をヒアリングしたり、CTI開発元のベンダと定例会をしたりして理解した。
* 運用の統一
東西2つの拠点が存在し、違う運用をしていた。ヒアリングの結果、西の拠点の運用が統率が取れまとまっていたため、西の拠点の運用方法をベースに極力運用を統一して頂いた。
### [反省点]
* 担当ではなかったためCTIの管理ツールをどのように運用にあてはめるかに関われなかった。(担当分しか見れなかった)
### [その他]
* 開発言語の選択
JAVAとC#との選択肢があった。本プロジェクトの開発では、社内および協力会社の開発者に Visual Studioや.NET経験者が多かったこともありC#.NETを採用した。
* フェーズ2機能追加
フェーズ1で不足していた点や改善要望をよくヒアリングした。リリース後に現場のSVやオペレータから感謝され非常に嬉しかった。担当者にも顧客から便利になり感謝されたことを伝えて喜びを共有できた。
*習得できた知識
下記を 自分で構築はしていないが、概要や使い方は理解できた。
・oracle
・CTI(サーバ、通録)
・VMware
・Active Directory
・WSFC
-----
### 2. コールセンターシステム バックエンド部分初期開発
### 2008年12月~2011年9月
### [概要]
家電修理のコールセンターシステムのバックエンド部分をフルスクラッチで開発。バックエンド部分のサービスセンタ(修理を実施し売上請求など)向けの開発で、担当はバッチ処理。
### [担当工程]
フェーズ1:基本設計~総合テスト
### [開発規模]
約80Kstep(全体:400Kstep)
8名(全体:35名)
### [規模]
拠点数:約100
サービスセンタ作業者:約1,500名
### [役割]
PL
### [工夫した点]
* 他システム連携
連携システムの中には汎用機もあったため、連携方式やコード体系、連携レイアウトは気を遣い連携先とよく協議した。連携先の処理も確認し項目に不足がないようにした。
*バッチリランの考慮
・バッチ処理が担当であったたため、DBにコミットするタイミングやリラン方法を考慮しながら設計を進め、後戻りしないようにした。
・各処理でのエラー発生時、業務影響や特性を理解した。そこで処理を止めるべきか、そのデータのみ無視(またはエラーファイルによけておく)して後続を実行するべきか検討し、どう振舞うかを顧客と調整した。
* 画面処理との競合・排他処理の注意
オンラインバッチ処理があり、画面処理や他のバッチ処理と同時に動作する。デッドロック対策としてテーブル間やレコード間での更新順を決めたり、同一レコード更新の排他制御に気を付けて設計した。
* 重要・複雑な処理の考慮
・売上・請求や支払い処理(お金にかかわる処理)が最重要と考え、重点的に設計段階から注意してみるようにした。
・テストではクロスチェックを実施し、勘違いや凡ミスが出ないようにした。
・結果として、売上・支払いの連携処理で大きな問題は発生しなかった。
### [PR]
* 連携するシステムが6システムと多く、顧客や連携先システムと調整力が必要な案件だった。
### [反省点]
* 連動テストでの反省
連携テストで、1つの連携先との摘出不具合が少なかった。顧客・連携先システムに追加テストを依頼した。しかし、顧客と連携先システムの判断で実施しなかった。本番稼働してから問題点が多数発生した。ただ依頼するだけでなく、どのような観点での追加テストが必要かなど提示して依頼するべきであった。
---
### 3. コールセンターシステム CTIリプレース
### 2013年3月~2014年4月
### [概要]
上記システムCRMのCTI部分を CTStage(沖電気製)から iCTNET(日立製)への変更および老朽化に伴うシステムリプレース。(oracleのバージョンアップなど)
### [担当工程]
要件定義~総合テスト
### [開発規模]
約15Kstep
5名(全体:20名)
### [規模]
コールセンタ拠点数:2拠点=>6拠点
### [役割]
PL
### [工夫した点]
* CTI相違によるリスク緩和
CTStageと iCTNETで同じ機能を実装するのに方式やイベントの考え方に違いがあった。リスクを減らすため開発元に設計段階は入ってもらい、後で大きな変更が起こらないようにした。
### [PR]
* 下流工程での問題点に緊急で対応できた。
CTIの要件で伝えていたことが、総合テスト工程でできないと分かった。
正確には、できるが運用として現実的でない方法であった。
要件:
・1人のオペレータやSVが複数のグループに所属する。
・所属するグループのパターンは多数ある。
問題点:
オペレータごとに複数グループをひもづけできるイメージでいたが、そうではなかった。
所属するグループのパターンを全て定義し、パターンをオペレータにひもづけるような方法だった。
(パターンの組み合わせを定義するには多くて管理できない)
解決策:
・オペレータと所属するグループを紐づけする運用ツールを作成した
・顧客に、運用ツールで紐づけする手順を追加していただいた
理由:
・製品側で仕様追加するのは困難。
・追加してもらえたとしても、期間とコストが見合わない。
上記1~3での各工程での役割
### [各工程での役割]
要件定義:基本的にはシステム老朽化に伴うリプレースであったが、CTStageからiCTNETに変更することでのメリット、デメリットを提示。顧客の以前からの要望で、CTStageから変更することで実装可能になる機能などを提案。
基本設計:基本設計書の記述、レビュー。
詳細設計~組合せテスト:
* スケジュール作成・進捗管理。
* アウトプット(設計書・ソースコード・チェックリスト)の確認、レビュー。
* 単体テスト・組合せテストでは、テスト方針作成、バグ票の管理、品質評価。
総合テスト:テスト方針作成、チェックリスト作成、レビュー、バグ票の管理、品質評価、連携テストの調整。
---
### 4.コールセンターシステム 保守・運用
### 2014年4月~2019年12月
### [概要]
上記システムの維持保守し機能追加。
### [規模]
5名
### [役割]
PL、PM
* 顧客要望の抽出および、どのような機能を追加するかの調整、設計。
* スケジュール作成・進捗管理。
* 設計書、ソースコード、チェックリストのレビュー。
* 総合テスト調整、チェックリスト作成。(テストは顧客が実施)
### [工夫した点]
* 保守以外でも別案件(別チームでプロジェクトを立ち上げ進める)として機能追加の要望が何度かあり、要件ヒアリング、見積、基本設計実施、各工程のアウトプットのレビューに参加した。上流工程では顧客打合せには必ず出席し、各工程でのアウトプットをよくチェックした。この案件のプロジェクトチームに丸投げしなかったことで、品質を確保することおよび顧客に安心感を与えたことができたと考えている。
### [PR]
* リリース後も頻繁に(1回/月のペース)で機能を追加を実施。
* 社員以外にも派遣、オフショア(中国)の管理。
### [反省点]
* PMを引き継いだ直後に、ランサムウェアの被害を受けシステム復旧に1週間くらいかかった。
以前からマメにパッチ更新していなかったため。引き継いだ時に良くないと思ったが、面倒だと思い放置してしまった。気になったことは早目に行動し、やるべきことはやらないといけない。その後は毎月パッチを充てるようにした。
### [その他]
* プロジェクトに新人が配属された際に新人教育も兼ね、新規機能追加時はテストを自動化し Nunit を導入した。