連載
» 2021年05月19日 10時00分 公開

ソフトウェア技術者のためのバグ百科事典(20)みずほ銀行は人ごとではない!? システム刷新のバグ山浦恒央の“くみこみ”な話(141)(3/4 ページ)

[山浦恒央 東海大学 大学院 組込み技術研究科 非常勤講師(工学博士),MONOist]

5.筆者が経験したバグのケーススタディー

 前ページの4項目で示した業務で経験したケーススタディーを以下に示します。

5.1 過去のデータを正しく整形できない

 この案件では、長年の顧客と商品のデータが大量に存在するため、レガシーのデータベースを新システムに引っ越しする必要がありました。ですが、新システムとの基本的な設計思想が違うため、データ整形が必要です。データ整形の例を以下に示します。

  • 電話番号が「09011112222」を「090」「1111」「2222」のように三分割する
  • 商品の識別番号を新システムに合致するように変更する

 筆者は、レガシーシステムのデータベースからCSVファイルを取り出し、新システムに合う形で修正しました。ある程度は問題なくできたと思ったのですが、一度全てのデータを登録し、確認した結果、顧客から「商品の表示結果がおかしい」と指摘がありました。原因は、筆者がExcelデータを間違って整形したことが原因でした(図3)。

図3 図3 商品説明画面のイメージ(クリックで拡大)

 図3は、商品説明ページのイメージ図です。筆者の問題点は、この情報を見たところで、「この商品が本当にバングラディシュ製か」「画像は合っているか」などが全く分からないことです。結果、顧客から指摘があるまでバグであることすら気付けませんでした。

 データ整形は思った以上に面倒です。例えば、「電話番号が抜けている」「同じ会員と思われるデータが重複している」「データに抜けがある」といった問題があり、顧客に確認しながら作業する必要があります。結果、修正ミスがありました。

5.2 レガシーシステムとの差分が抜けていた

 開発が終盤となり、そろそろリリースというタイミングで、顧客から、「レガシーにあるはずの機能がありません」と指摘がありました(図4)。

図4 図4 バグのイメージ(左:同時購入時割引、右:送料無料商品購入時)(クリックで拡大)

 この案件の難しいところは、筆者には顧客業務を完全に把握できていないことです。そのため、図4の左の「399円の商品を3つ購入すると、割引で1000円になる(商品代金1000円+送料500円=1500円)」、右図にある「ある商品を購入すると送料が無料になる」のような特殊事象を見落としていました。※3)この時、「きちんとしたドキュメントがあれば……」「コードをよく見直しておけば……」と強く思いました。

※3)消費税などの計算処理は抜いています。

5.3 パフォーマンスが出ない

 リリース後で、最もクリティカルだったバグが、ページ遷移が異常に遅く、レガシーよりパフォーマンスが出ないことでした。ECサイトで動作が遅い場合、消費者の購入判断を妨げる可能性があります。筆者が計測したところ、7秒くらいでした。処理性能が異常に遅いことに気付かなかった原因の一つが、筆者の確認方法でした。

 各種データ(商品、顧客データなど)は、日々更新されます。そのため、試験時はデータの上から数百件程度で確認していました。つまり、リリース直前まで全件の状態ではありません。結果として、本番を想定したデータ列でテスト実施できておらず、リリースするまで本来のパフォーマンスが分かりませんでした。

5.4 顧客のこだわり

 厳密なバグといえるか微妙ですが、文言などの修正が非常に頻繁に発生しました。記憶では、同じようなところを繰り返し修正した記憶があります。

Copyright © ITmedia, Inc. All Rights Reserved.