不具合が発生した際にQAが実施する対応・報告の方法について書いてみました。
(C) SQUARE ENIX CO., LTD. All Rights Reserved.
FF14では、似たような不具合が繰り返し発生しているように見えて。
例えば、
・新生開始時のログイン不可および頻繁なサーバー落ち
・曉月開始時のログイン不可
・PVPのパーティ構成時の不滅隊が不利の抽選
・土地抽選の不具合
・そのほかFFBE幻影戦争ガチャ
不具合が発生した際には適切な処理が完了したことを妥当性を持って報告してほしい。
「サーバ負荷時の脆弱性」、「抽選システムの不公平な作動」、この2つのインパクトの大きい不具合が度々起こっているように見えて。
FF14のユーザには様々な分野でのプロがいると思い、その人達が納得いくような報告が欲しい。
<不具合発生時の処理の流れ>(システム屋はインシデント管理、他業界では逸脱管理かと)
・ポイントは、発生したすべてのインパクトを挙げて、すべて適切に処理して、すべてのインパクトが無くなったことを確認して、責任者がGOサインする。・不具合の根本原因を明確にして、根本原因に基づき適切に処理して、再発の発生リスクは無くなった、と宣言することです。①題名の設定(読んで不具合の内容をすぐにイメージできる)
↓
②不具合の事象の記録(事実を時系列的にすべて記載・添付、数年後に見ても、担当者がいなくなってもわかるように)
↓
③即座の対応の記録(事象発生後、即座にどんな対応をしたかを記載、第一報や初期動作はその後状況に大きく影響を与える)
↓
④当該事象発生に伴うインパクト(影響)の記載(本不具合が発生したことで、ユーザや当該システムにどんな影響が発生するのか、すべて具体的に網羅的に記載)
↓
⑤レベル判定(一目で当該事象の重大度を確認できるようにする。
判断基準は、当該事象の品質への重大性と発生頻度
レベルによって対応の仕方が変わる。
教育、SOP改定のレベルか? 新システムの構築や設備導入のレベルか?
担当者レベルでの処理か?部門長レベルでの処理か?役員レベルでの処理か?)
↓
⑥原因の究明(重大な不具合は根本原因分析(RCA:Root Cause Analysis)を実施し、根本原因を特定する。再発防止へ活かす。5M,Fish Bone,5Why推奨)
↓
⑦インパクトを無くすための対応 (④で上げたインパクト毎にすべてのインパクトが無くなるよう対応。
計画、実施、結果、効果を記載。 必ずエヴィデンスを添える。)
対応の完了を確認しプレーの再開を承認する(責任者)
↓
⑧CAPAの要否(CAPA:Corrective Action,Preventive Action、是正措置及び予防措置
再発防止策及び予防策が必要かを判断する)
↓
⑨是正措置の対応(Corrective Action 再発防止策のこと
当該システムで同様の事象の発生を回避するための対策を根本原因分析結果を基に実施、
計画、実施、結果、効果を記載)
↓
⑩予防措置の対応(Preventive Action 同様の発生リスクの有無を確認し対応すること
部門内、会社内で同様の事象が発生する可能性があるかを確認して対応する。
FMEA等を使用してリスクを抽出、リスクリダクションを実施する)
↓
⑪まとめ 本件に関わる対応がすべて問題なく完了したことを宣言する。
インパクトの回避とプレーの再開、再発防止策、予防策、それらがすべて効果的に問題なく完了したことを宣言する。
対応の効果の確認が長期に渡る場合は、他のどんな管理システムで効果を追いかけるかを記載する。
例えば、今回の土地購入では???(ざっくりです)
<題名>【FF14】土地購入抽選システムにおける誤作動、及び当選者の土地購入不可
<不具合の事象の記録> いつ?だれが?何を?どのように?(3W1H)
時系列的にどのような事象が発生したかの事実をすべて記載
(数年後に見返してもどのような事象が発生したかわかるように記載)
ログや画像を添付
例えば?
2022年4月18日 〇時〇分 〇〇〇〇は
「当選番号は0番です。
〇〇〇ギルが返金されます。
受け取りますか?
返還期間〇〇〇〇
はい、いいえ」
との表示が出て、土地購入不可な状態が発生した
〇年〇月〇日〇時〇分 更に、「はい」のボタンを押して、当選不明のまま返金処理した
<即座の対応> 当該不具合が発生した際に即座に実施した対応を記載
対応によりその結果及び効果は?
例えば?
・twitterおよびロードストーンによる不具合発生の説明を実施。
説明を急ぐあまりに事実を誤認を促す情報を流した。
・続報を流した。原因と対応の説明はほとんどなかった。
(個人的には、重要度が高い不具合は、即座にニコニコで説明していただけると。)
<当該事象発生に伴うインパクト> ・ユーザへの影響は何か?
・ゲームの品質への影響はあるか?
(個人的にゲームの品質とは、セキュリティー、システムの安定稼働、エンターテイメント性
と思っていますw)
当該事象発生に伴う影響を具体的に箇条書きで上げる。
影響の可能性がある事項もあげる(後に取り下げることも可能)。
例えば?
・当選者が土地を購入できない。
・落選者が土地を購入してしまう可能性がある。
・土地を購入するシステムで不公平が発生している可能性がある。
・一部のユーザが〇日間土地を入手できずプレーが出来ない。
・一部のユーザは土地を購入していてゲーム内の格差が生じる。
・土地購入システムが停止していて空いている土地の購入が出来ない。
(当該インパクトから派生して発生する可能性も記載)
・期限通りにユーザへサービスを提供できていない。
・システムが問題なく稼働するチェック機能が働かない。
・不具合の解消が業務の大半を占め、新規なテーマへ力を注げず、そしてまた不具合が発生する、
この負の連鎖が蔓延し、充実したサービス提供に支障をきたしている。
・FF14のゲームシステムへのユーザの信頼性が無くなる。
・(よしだが謝ってばかりいる)
<レベル判定> 本件の不具合事象としてのレベルは?
判断基準
・ ゲームの品質への影響を有している事象か?
(個人的にゲームの品質とは、セキュリティー、システムの安定稼働、エンターテイメント性、
と思っていますw 繰り返しですが)
・ 過去からの発生頻度を確認し、継続的に発生している事象か?
レベル3:ゲームの品質への影響がある場合。
セキュリティー:例えば、ユーザーの個人情報の漏洩が発生した、
システムの安定稼働:例えば、システム負荷で強制ログアウトされログインできない
エンターテイメント性:例えばストーリーが意味不でどのユーザも興味を持たない
システム停止や回収も視野に入れる。
レベル2:ゲームの品質への影響の可能性がある場合。
セキュリティー:例えば、ユーザーの個人情報漏洩の可能性がある脆弱性が発見された
システムの安定稼働:例えば、一部のユーザで抽選システムが適切に稼働しなかった
エンターテイメント性:例えば、特定のコンテンツがユーザ利用数が低かった
適切な処理を実施し現状を復帰させる。
また、レベル2の事象であるが、継続的に発生している事象は、レベル3に上げる。
レベル1:ゲームの品質への影響が低い場合。
影響は限定的で、品質への影響の可能性は極めて低い。
例えば、NPCの文言が間違っていた。
発生した事象に対応し、記録として残す。
情報共有、教育等の対応が必要
また、レベル1の事象であるが、継続的に発生している事象は、レベル2に上げる。
<発生原因の究明> 根本原因分析(RCA:Root Cause Analysis)を実施して特定する
手法はいろいろあり、好みにもよりますが、シンプルに、
5M(Man, Machine, Measure,Maintenance, Mother Nature(Environmental)),
Fish Bone、
5why推奨。
5MとFish Boneにより可能性がある発生原因のすべてを抽出
それらを5Whyにより根本原因を特定
ちなみに、根本原因とは、それを改善することで不具合がまったく発生しなくなる原因を言う。
例えば、製品に異物が混入する事象が発生した場合に、
検査機で異物が混入した製品を完全に排除できていない、は直接原因
異物が混入している原材料を使用して製品を製造している、というのが根本原因
検査機の精度を良くして異物を排除するには限界があったが、
異物が混入していない原材料を入手して製品を製造するという対応で、
製品に異物が混入する事象が無くなった。
(まあ、完全に異物のない原材料を入手するのは難しいのですが、
合成品を使用するとか、根本原因となりうることがあります)
<インパクトを無くすための対応> 当該事象で発生したすべてのインパクトを無くすための対応について記載する。
計画、実施、結果、効果について記載する。
必ずエヴィデンスの添付
(計画に対するスケジュール管理が重要、いつまでに誰が責任をもって実施するか?)
(複数の対応が必要な場合に全ての対応を記載)
(実施後に更なる対応が必要な場合はその対応と実施結果および効果を記載)
インパクトを無くす具体的な対応策については、
レベルが低いものは、教育、手順書の改定等、
高いものは、システムや設備の新規導入等
すべての対応が完了し、抽選システムのプレーの再開は問題ない。
(もしくは、段階的に、一部の〇〇〇のプレーの再開は問題ない) (承認:よしだ)
<CAPAの要否> 当該事象が重大事態を引き起こすと考えられた場合はCAPAを実施する。
<是正措置の対応、(再発防止のための対応)> 根本原因分析結果に基づき、土地購入システムもしくは本ゲームの他の抽選システムにおいて、
同様の不具合事象の発生を回避するための対応を実施、その結果および効果を記載する。
エヴィデンス添付 テスト結果(検証機、負荷テスト)
<予防措置の対応> 当該部門もしくは全社において、同様の事象が発生するリスクがある個所を調査し、潜在的なリスクがあれば対応する。
FMEA(Failure Mode and Efect Analisys)がお勧めで、リスクリダクションの対応を。
報告書等があれば添付
(問題がある場合は、再クオリフィケーション、バリデーション、回収等の実施を指示)
例えば?システムの導入時に多いのは?
抽選のプログラムあるいは前提条件としての場合分けが複雑で、
且つブラックボックス化されており、一部の担当者しか内容を理解できず、
第3者がその妥当性を客観的にチェックできるようになっていない。
本業務は、専門性が高く、一部の担当者に任せきりとなり、
管理者や周りの人はダブルチェックができないという言い訳が蔓延っていた。
事業規模が大きくなり、ジョブもエリアも増えて、よしだも忙しくなり、チェック機能に漏れ。
チェックの教育も間に合わない チェックのレベルも上がらない。
<まとめ> 〇年〇月〇日〇時〇分に〇〇の不具合が発生した。
即座に〇〇の対応を図った。
当該事象はゲームの品質への影響を評価しレベル〇と判断した。
抽出されたすべてのインパクトへの対応が完了し、問題が発生しない事を確認した。
責任者(よしだ)がユーザのゲームの再開を承認し、ゲームが再開された。
当該事象はユーザへのインパクトが高く、同様の事象の発生を回避するためCAPAを実施した。
根本原因分析を実施し、根本原因は〇〇〇であることを確認した。
根本原因分析結果に基づき是正措置が実施され、本ゲームのすべての抽選システムを確認・対応して、
同様の不具合の発生の可能性が 無いことを確認した。
予防措置を実施し、スクエニのすべての製品について同様の事象が発生する潜在的なリスクを
すべて抽出・対応を図り、同様の事象の発生を回避した。
以上より当該事象発生に伴うすべての対応を実施し、問題なく完了したことを確認した。
以上です。
「あなたはシステム知らないでしょ」と言われて、その通りなのですw
ただ、ある面細かい個所にのめり込まないので、意外にシステム屋の気付かないとこにも気付いて、
何が重要か整理もできて、役に立つところもありますw
また、個人的に、ユーザーはゲームがつまらなくなるような不具合が発生した場合は声をあげたほうがいい気がしています。
「後は見守ったほうがいい」という方もいますが、それは会社内の無関係な部署の関わりたくない人の意見に聞こえて。
重大な不具合が発生したとき、会社は内部からの意見をあげづらく、当局、株主、卸、ユーザといったステークホルダーの意見には敏感で、中の人も対応しやすくなるからです。
働いていて似たような経験をしている人は多いはずw
そのほうがFF14が長く続く気がします。