「面白かった」の裏で、画面では何が起きているのか:感想と行動記録を照らし合わせる実験の設計
遊びをつくる執筆にClaudeを使用しています。

遊び終えた友達が「面白かった」と言ってくれた場面を考えてみます。うれしい一言ですが、この言葉だけでは、最初の30秒のどこが良かったのかも、そもそも30秒の間ずっと遊んでいたのかも分かりません。画面を眺めて世界観を気に入っただけかもしれませんし、操作に何度か失敗しても取り戻せて満足したのかもしれません。 この記事で確かめるのは、言葉の感想と、その人の行動の記録が、どれだけ同じ話をしているかです。方法は、起動から30秒の入力を時刻つきで記録し、感想は記録を見せる前に聞き、後から並べて照合することです。この記事には結果は書いてありません。手順どおりに行えば、自作ゲームについての答えが読者自身の手元に出ます。
「面白かった」は何についての言葉か
感想は、行動の要約ではなく、行動の記憶です。人は直前の数秒や、いちばん印象的だった場面を強く覚えています。30秒の中盤が退屈でも、終わり際に良いことが起きれば、言葉は「面白かった」になりえます。逆に、熱中して入力し続けていても、感想が控えめになることがあります。
そこで、この実験では次のように問いを分けます。
- 言葉が示す内容:「分かりやすい」「夢中になった」「難しい」など、その人が何を面白さの理由にしているか。
- 行動が示す内容:いつ最初の触りが起きたか、入力は続いたか、手が止まった区間はどこか、画面から離れたか。
- 照合で見たいこと:言葉が挙げた理由を、行動が裏づけているかどうか。
裏づけがない場合に、感想が間違っていると決めつけるわけではありません。「見ているだけで楽しい作品」という読みも成り立つからです。照合の目的は、設計の手がかりを増やすことです。
準備するもの
次のものを用意します。
- 遊べる状態の自作ゲーム(ブラウザで動くもの)。
- ログ用のスクリプト(次の節に載せます)。
- 遊んでもらう人。3〜5人が目安です。統計的な結論を出す人数ではなく、傾向の仮説を立てるための人数です。
- 感想の記入用紙。紙でも、別のメモアプリでも構いません。
- 観察する人。遊ぶ人の後ろから、口を出さずに様子を見る役です。難しければ画面録画で代用できます。
遊んでもらう人には、事前に「操作のタイミングを記録します。個人を特定する情報は取りません」と伝え、同意をもらってください。記録するのは入力の種類と時刻だけで、入力した文字の中身は取りません。
端末は、そろえるか、違いを控えておきます。キーボードとタッチでは、入力の頻度が自然に変わるためです。音が出るゲームなら、音量が出ているかも開始前に確認します。
手順:30秒を記録して、感想はログより先に聞く
1. 30秒の範囲と記録する項目を決める
範囲は「ページを開いた時点から30秒」とします。記録する項目は次のとおりです。
- 最初の入力までの時間(ミリ秒)。
- 5秒ごとに区切った6区間の入力数。
- 画面から注意が外れた回数(ブラウザのblurイベント)。
ゲーム固有の出来事、たとえばリトライやミスは、スクリプトのlog()を呼ぶ位置を自分で足して記録します。
2. ログ用スクリプトを入れる
自分のゲームのHTMLに貼る、単独で動く最小構成です。外部ライブラリも通信も使いません。30秒後に集計し、Shift+Lを押したときだけ画面に表示します。遊んでいる最中の表示は、体験を変えてしまうためです。
<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. 遊んでもらい、感想を先に書いてもらう
進め方は次の順にします。
- 説明は最小限にします。「好きに遊んでみてください」程度にとどめます。
- 30秒たったら、ログを見せずに、まず自由記述を求めます。質問は「いま遊んだ内容を、遊んでいない人に一言で説明してください」と「いちばん長く何をしていましたか」の2つです。
- その後で、「面白かった」の5段階(1〜5)と、そう答えた理由を一行で書いてもらいます。
先に「面白かったですか」と聞くと、その言葉が記憶の整理を引っ張ります。自由記述を先にすれば、言葉の中身がログと比べやすくなります。
5. 回数と記録の単位
1人につき、初見と、そのすぐ後の再プレイで最大2回を目安にします。記録は1回のプレイにつき1行です。列は次のようにします。
人 / 回 / 最初の入力(ms) / 区間1〜6の入力数 / blur / 自由記述 / 5段階 / 理由
観察者は、ログに出ない様子(笑った、首をかしげた、画面を見続けていた)を、時刻の目安つきで別メモに残してください。
結果の読み方:言葉と行動が食い違うとき
結果を出すのは、ここからです。以下は、結果の読み方の仮説であり、実際にどうなるかは書いてありません。対応表として使ってください。
- 「分かりやすかった」、まず見るログ:最初の入力までの時間、区間1の入力数、こうなっていれば:入力が早く、区間1から入力がある、こう読めます:説明なしで動かせたという裏づけになります
- 「分かりやすかった」、まず見るログ:同上、こうなっていれば:最初の入力がかなり遅い、こう読めます:画面や説明文を読んでから動いた可能性があります。理解に時間を使った点は、別途確かめます
- 「夢中になった」、まず見るログ:区間2〜6の入力数、こうなっていれば:後半の区間でも入力が続く、こう読めます:言葉と行動が一致しています
- 「夢中になった」、まず見るログ:同上、こうなっていれば:前半に集中し、後半はほぼ0、こう読めます:前半の記憶が強いか、後半は見ているだけだった可能性があります。観察メモで確かめます
- 「難しかったけど面白い」、まず見るログ:ゲーム固有のリトライ・ミスのログ、こうなっていれば:失敗の後に入力がすぐ再開している、こう読めます:失敗が離脱ではなく再挑戦につながっています
- 「普通」「よく分からない」、まず見るログ:最初の入力、blur、こうなっていれば:最初の入力が遅く、blurもある、こう読めます:何をすればよいかが伝わっていない可能性があります
読み方の基本は三つです。
- 一致しているときは、理由を設計に残します。何が効いたかをメモしておくと、後で変更したときの判断に使えます。
- 食い違っているときは、直す前に「どちらの記録が不足しているか」を考えます。ログに出ない楽しみ(見て楽しむ、聞いて楽しむ)もあります。
- 3〜5人で同じ食い違いが出るなら、仮説として強まります。1人だけなら、その人の事情かもしれないので保留にします。
起こりやすい誤り
- 礼儀の高評価:知り合いの感想は、実際より高くなりがちです。5段階の数字だけで判断せず、理由の一行とログを見ます。
- 誘導する質問:「面白かったですよね」のような聞き方は避けます。自由記述を先に取ってください。
- 入力数だけで熱中度を決める:連打で済むゲームと、考えるゲームでは、入力の数の意味が違います。考える時間が必要な作品では、入力の少なさが退屈を意味するとは限りません。
- 観察者の存在:後ろから見られていると、人は普段より長く遊ぶことがあります。可能なら、観察者のいない回も混ぜます。
- 端末と環境の差:タッチとキーボード、音の有無、画面サイズで行動は変わります。結果を比べるときは、同じ条件のものどうしにします。
- スクリプトの影響:ログの表示が遊んでいる最中に出ると、体験を壊します。表示は必ず遊び終えた後にします。
- 少人数を一般化する:3〜5人で見えるのは「次に直す箇所の候補」までです。「このゲームは面白い」とは言えません。
次の行動
まず、自作ゲームに上のスクリプトを貼り、自分で30秒遊んで、3行の集計が表示されるかを確かめてください。次に、遊んでもらう人を3人探し、自由記述を先に取る手順で記録します。公開後の数字と混同しないために、アソバースのプレイ回数が「作品起動の実測回数」であり、人数ではない点も覚えておくと便利です。この実験で得た観察は、プレイ回数とは別の、中身についての手がかりになります。

