見出し画像

コピペするだけ!簡単「キュピキュピ音でストレス発散」

ストレスフルな日々をちょっとだけ発散する何かを考えた時にパッと頭に浮かんだのは梱包材のプチプチ!

Geminiさんと会話をすると、あながち間違いでもなさそう。

プチプチ梱包材を指で潰す作業は、指先の適度な刺激と音によるリラックス効果があり、手軽なストレス解消法として広く知られています

Geminiさん

あのプチプチ音や手触りを再現するのは無理でも、何かそれっぽいものを作ってみたいと思いました。


理想はコレ!だけどアプリでは無理!🤣

※ この記事の内容を4コマにしてくれとGeminiさんに頼んだ結果、なぜかこうなりました。記事とは1ミリしか関わらなかった🤣


読ませて頂いた記事をマガジンに追加させて頂いております。

伺った際にはマガジンへの登録をさせて頂いていきますが、それはやめてほしいなどありましたら、DM / コメントで一言頂けましたら幸いです😊


ブックマークに置いとくだけ!

コピペするだけの簡単小道具!

Geminiで簡単!ツール作成!

一発作成プロンプトも紹介!


画面のどこをタップしても、ただただパチパチと音が鳴るだけでもストレス発散にならないかな?
単純な音って意外に和まないかな?


ブックマークで開いた画面!

どこでもいいからひたすらタップ!

そのストレスを画面に叩きつける!

プチプチでも、パチパチでもなく、キュピキュピと音が鳴る!


🛠️ 使い方(スマホ版)

1. 適当なページをブックマークする

まずは、今見ているこのページなど、何でもいいので一度ブックマークに登録します。

2. 「編集」を開く

ブックマークバーにある今作ったブックマークを長押しして、「編集」を選択します。

3. 内容を書き換える

表示された設定画面で、以下の2箇所を変更して保存します。

  • 名前: (自分が分かりやすい名前)

  • URL: もともと入っているURLをすべて消して、コードを貼り付ける

ブックマークを押すだけ簡単!


📋これを貼ります!

javascript:(function(){  try {    var w = window.open('about:blank', '_blank');    if (!w) return;    var initApp = function() {      var d = w.document;      if (!d) return;      var head = d.head || d.getElementsByTagName('head')[0];      if (!head) {        head = d.createElement('head');        if (d.documentElement) {          d.documentElement.insertBefore(head, d.documentElement.firstChild);        } else {          d.appendChild(head);        }      }      var body = d.body;      if (!body) {        body = d.createElement('body');        if (d.documentElement) {          d.documentElement.appendChild(body);        } else {          d.appendChild(body);        }      }      d.title = "ストレス爆散プチプチ";      var meta = d.createElement('meta');      meta.name = 'viewport';      meta.content = 'width=device-width, initial-scale=1.0, user-scalable=no';      head.appendChild(meta);      var style = d.createElement('style');      style.textContent = [        'html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; background-color: #0f172a; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; user-select: none; -webkit-user-select: none; touch-action: manipulation; }',        '.container { display: flex; justify-content: center; align-items: center; width: 100%; height: 100%; position: relative; z-index: 10; pointer-events: none; }',        '.card { background-color: #1e293b; border: 1px solid #334155; border-radius: 16px; padding: 32px 24px; text-align: center; box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5); max-width: 90%; width: 360px; pointer-events: auto; }',        '.title { color: #f43f5e; font-size: 24px; font-weight: bold; margin-bottom: 12px; }',        '.message { color: #94a3b8; font-size: 18px; margin-bottom: 24px; font-weight: 500; }',        '.counter { color: #f8fafc; font-size: 28px; font-weight: bold; background: #0f172a; border-radius: 12px; padding: 12px 16px; border: 1px solid #334155; }',        '.ripple { position: absolute; border-radius: 50%; background: rgba(244, 63, 94, 0.4); transform: scale(0); animation: ripple-anim 0.35s ease-out forwards; pointer-events: none; z-index: 5; }',        '@keyframes ripple-anim { to { transform: scale(1); opacity: 0; } }'      ].join('\n');      head.appendChild(style);      var container = d.createElement('div');      container.className = 'container';      var card = d.createElement('div');      card.className = 'card';      var titleDiv = d.createElement('div');      titleDiv.className = 'title';      titleDiv.textContent = '💥 ストレス爆散プチプチ';      var msgDiv = d.createElement('div');      msgDiv.className = 'message';      msgDiv.textContent = '画面のどこでも叩け!!!';      var counterDiv = d.createElement('div');      counterDiv.className = 'counter';      counterDiv.id = 'counter';      counterDiv.textContent = '叩いた回数: 0 回';      card.appendChild(titleDiv);      card.appendChild(msgDiv);      card.appendChild(counterDiv);      container.appendChild(card);      body.appendChild(container);      var audioCtx = null;      var count = 0;      var getAudioContext = function() {        if (!audioCtx) {          var AudioContextClass = w.AudioContext || w.webkitAudioContext;          if (AudioContextClass) {            audioCtx = new AudioContextClass();          }        }        if (audioCtx && audioCtx.state === 'suspended') {          audioCtx.resume();        }        return audioCtx;      };      var playSnapSound = function() {        var ctx = getAudioContext();        if (!ctx) return;        var now = ctx.currentTime;        var osc = ctx.createOscillator();        var gain = ctx.createGain();        var freq = 800 + Math.random() * 1700;        osc.type = 'triangle';        osc.frequency.setValueAtTime(freq, now);        osc.frequency.exponentialRampToValueAtTime(freq * 0.3, now + 0.04);        gain.gain.setValueAtTime(0.8, now);        gain.gain.exponentialRampToValueAtTime(0.001, now + 0.04);        osc.connect(gain);        gain.connect(ctx.destination);        osc.start(now);        osc.stop(now + 0.04);      };      var spawnRipple = function(x, y) {        var ripple = d.createElement('div');        ripple.className = 'ripple';        var size = 100;        ripple.style.width = size + 'px';        ripple.style.height = size + 'px';        ripple.style.left = (x - size / 2) + 'px';        ripple.style.top = (y - size / 2) + 'px';        body.appendChild(ripple);        setTimeout(function() {          if (ripple.parentNode) {            ripple.parentNode.removeChild(ripple);          }        }, 350);      };      var handleAction = function(e) {        if (e.type === 'touchstart') {          e.preventDefault();        }        var pageX = 0;        var pageY = 0;        if (e.touches && e.touches.length > 0) {          pageX = e.touches[0].pageX;          pageY = e.touches[0].pageY;        } else {          pageX = e.pageX || e.clientX;          pageY = e.pageY || e.clientY;        }        count++;        counterDiv.textContent = '叩いた回数: ' + count + ' 回';        playSnapSound();        spawnRipple(pageX, pageY);      };      var lastTouchTime = 0;      body.addEventListener('touchstart', function(e) {        lastTouchTime = Date.now();        handleAction(e);      }, { passive: false });      body.addEventListener('click', function(e) {        if (Date.now() - lastTouchTime < 400) return;        handleAction(e);      });    };    if (w.document.readyState === 'complete' || w.document.readyState === 'interactive') {      initApp();    } else {      w.addEventListener('DOMContentLoaded', initApp);      setTimeout(initApp, 100);    }  } catch (err) {}})();void(0);

一発作成プロンプト!

画面のどこをタップ・クリックしても、確実に耳へ届く「高音の弾けるアタック音(バシッ・パチッ)」が心地よく鳴り響くストレス発散用ツールを、新規タブ(別タブ)で起動するブックマークレットを作成してください。

一時保存や外部通信、実行元ページへのDOM追加は完全に禁止とし、完全なES5/ES6互換構文で構成してください。

【音響機能・高音限定指定(最重要)】
- 聴き取りにくい「低音(ローパスフィルター音や重低音ノイズ)」は【完全廃止】としてください。
- Web Audio API(OscillatorNode / GainNode)を使用し、確実に耳へ届く【高周波帯(800Hz〜2500Hz付近のランダム高音)】のアタックサウンドのみを生成してください。
- 音の減衰(exponentialRampToValueAtTime)を極めて短く(0.03〜0.05秒程度)設定し、タップするたびに遅延なく「パシッ!」「パチッ!」と鋭く心地よい高音アタックが響くようにしてください。

【JavaScript即死・ブランク化の絶対防止構造】
- `document.open()` および `document.write()` は Trusted Types セキュリティでスクリプトが即死(真っ白化)するため【完全禁止】とします。
- `const w = window.open(); const d = w.document;` を取得後、`d.write` は一切呼ばず、`d.title` の指定や `d.createElement` でUIを構築してください。
- 開いた直後の `w.document` の `head` や `body` が null の場合でも絶対にエラー停止を起こさないよう、安全なフォールバック処理を徹底してください。
- 親画面での prompt() 呼び出しは別タブの描画スレッドを一時停止させるため【完全禁止】とします。

【新タブ内のUIレイアウトおよびインタラクション】
・ 全体背景: #0f172a(ダークモード)
・ 画面中央カード: #1e293b (角丸16px, 枠線 #334155, テキスト中央寄せ)
・ タイトル: 💥 ストレス爆散プチプチ (#f43f5e / 24px / bold)
・ メッセージ: 「画面のどこでも叩け!!!」(#94a3b8 / 18px)
・ タップカウンター: 「叩いた回数: 0 回」を画面中央にデカデカと表示(タップごとにカウントアップ)
・ インタラクション: 画面全体(document.body)の touchstart / click イベントで高音アタックを鳴らし、タップ位置に一瞬円形のエフェクト(波紋)が広がる演出を実装してください。

【出力形式(絶対厳守)】
- 解説テキストや前置き文は一切出力しないでください。
- 全体を `javascript:(function(){ ... })();void(0);` のラッパー構造で記述し、可読性を保った改行ありの単一コードブロックのみを出力してください。

この記事について!

今更ながら、Gemini 3分クッキング記事について注意点など|へろん


PR記事を書かせて頂いています!


何でもどうぞ!答えられるものは全て答えます!

設置はお済みですか?図らずも人の庭でnote質問箱を試す!|へろん


メンバーシップ始めました!

まだ手探りですが、ご要望/無茶振り/質問、可能な限りお受けします!


参加させて頂いています!是非チェックしてみてください😆


有料ツールに挑戦中!

OBS Studio用リモコン | OBS画面を前面に出さずに操作できます!


小道具すべて、こちらに置きました!


☕ お時間あればこちらも是非!

いいなと思ったら応援しよう!