同じ操作音を5種類用意すると、どれが「押した感じ」に近いか:数人で比べる実験の設計書
遊びをつくる執筆にClaudeを使用しています。

画面のボタンを押したとき、ポンと小さな音が返ってくる場面を考えてみます。音が高すぎると軽く、低すぎるとこもって聞こえ、長く尾を引くと「押した」というより「鳴らした」感じになるかもしれません。ただ、これは頭の中の予想にすぎません。同じ音でも人によって受け取り方が違うことは珍しくありません。 この記事が確かめるのは、「音の高さ」「長さ」「減衰(音がどう小さくなっていくか)」の3つを少しずつ変えた5種類の操作音のうち、どれが「押した感じ」に近いと感じられるか、という問いです。結果はここには書きません。読者が数人に聴いてもらい、自分のゲームの文脈で答えを出せるように、準備から読み方までを設計書の形でまとめます。 先に注意が一つあります。この実験で分かるのは、集めた数人の傾向です。世の中の人全般に通じる法則ではありません。それでも、自作ゲームの音を決める材料としては十分に役立ちます。
この記事の目次
問いを絞る:「押した感じ」を言葉にしておく
「押した感じ」のままでは、聴く人によって意味がばらばらになります。そこで、評価してもらう観点を一つに決めます。
- 「押した」という行為が、音で確かに伝わるか
- 「押した瞬間に鳴った」と感じられるか(反応の即時性)
- 軽すぎず重すぎず、ちょうどよい手応えか
この3つを別々に聞くと質問が増えて疲れます。そこで、評価者にはまず1問だけ、「ボタンを押した感じに近いのは、どれですか。1(遠い)から5(近い)で答えてください」と聞きます。補助として、各音に対する一言の感想(「軽い」「こもる」「ぷつっと切れる」など)を自由に書いてもらいます。数値で傾向を見て、一言でその理由を探る形です。
もう一つ、押す対象を揃えます。画面上のボタンを押す場面に限り、BGMは止めておきます。ゲーム中の連打や効果音の重なりは、この実験の次の段階で扱う別の問いです。
5つの条件を決める:一度に一つだけ変える
高さ、長さ、減衰を同時に変えると、評価が変わった原因が分からなくなります。そこで基準の音を一つ作り、残りの4つは基準から1要素だけ動かします。
- 1、名前:基準、高さ:600Hz、総時間:80ms、減衰:指数的に小さくなる、基準との違い:なし
- 2、名前:高め、高さ:1200Hz、総時間:80ms、減衰:同上、基準との違い:高さだけ
- 3、名前:低め、高さ:300Hz、総時間:80ms、減衰:同上、基準との違い:高さだけ
- 4、名前:短め、高さ:600Hz、総時間:30ms、減衰:同上、基準との違い:長さだけ
- 5、名前:平ら、高さ:600Hz、総時間:80ms、減衰:音量を保ち、最後の5msで消す、基準との違い:減衰だけ
Hz(ヘルツ)は1秒間の振動回数で、大きいほど高い音です。ms(ミリ秒)は1000分の1秒です。数値は出発点として置いたもので、この値が正解という意味ではありません。基準が自分のゲームに合わないと感じたら、基準自体を差し替えて構いません。ただし、5つのうち動かすのは1要素ずつという原則は保ってください。
この表では、1と2・3を比べると高さの影響、1と4を比べると長さの影響、1と5を比べると減衰の影響を読み取れます。なお、長さを変えると減衰の速さも連動して変わります。音量の下がり方の「形」だけを別に調べたい場合は、条件5のような平らな音を軸に、別の実験として組み直します。
準備するもの:ブラウザだけで動くテストページ
用意するのは、パソコンかスマートフォン、ヘッドホンかスピーカー、記録用の紙(または表計算)、数人の評価者です。音の再生は、ブラウザ標準のWeb Audio APIで行います。次のHTMLを保存して開くと、外部ライブラリなしで動きます。
<!doctype html>
<meta charset="utf-8">
<title>操作音テスト</title>
<button id="start">音を有効にする</button>
<div id="pads"></div>
<button id="key">対応表を表示</button>
<pre id="out"></pre>
<script>
const conds=[
{name:"基準",f:600,d:0.08,decay:true},
{name:"高め",f:1200,d:0.08,decay:true},
{name:"低め",f:300,d:0.08,decay:true},
{name:"短め",f:600,d:0.03,decay:true},
{name:"平ら",f:600,d:0.08,decay:false}
];
const order=[...conds].sort(()=>Math.random()-0.5);
let ctx;
function play(c){
const t=ctx.currentTime,o=ctx.createOscillator(),g=ctx.createGain();
o.frequency.value=c.f;o.connect(g);g.connect(ctx.destination);
g.gain.setValueAtTime(0.0001,t);
g.gain.linearRampToValueAtTime(0.2,t+0.003);
if(c.decay){g.gain.exponentialRampToValueAtTime(0.0001,t+c.d);}
else{g.gain.setValueAtTime(0.2,t+c.d-0.005);
g.gain.linearRampToValueAtTime(0.0001,t+c.d);}
o.start(t);o.stop(t+c.d+0.01);
}
document.getElementById("start").onclick=()=>{ctx=ctx||new AudioContext();ctx.resume();};
order.forEach((c,i)=>{
const b=document.createElement("button");
b.textContent=i+1;
b.onclick=()=>{if(ctx)play(c);};
document.getElementById("pads").append(b);
});
document.getElementById("key").onclick=()=>{
document.getElementById("out").textContent=
order.map((c,i)=>(i+1)+": "+c.name).join("\n");
};
</script>ページを開くたびに5つのボタンの割り当てが入れ替わります。ボタンに出るのは1〜5の数字だけで、どの数字がどの条件かは「対応表を表示」を押すまで分かりません。評価者に条件名を知らせない、いわゆる目隠し(ブラインド)の仕組みです。評価が終わるまで、この対応表は押さないでください。音の頭に3msの立ち上がりを付けているのは、いきなり鳴らすとプツッという雑音が混ざりやすいためです。
「音を有効にする」ボタンは省略できません。多くのブラウザは、利用者の操作があるまで音の再生を許可しません。評価者に最初に1回押してもらってください。
手順:数人で比べる
人数は3〜5人程度を目安にします。多いに越したことはありませんが、数人でも「全員が同じ方向を向くか、割れるか」は見えてきます。
- 評価者に、「画面のボタンを押したときに返ってくる音を選ぶ実験です。正解はありません」と伝えます。音の条件名や、何を変えているかは伝えません。
- 音量を、普段ゲームを遊ぶときの大きさに合わせてもらいます。評価の途中では変えません。
- 評価者は各ボタンを自由に何度か押し、音を確かめます。そのあと、1〜5の各ボタンをそれぞれ3回ずつ押して、「押した感じに近い度合い」を1〜5点で付けます。
- 各ボタンについて、一言の感想も書いてもらいます。
- 全員が終わったら、休憩を挟んで同じ人にもう一度、ページを開き直して行ってもらいます。開き直すと割り当てが入れ替わるため、順序の影響を減らせます。
- 全員の2周が終わったら、対応表を表示して、番号を条件名に戻します。
記録は次の1行1データの形がおすすめです。
- 評価者(A、B、Cなどの記号)
- 周回(1周目か2周目か)
- 条件名(対応表で戻したもの)
- 点数
- 一言の感想
1人あたり5条件×2周で10件になり、4人なら40件になります。表計算ソフトの集計機能で、条件ごとの平均点と、評価者ごとの点数を並べて見ます。
結果の読み方:平均だけで決めない
集計したら、次の順に見ます。
- 条件ごとの平均点を並べます。1位が明確に離れていれば候補になります。
- 評価者ごとの点数を見ます。平均が高くても、1人だけが極端に高く付けているなら、それは全体の傾向ではありません。
- 周回1と周回2を比べます。同じ人が同じ条件に付けた点数が大きく動いていれば、その条件への評価はまだ安定していません。
- 基準との差を見ます。基準と「高め」の差は高さの影響、基準と「短め」の差は長さの影響、基準と「平ら」の差は減衰の影響として読みます。
平均点の差が1点以内の場合、数人の実験では、本当の差と偶然のばらつきを区別しにくいと考えるのが安全です。その場合は結論を急がず、評価者を増やすか、差が出た要素だけに絞って条件を作り直します。
次のように読み分けると、次の一手が決めやすくなります。
- 高さの条件で評価が割れた場合は、好みの問題が大きい要素と考えられます。ゲームの雰囲気(落ち着いた作品か、軽快な作品か)で選んでも構いません。
- 短い音と基準の音で評価が割れた場合は、画面の反応の見た目(ボタンが沈む速さなど)と合わせて、もう一段の確認が必要です。
- 一言の感想で「ぷつっと切れる」が複数出た条件は、点数が高くても、音の終わり方に違和感がある可能性があります。
起こりやすい誤り
- 音量が揃っていない。 同じ音量設定でも、高い音は大きく、低い音は小さく聞こえやすい傾向があります。また、条件5のように音量を保つ音は、減衰する音より大きく感じられることがあります。評価の前に5つを聴き比べ、極端な差があれば、再生中の音量値(コード中の0.2)を条件ごとに調整してください。調整した値は記録に残します。
- 最初に聴いた音を高く評価する。 順序の影響です。周回ごとに割り当てを入れ替えるのはこのためです。
- 無線イヤホンの遅れ。 Bluetooth接続の機器は音が遅れて届くことがあります。「押した感じ」は反応の速さに強く左右されるので、有線のヘッドホンか本体のスピーカーで統一してください。
- 「好き」と「押した感じ」の混同。 心地よい音が、押した感じに近いとは限りません。質問の文言を毎回同じにし、読み上げるだけにします。
- 実験する人の誘導。 「この音、いいですよね」といった一言が結果を曲げます。評価が終わるまで、感想を言わないようにしてください。
- 音が出ない。 「音を有効にする」を押していない、端末がマナーモードになっている、といった原因が多く見られます。評価を始める前に、必ず全ボタンで音が出るか確かめてください。
次の行動
まず上のコードをそのまま保存し、身近な2〜3人に基準・高め・低めの3つだけでも聴いてもらってください。手応えのあった条件を自作ゲームの操作音に入れ、実際の画面で押して確かめます。そのゲームはアソバースにHTMLやZIPのまま投稿でき、公開前に下書き保存もできます。
参考資料
- MDN Web Docs「Web Audio API」



