ゲームテスターの目線から見た、情報の足りていない仕様書

## この記事の内容について
ゲームテスターを長くやっていると、様々な仕様書を目にする機会があります。
仕様について事細かく記載されているものもあれば、
ざっくりとした情報しか記載されていないものも目にしてきました。
（業務によっては自ら仕様書を作成する機会もありました。）

テスターにとって、仕様書はソフトウェアの正常な動作が書かれたものであり、
仕様書に書かれていない動作は不具合として報告するか、
本当にこの動きで大丈夫か開発者に確認をとらなければならないものになります。

しかし、実際にテストをする際に共有される仕様書には、
大事な情報が抜けていたり、
細々とした動作については書かれていなかったりといったケースが多くあります。

この記事は、これまでの経験を基に、
仕様書がどのように記載されていればテスター向けの仕様書といえるのか、
そんなことを考えながら、書き散らしていくものとなっております。

よろしくお願いいたします。

## 例とする仕様書を作成する
前提として、以下のようなゲームのタイトル画面があり、
この画面の仕様書を資料として展開されているとします。
![usagi_life.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2321819/f4851a51-7e39-c80f-63f5-0423d8813749.gif "なんて面白そうなゲームなんだ・・・")

それでは、このタイトル画面の仕様書としての情報を考えてみます。
画面を構成する要素から、仕様を以下のように書きだしてみました。

<dl>
<b><dt>・背景</dt></b><dd>
背景画像が表示されます。<br>
ウサギがアニメーションします。</dd>

<b><dt>・タイトルロゴ</dt></b><dd>
タイトルロゴが表示されます。<br>
ロゴもアニメーションします。</dd>

<b><dt>・サブタイトル</dt></b><dd>
サブタイトルが表示されます。</dd>

<b><dt>・初めから育てるボタン</dt></b><dd>
新しくゲームを始めます。<br>
ボタンを押下することで、チュートリアル画面へ移動します。</dd>

<b><dt>・続きから育てるボタン</dt></b><dd>
続きからゲームを始めます。<br>
ボタンを押下することで、前回の続きからゲームを開始します。</dd>
</dl>

仕様書の中に、ゲーム画面の画像は添付されているものとし、
これをそのままゲームテスターに共有し、テストを依頼してみます。


## 上記の仕様書をテスターの目線から見てみる
共有されている情報を基に、テスト設計やテスト実行を行います。
この時点で、おそらく以下のような疑問がテスターに浮かぶはずです。

<dl>
<b><dt>・背景</dt></b><dd>
ウサギがアニメーションしていることは分かった。<br>
でもウサギがどのようなアニメーションをしているのかわからない。<br>
正しい動きが分からない以上、資料を請求するのが確実だが、<br>
資料がない場合はどのような動きをすることが正しいのか、<br>
開発者に質問しなければならない。</dd>

<b><dt>・タイトルロゴ</dt></b><dd>
表示されていることは分かったが、<br>
タイトルロゴの正式なデザインが不明。<br>
アニメーションの内容も不明。<br>
背景と同じく資料が欲しい。</dd>

<b><dt>・サブタイトル</dt></b><dd>
表示されていることは分かるが、サブタイトルの正式なデザインが不明。<br>
タイトルロゴと違ってこちらはアニメーションしていなくていいのか？<br>
資料が欲しい。</dd>

<b><dt>・初めから育てるボタン</dt></b><dd>
ゲームをはじめからスタートするというのは分かるし、<br>
押下した時にチュートリアル画面へ移動するというのも分かる。<br>
ボタンを押下した時、効果音などは再生されるのか？<br>
そもそもボタンを押下したという判定は、いつ発生するのか？<br>
（押された時か？離された時か？両方が成立した時か？）<br>
ボタンを押した状態でカーソルをボタンから離すとどうなる想定？<br>
仕様書ではボタンがアニメーションしてるみたいだが、<br>
正確にはどのような動きをするのかわからない。<br>
アニメーションに関する資料が欲しい。<br>
そもそもボタンがアニメーションする条件は？</dd>

<b><dt>・続きから育てるボタン</dt></b><dd>
ゲームを続きから遊べるのは分かるが、<br>
初めから育てるボタンと同様の疑問が発生する。<br>
画面の移動先はどこ・・・？</dd>
</dl>

疑問が発生すると、テスターも開発者もお互い時間が限られている中、
質疑対応を行わなければなりません。
一回の質疑で解決しなければ、煩わしいやり取りが複数回発生し、
さらなる時間のロスに繋がる場合もありますし、
最悪テスターと開発で認識のズレがある状態でテストが進行してしまう可能性もあります。

テスターとしても質問文を考えたりする時間はない方が良いし、
開発者としても質問対応で時間を取られたくはないはずです。

「最初から書いておいてくれればよかったのに・・・」
なんてことは良くあります。

できるだけそうならないように、どれくらい仕様書に書きこんでおけばいいのか、
次項で考えてみたいと思います。

<b>（例として作成しているような、簡素すぎる内容の仕様書はなかなか見ませんが、稀にあります）</b>

## では、仕様書にはどれくらい情報があればいいのか
前項で「発生するであろうテスターの疑問」を想定してみました。
それでは次は、そんな質問が発生しないように仕様書内の内容を修正してみたいと思います。

<dl>
<b><dt>・背景</dt></b><dd>
背景画像が表示されます。<br>
ウサギがアニメーションします。<br>
ループモーションになっており、ループ回数に制限はありません。<br>
背景のデザイン資料は以下のURLから参照してください。<br>
> https://usagi_life.com/title_animation</dd>
</dl>

背景についての仕様説明では、ウサギのアニメーション資料のURLを記載しました。
これで、
「ウサギのアニメーションって正確にはどういうものなのですか？」
といった質問はこないはずです。
また、アニメーションがループ再生となっていることも念のため書き加えました。

<dl>
<b><dt>・タイトルロゴ</dt></b><dd>
「うさぎ観察日記」というテキストのタイトルロゴが表示されます。<br>
カラーが虹色に変化するアニメーションを行います。<br>
背景と同じく、アニメーションはループしており、ループ回数に制限はありません。
タイトルロゴのデザイン資料は以下のURLから参照してください。<br>
> https://usagi_life.com/title_logo_animation</dd>
</dl>
タイトルロゴの仕様説明では、
どういう内容のタイトルロゴなのかと、アニメーションについて書き加えました。
（デザイン資料を見れば内容は分かるとは思うのですが、資料相違を考えて念のため）

<dl>
<b><dt>・サブタイトル</dt></b><dd>
タイトルロゴの下部に、<br>
「~ Blenderによって生み出されたウサギの一生 ~」<br>
というテキストのサブタイトルが表示されます。<br>
ロゴと異なり、アニメーションはしません。<br>
サブタイトルのデザインについては、<br>
タイトルロゴの資料に記載されてありますので、<br>
そちらをご確認ください。</dd>
</dl>
サブタイトルの仕様説明では、
テキストの内容や、アニメーションはしないことを明記しました。
「もしかして本当はアニメーションしているかもしれない」と思われるかもしれませんので。
とにかく「記載無くても分かるでしょ」を無くしていきます。
<br>

:::note info
<b>ここまでは表示のみの要素についての仕様説明でした。
次は表示と機能を持った要素についての説明になります。
ここからが、説明不足のためにテスターが要件を理解できなかったり、
質疑対応が行われることが多い部分となっていきます。</b>
:::
<br>

<dl>
<b><dt>・初めから育てるボタン</dt></b><dd>
新しくゲームを始めます。<br>
ボタンを押下することで、チュートリアル画面へ移動します。<br><br>

・ボタンのアニメーションについて<br>
　ボタンにマウスオーバーした時、<br>
　またはキー操作によってフォーカスされた状態になった時に、<br>
　ボタン内のテキストが波状に上下して動きます。<br>
　さらに、ボタン左に「にんじん」の形のアイコンが表示されます。<br><br>
　別のボタンにフォーカスが移った場合、アニメーションしない状態に遷移し、<br>
　にんじんアイコンも非表示の状態となります。<br><br>

・ボタン押下の判定について<br>
　ボタンにフォーカス中にEnterキーを入力した場合、<br>
　またはボタン上にカーソルがある状態で、<br>
　マウスボタンを押す、離すの動作が成立した場合に限り、<br>
　押下した判定となります。<br><br>

・フォーカスの移動について
　「初めから育てるボタン」がフォーカスされている状態で、<br>
　キーボードの「↑」「↓」のどちらかのキーを押下した場合、<br>
　または、マウスカーソルを「続きから育てるボタン」の上に移動させた場合、<br>
　フォーカスが解除されます。<br><br>

・効果音再生について<br>
　どのような場合でも、ボタンに対する操作で効果音が再生されることはありません。<br><br>

・アニメーション、アイコン画像資料について<br>
　以下のURLから参照してください。<br>
> https://usagi_life.com/title_newgame_button<br>

</dd>
</dl>
長い・・・ッ！
しかし、たった一つのボタンに対しての情報だとしても、
これくらい情報がないと次から次へと疑問が湧いてきてしまいます。
人によってはまだまだ疑問が出てきてしまうかもしれません。
とにかく、各要素について書き加えました。

<dl>
<b><dt>・続きから育てるボタン</dt></b><dd>
続きからゲームを始めます。<br>
ボタンを押下することで、前回の続きからゲームを開始します。<br>
・画面に移動先について<br>
　ゲームを続きから始めた場合、前回のプレイ状況を読み込み、ホーム画面に遷移します。<br><br>

・その他各機能、デザインについて<br>
　「初めから育てるボタン」と同様のため、そちらを参照してください。
</dd>
</dl>

画面遷移先についてのみ書き加え、その他は長いので割愛しました・・・。
もし、各画面のボタンで共通の仕様があるのなら、
共通仕様として別の資料に記載するとか、そういった方が親切かもしれません。
<br>
<b>これくらい丁寧に書いておけば、もしかしたらテスターからの質問がないかもしれませんね！</b>
<br>

##長いよ！結局どういうことなの！？
これくらい情報がないと、疑問ばかりが湧いてきてしまうよ！
ということでした・・・。

実際、
「仕様書の情報が足りない」
「書いてあるけど分かりづらい」
ということが原因で、質疑対応が長くなったりすることはよくあります。

業務で仕様書の作成対応をしていると、
「この情報は無くてもさすがにわかるだろう、わかってくれるだろう」とか、
そうやってめんどくさくなる気持ちはすごくあります。
しかし、テスターは仕様書に書かれていないことは正常な動作として見るわけにはいかないのです。
（もちろん仕様書を基に機能を実装するプログラマーも・・・）

みんながスムーズに仕事ができる仕様書の作成を心がけたいですね。

##終わりに
<b>本当に何もまとまっていない</b>のですが、これでこの記事は終わりにしたいと思います。
もしここまで真面目に目を通してくれた方がいらっしゃいましたら、
本当にありがとうございました。
流し見してくれた方も、ありがとうございました。