はじめに
こんにちは、実装に携わったゲームでイベント走るのが楽しいと感じる東京スタジオのクライアントエンジニア兼プロジェクトマネージャーの瀧島です。
今回は開発進行で役に立ったチェックリストについて話をしようと思います。
背景
仕様書・デザイン作成後に実装を進めて詳細部分で「思ったのと違う」と言われて、何度か実装手戻りが発生しており、これをなんとか軽減・解消するのを目的として対策をスタートしました。
解決案
解決策を考えていく中で、単体テストをヒントに「自然言語で書くテストリスト」を作成する案を思いつきました。
開発中は仕様チェックリストと呼び、仕様書と合わせて実装のために利用しました。
チェックリストの作成と利用
チェックリストは以下レイアウトで作成していました。
仕様内容に「〜〜を押したら、〇〇が表示される」のような基本的な内容から、
「〜〜条件下のとき、〇〇を表示したら△△という文言を表示する」という特定条件下でのケースも記載していました。
実装状況に○がついたら、確認者が確認を行ってOK/NGの動作チェックを行います。
OKだった場合そのままOKを記載して確認完了。
NGだった場合、所定の箇所にバグ管理チケットを起票します。チケットの消化を確認したら再チェックを行います。
利用時の確認タイミングは毎週決まった時間に確認者が集まって動作確認を行っていました。
これによって受けた恩恵
仕様チェックリストの導入でいくつか恩恵を受けることができました。
細かな挙動部分の相談が行いやすくなった
仕様書の記載によっては、細かなルールが見えないケースがありました。しかしチェックリストにして端的な挙動を文章化することで、細かな挙動の相談や検討が行いやすくなりました。
QA実施への準備がスムーズに行えた
QA実施するときはテスト仕様書を作成しますが、これは作成したチェックリストが有効に働きました。
これを流用することでQA実施のためのテスト仕様書の手間が大幅に短縮することができ、結果的にスムーズなQA準備が行えました。
実装者・関係者以外でも「どこまで実装できているか」が判断できる
チェックリストに「実装状況」という列があります。
これを見ることで、実装が済んでいるかどうかが把握できるので「実装しているつもりだった」という認識齟齬が減るようになりました。
リリース直前でのバグFIXが少なくできた
個人的には大きな恩恵でした。リリース直前に大量のバグが出て難易度調整などもってのほかという状態を回避して、細かい調整作業を行う余裕ができたのは良かったなと思っています。
考察
この仕様チェックリストは特に開発フェーズで高い効果を発揮しました。
新規実装、外部QAでのチェックリスト作成という点がとても相性が良いと感じました。
分岐ケースや異常系が多いと項目数が増えるデメリットは存在しますが、端的に挙動の認識合わせが行えるという点が特に評価できる内容だと思います。
Q&A
チェックリストを作成・管理するにあたって起きた懸念や問題対策を以下にQA形式で列挙しておきます。
実際に作成検討される方の一助になれば嬉しいです。
Q. 仕様書・チェックリストで仕様齟齬が起きたときは?
A. 仕様書を正としてました(チェックリストを修正しました)
Q. 仕様変更が入ったら?
A. チェックリストも併せて修正します
Q. 1機能でチェックリストの量が多くなったりする?
A. します。「仕様が複雑・異常系が多い」ときはチェック項目が100や300項目になったりします。
Q. 管理は大変なのでは?
A. チェックリスト作成・管理工数は増えます。しかし実装手戻り回避に繋がり、仕様作成者の挙動における言語化も促せて最終的には工数節約につながったと感じています。
Q. マスターデータやデザインがモック状態でいつまでも確認できない場合はどうする?
A. 実装状況OKの定義次第です。コードが記載されマスターデータやデザインモックでも実装はOKとするならば確認フェーズに持っていくことができます。
チェックリスト利用時「どこまで実装すれば実装OKとするか」「どこまで確認すればOKとするか」はプロジェクトごとに考える必要があります。
Q. 仕様チェックリストを導入することで、実装手戻りは0になった?
A. 0にはなりませんでした。仕様チェックリストを導入しても、認識齟齬による大きな実装修正は発生しました。
しかしこれは「運用想定を前提に考えた(こういう運用を想定しているけど、実装がそうなっていない)」認識齟齬が大半だったので、仕様チェックリストで対応できる外の内容でした。手戻りを0に近づけたい場合は仕様チェックリスト以外にも施策が必要だと考えます。
さいごに
仕様チェックリストはプロジェクトの状態(ex: 仕様の根本が都度変化する、運用フェーズで新規実装が無い)によっては利用できないケースがあると思います。
それでも「少し無理してでも行って良かった」という結果になりましたので、おすすめしたい手法になっています。ぜひ行ってみてください。