ここでは、あるデータ管理システムでの、期末運用サポート機能の開発時に感じたことを紹介します。
「あるデータ管理システム」とは、もとになるデータに対して様々なデータの修正、追加、削除が頻繁に発生するシステムです。
これらのデータ修正作業は、時期を選ばずいろいろなタイミングで行っている為、半期ごとに行われる期末処理といわれる集計作業時には大量の不整合が発生し、それに伴い不整合データの調整作業が必要になります。
この調整作業は人が目で確認しての作業のため、一つ一つ手作業での調整を余儀なくされます。
また、期末処理は半期単位ということもあり、蓄積された修正作業の中には記録や記憶が曖昧なものも大量に存在します。これらの修正作業を2週間という短期間で完了する事は、非常に困難を極め、かつ高い負荷の掛かる作業でした。
上記作業(期末処理)において、ある日ユーザから次のような要望が発生しました。
「期末処理の担当者が、すばやくデータ不整合を発見する為のレポート(不整合データ一覧)、を作成する機能」がほしい。
私達はユーザの要望を受けすぐさま設計に入ったのですが・・・
費用対効果を考え、ユーザの要件を超える解決策を提案

「不整合データとしてレポート出力するという事は、決まった法則のある修正ならば自動化できるのではないか?」無論ユーザとしても「データは手作業で修正する必要がある」といった制約がない限り、システムで自動化できれば負荷は減るはずである。
しかし、当然これは当初のユーザ要件を超える解決策であり、システムに導入する機能が増えてしまう為に、開発期間、開発コストの増大に繋がってしまいます。ユーザとしても予想外の時間、コストには許容できる量があり、それを超えてしまうようでは費用対効果が薄くなってしまいます。
また、ユーザがそこまでの機能を欲しているのか、それともただ単にそこまで実現する事が可能という事に気付いていないだけなのか、これらを確認する必要もあります。
しかし、当機能を導入することによる期末処理の劇的な効率化は明白であり、この提案をできないようでは私がSEとしてこの案件に携わっている意味がないと考え、早速ユーザに当機能の効果を説明するために、各データのパターンを図式化し、データフロー等の資料作成に入りました。
ところが、実際この機能についてユーザとの打ち合わせに望んだところ、私の説明が及ばなかったせいも大いにあると思いますが、その時のユーザの反応はあまり芳しいものではありませんでした。システム化する事で、現状手作業で行っている処理を自動化し、修正作業の高速化、精度向上が図れることをイメージしてもらうのはなかなか困難な事であり、打ち合わせを行っては新たな資料を作成し、の繰り返しの日々がしばらく続く事となりました。
問題は、どこにあるのか・・・自問自答を繰り返すそして、なんとか設計〜開発も終了し、テストも無事終了したのですが、ここで一つ気がかりな事が起こりました。
なんと、当初想定していたよりも期末処理が効率化されないかもしれない・・・。こちらから提案したという事もあり、もしもたいした効果が出ないのであれば目も当てられません。徐々に迫りくる不安の波に襲われながらも着実にテストをクリアし、本番の日は近づいてきました。「思ったほど効率化できない、何か問題はあるのか?」何度も自問自答を繰り返し、設計書を何度も読み返す日がしばらく続きました。
しかし、本番に近いボリュームのデータを使用しテストを行った時には、それも杞憂に終わりました。原因は何てことはなく、今まで使用していたテストケースのデータボリュームが随分と小さかったために、明確な効果が出ていなかったのです。想定どおりのデータを処理すれば、無事予想通りの効率化を果たすことができました。
設計段階でユーザの要望を聞きとり、見えていない問題点に気付く事そんなこんなで本番を迎え、今まで手作業で何時間もかけて行っていた期末処理を、システム導入後には1時間程度で終了するという劇的な効果をあげ、プロジェクトはそつなく成功し幕を閉じる事となりました。
今思えば設計段階でユーザの望む事を真摯に聞き、ユーザが見えていない問題点まで見つけ出し、それを解決する方法をプロのSEとして提案できた事が、今回ユーザから感謝される成果に繋がったのだと思います。
今後もユーザが抱いている隠れた問題点を発見し、解決できるよう、他の社員とも協力し、努力していこうと考えております。