マガジン

「面白かった」の裏で、画面では何が起きているのか:感想と行動記録を照らし合わせる実験の設計

遊びをつくる

執筆にClaudeを使用しています。

机上の二つの端末の間に、小さなゲームの駒と記録カードが並ぶイラスト。
記事のテーマをもとに制作したAI生成イメージ。実際のゲーム画面ではありません。

遊び終えた友達が「面白かった」と言ってくれた場面を考えてみます。うれしい一言ですが、この言葉だけでは、最初の30秒のどこが良かったのかも、そもそも30秒の間ずっと遊んでいたのかも分かりません。画面を眺めて世界観を気に入っただけかもしれませんし、操作に何度か失敗しても取り戻せて満足したのかもしれません。 この記事で確かめるのは、言葉の感想と、その人の行動の記録が、どれだけ同じ話をしているかです。方法は、起動から30秒の入力を時刻つきで記録し、感想は記録を見せる前に聞き、後から並べて照合することです。この記事には結果は書いてありません。手順どおりに行えば、自作ゲームについての答えが読者自身の手元に出ます。

この記事の目次
  1. 「面白かった」は何についての言葉か
  2. 準備するもの
  3. 手順:30秒を記録して、感想はログより先に聞く
  4. 結果の読み方:言葉と行動が食い違うとき
  5. 起こりやすい誤り
  6. 次の行動

「面白かった」は何についての言葉か

感想は、行動の要約ではなく、行動の記憶です。人は直前の数秒や、いちばん印象的だった場面を強く覚えています。30秒の中盤が退屈でも、終わり際に良いことが起きれば、言葉は「面白かった」になりえます。逆に、熱中して入力し続けていても、感想が控えめになることがあります。

そこで、この実験では次のように問いを分けます。

  • 言葉が示す内容:「分かりやすい」「夢中になった」「難しい」など、その人が何を面白さの理由にしているか。
  • 行動が示す内容:いつ最初の触りが起きたか、入力は続いたか、手が止まった区間はどこか、画面から離れたか。
  • 照合で見たいこと:言葉が挙げた理由を、行動が裏づけているかどうか。

裏づけがない場合に、感想が間違っていると決めつけるわけではありません。「見ているだけで楽しい作品」という読みも成り立つからです。照合の目的は、設計の手がかりを増やすことです。

準備するもの

次のものを用意します。

  • 遊べる状態の自作ゲーム(ブラウザで動くもの)。
  • ログ用のスクリプト(次の節に載せます)。
  • 遊んでもらう人。3〜5人が目安です。統計的な結論を出す人数ではなく、傾向の仮説を立てるための人数です。
  • 感想の記入用紙。紙でも、別のメモアプリでも構いません。
  • 観察する人。遊ぶ人の後ろから、口を出さずに様子を見る役です。難しければ画面録画で代用できます。

遊んでもらう人には、事前に「操作のタイミングを記録します。個人を特定する情報は取りません」と伝え、同意をもらってください。記録するのは入力の種類と時刻だけで、入力した文字の中身は取りません。

端末は、そろえるか、違いを控えておきます。キーボードとタッチでは、入力の頻度が自然に変わるためです。音が出るゲームなら、音量が出ているかも開始前に確認します。

手順:30秒を記録して、感想はログより先に聞く

1. 30秒の範囲と記録する項目を決める

範囲は「ページを開いた時点から30秒」とします。記録する項目は次のとおりです。

  • 最初の入力までの時間(ミリ秒)。
  • 5秒ごとに区切った6区間の入力数。
  • 画面から注意が外れた回数(ブラウザのblurイベント)。

ゲーム固有の出来事、たとえばリトライやミスは、スクリプトのlog()を呼ぶ位置を自分で足して記録します。

2. ログ用スクリプトを入れる

自分のゲームのHTMLに貼る、単独で動く最小構成です。外部ライブラリも通信も使いません。30秒後に集計し、Shift+Lを押したときだけ画面に表示します。遊んでいる最中の表示は、体験を変えてしまうためです。

html
<pre id="out" style="position:fixed;inset:0;margin:0;padding:12px;
 background:#fff;color:#000;display:none;z-index:9999"></pre>
<script>
const t0 = performance.now();
const ev = [];
let done = false, text = "";
function log(type) {
  if (!done) ev.push({ type, t: Math.round(performance.now() - t0) });
}
addEventListener("pointerdown", () => log("input"));
addEventListener("keydown", e => { if (!e.repeat) log("input"); });
addEventListener("blur", () => log("blur"));
setTimeout(() => {
  done = true;
  const inputs = ev.filter(e => e.type === "input");
  const bins = [0, 0, 0, 0, 0, 0];
  inputs.forEach(e => bins[Math.min(5, Math.floor(e.t / 5000))]++);
  const first = inputs.length ? inputs[0].t + "ms" : "なし";
  const blurs = ev.filter(e => e.type === "blur").length;
  text = "最初の入力: " + first + "\n" +
         "区間ごとの入力数(5秒ずつ): " + bins.join(", ") + "\n" +
         "blur回数: " + blurs;
  console.log(text);
}, 30000);
addEventListener("keydown", e => {
  if (e.shiftKey && e.key === "L") {
    out.textContent = text || "30秒経過前です";
    out.style.display = out.style.display === "none" ? "block" : "none";
  }
});
</script>

ゲームがShift+Lを使っているなら、別のキーに変えてください。

3. 保存先を決める

アソバースにアップロードした作品の中のlocalStorageは、一時メモリーとして扱われる互換処理です。ログを端末に残す前提で作らず、表示された3行をその場でメモに書き写してください。画面を開いている間だけ残るものだと考えておけば確実です。

4. 遊んでもらい、感想を先に書いてもらう

進め方は次の順にします。

  1. 説明は最小限にします。「好きに遊んでみてください」程度にとどめます。
  2. 30秒たったら、ログを見せずに、まず自由記述を求めます。質問は「いま遊んだ内容を、遊んでいない人に一言で説明してください」と「いちばん長く何をしていましたか」の2つです。
  3. その後で、「面白かった」の5段階(1〜5)と、そう答えた理由を一行で書いてもらいます。

先に「面白かったですか」と聞くと、その言葉が記憶の整理を引っ張ります。自由記述を先にすれば、言葉の中身がログと比べやすくなります。

5. 回数と記録の単位

1人につき、初見と、そのすぐ後の再プレイで最大2回を目安にします。記録は1回のプレイにつき1行です。列は次のようにします。

人 / 回 / 最初の入力(ms) / 区間1〜6の入力数 / blur / 自由記述 / 5段階 / 理由

観察者は、ログに出ない様子(笑った、首をかしげた、画面を見続けていた)を、時刻の目安つきで別メモに残してください。

結果の読み方:言葉と行動が食い違うとき

結果を出すのは、ここからです。以下は、結果の読み方の仮説であり、実際にどうなるかは書いてありません。対応表として使ってください。

  • 「分かりやすかった」、まず見るログ:最初の入力までの時間、区間1の入力数、こうなっていれば:入力が早く、区間1から入力がある、こう読めます:説明なしで動かせたという裏づけになります
  • 「分かりやすかった」、まず見るログ:同上、こうなっていれば:最初の入力がかなり遅い、こう読めます:画面や説明文を読んでから動いた可能性があります。理解に時間を使った点は、別途確かめます
  • 「夢中になった」、まず見るログ:区間2〜6の入力数、こうなっていれば:後半の区間でも入力が続く、こう読めます:言葉と行動が一致しています
  • 「夢中になった」、まず見るログ:同上、こうなっていれば:前半に集中し、後半はほぼ0、こう読めます:前半の記憶が強いか、後半は見ているだけだった可能性があります。観察メモで確かめます
  • 「難しかったけど面白い」、まず見るログ:ゲーム固有のリトライ・ミスのログ、こうなっていれば:失敗の後に入力がすぐ再開している、こう読めます:失敗が離脱ではなく再挑戦につながっています
  • 「普通」「よく分からない」、まず見るログ:最初の入力、blur、こうなっていれば:最初の入力が遅く、blurもある、こう読めます:何をすればよいかが伝わっていない可能性があります

読み方の基本は三つです。

  1. 一致しているときは、理由を設計に残します。何が効いたかをメモしておくと、後で変更したときの判断に使えます。
  2. 食い違っているときは、直す前に「どちらの記録が不足しているか」を考えます。ログに出ない楽しみ(見て楽しむ、聞いて楽しむ)もあります。
  3. 3〜5人で同じ食い違いが出るなら、仮説として強まります。1人だけなら、その人の事情かもしれないので保留にします。

起こりやすい誤り

  • 礼儀の高評価:知り合いの感想は、実際より高くなりがちです。5段階の数字だけで判断せず、理由の一行とログを見ます。
  • 誘導する質問:「面白かったですよね」のような聞き方は避けます。自由記述を先に取ってください。
  • 入力数だけで熱中度を決める:連打で済むゲームと、考えるゲームでは、入力の数の意味が違います。考える時間が必要な作品では、入力の少なさが退屈を意味するとは限りません。
  • 観察者の存在:後ろから見られていると、人は普段より長く遊ぶことがあります。可能なら、観察者のいない回も混ぜます。
  • 端末と環境の差:タッチとキーボード、音の有無、画面サイズで行動は変わります。結果を比べるときは、同じ条件のものどうしにします。
  • スクリプトの影響:ログの表示が遊んでいる最中に出ると、体験を壊します。表示は必ず遊び終えた後にします。
  • 少人数を一般化する:3〜5人で見えるのは「次に直す箇所の候補」までです。「このゲームは面白い」とは言えません。

次の行動

まず、自作ゲームに上のスクリプトを貼り、自分で30秒遊んで、3行の集計が表示されるかを確かめてください。次に、遊んでもらう人を3人探し、自由記述を先に取る手順で記録します。公開後の数字と混同しないために、アソバースのプレイ回数が「作品起動の実測回数」であり、人数ではない点も覚えておくと便利です。この実験で得た観察は、プレイ回数とは別の、中身についての手がかりになります。