blog
制作の裏側同じ妖怪は、いつも同じ顔で出る——シード乱数でドット絵を“毎回同じ”に生成する
ボタンを一回押すだけ。名前も生年月日も要りません。すると「夜中にスマホを置けない妖怪」みたいな、現代人の“あるある”を妖怪にした一体が出てきます。集めれば図鑑が埋まり、捕まえた妖怪は牧場でうろうろ歩き回る。理屈はあとでいいので、まず一回どうぞ。
自分のあるあるでも、上司や同僚、家族のあるあるでも。全部ちがう妖怪が出ます(ぜんぶで138体)。

何を作ったのか
中身はとてもシンプルです。ブラウザだけで動く一枚のHTMLで、ボタンを押すと妖怪が一体出る。それだけです。出る候補は138体。「会議で一度も発言しないのに、終わってから文句だけ言う妖怪」みたいに、誰かの心当たりを突くキャラばかりを揃えました。

外見はドット絵で、その場で組み立てています。体・目・口・頭の飾り・お腹のパーツを重ね合わせて一体を作る方式で、16×16のマス目に色を置いて描く、レトロゲームのキャラを作る要領です。出てきた妖怪は、こんな「図鑑カード」になって返ってきます。

同じ妖怪は、いつも同じ姿で出る
地味ですが、このツールで一番こだわった仕掛けがこれです。「No.42の妖怪」は、誰が引いても、何度引いても、まったく同じ見た目・同じ色で出てきます。
普通に乱数で毎回バラバラに描いてしまうと、図鑑も牧場も成立しません。同じ妖怪なのに会うたび姿が変わったら、「集めている」という感覚が消えてしまうからです。
そこでやったのは、その妖怪に割り振った固定の通し番号(No.)を「合言葉」にして、見た目を毎回そこから計算し直すことでした。このNo.を決まった数値に変換し(これをハッシュといいます)、その数値を乱数の種にして、体の形・色・パーツを決める。種が同じなら結果も必ず同じになるので、どこにも保存しておかなくても、同じ妖怪はいつも同じ顔で現れます。図鑑に並べても、牧場に放しても、ちゃんと「あの子」のままでいてくれる。これがあるから収集が成り立ちました。
レア度は「重みつきのクジ」です。よく出る妖怪(N)から、めったに出ない大妖怪(UR)まで4段階あって、出やすさを変えています。内訳はUR 2%、SR 8%、R 26%、N 64%(自社調べ・制作時点)。当たり(SR・UR)は、この記事のいちばん上にあるカードのように、トレカのホロ仕様=いわゆる「キラカード」になります。なかなか出ない一体を狙って、つい何回も回したくなる——その「あと一回」を作るための配分です。
いちばん悩んだのは「カードに何を書くか」だった
正直に書くと、この企画はかなり迷走しました。
最初の出力は、妖怪と一緒に「今日の凶」「ささやかな吉」「除霊の方法」みたいな占い風のテキストを並べていました。でも作っている自分でも、出てきた画面を見て「これ、何の画面だっけ」と分からなくなる瞬間があったんです。要素はそれぞれ面白いのに、全体として何を見せられているのかが伝わらない。これはまずい兆候でした。
直し方として最初に考えたのは「足す」ことでした。説明を増やそう、演出を盛ろう、と。でも逆でした。思い切って占いのテキストをまるごと消したんです。機能を足すより引くほうが正解、という判断は、作っているとなかなか勇気が要りました。
そのうえで効いたのが、占いの代わりに「図鑑」という器をかぶせたことです。同じ妖怪を「No.073/生態/生息地/好物/弱点」という図鑑のフォーマットに載せ替えただけ。中身のキャラはほとんど変えていません。なのに、これだけで全部の断片が急に意味を持ち始めました。「弱点」はネタとして読めるし、「生態」はあるあるの本文になる。バラバラだった要素が、図鑑という枠に入った瞬間に一本につながったんです。
ここが今回いちばんの学びでした。中身がどれだけ面白くても、「これは何の画面か」を伝える枠組みが無いと伝わらない。逆に、ちゃんとした器を一つ用意するだけで、同じ素材が見違える。器が先、中身は後——この順番を、身をもって覚えました。

集めた妖怪を「牧場」で放し飼いにする
図鑑がコンプリート欲をくすぐる「静かな一覧」だとしたら、もう一つの収集装置が「妖怪牧場」です。引いた妖怪が草原をうろうろ歩き回ります。
これは見ていて単純に楽しい、を狙いました。同じ妖怪をダブって引いても、牧場ではちゃんと別の一匹として放されます。だから連続でガチャを回すと、牧場はどんどん混み合って、最後はちょっとしたカオスになる。重複を「無駄」ではなく「面白さ」として設計したわけです。
技術的には、たくさんの妖怪をなめらかに動かすために、一度描いたドット絵を裏で一枚の画像として持っておき(オフスクリーンのキャッシュといいます)、それを必要なだけ画面にコピーして歩かせています。毎回ゼロから描き直すと重くなるので、「スタンプを一個作って、それをペタペタ押す」イメージです。これで多数が同時に歩いても軽く動きます。

作ってみて思ったこと
このツール、完成までに名前が二転三転しました。架空のお店を出すガチャから始まって、「それ、結局キャラが出る箱でしょ」「大人が何度もやる動機が無いよ」と社内で言われて妖怪に作り変え、占いを足しては消し、最後にようやく「あるある妖怪ガチャ」という名前に落ち着きました。
回り道に見えますが、振り返るとどれも「足すか、引くか」の判断でした。そして効いたのは、たいてい引くほうの判断だった気がします。占いを消したこと、画面をシンプルに保ったこと。そのうえで、たった一つ「図鑑」という器を足したこと。
派手な新技術は使っていません。ブラウザの中だけで、決まった種から妖怪を組み立てて、それを集める枠を用意しただけです。でも、その地味な積み重ねが「つい、もう一回」を生むかどうかを分けるのだと、今回もまた思いました。
おまけ:同じ妖怪が、いつも同じ顔になるしくみ
ひとつだけ、種明かしを。「どの妖怪が当たるか」はその場の運まかせ。でも「当たった妖怪がどんな姿か」は、その子に割り振った通し番号(No.)だけで決まります。だから保存していなくても、同じ妖怪はいつ引いても同じ顔。図鑑も牧場も、これで成り立っています。
仕組みはシンプルで、No.を計算式(ハッシュ)に通し、その値を“種”にした乱数で姿を組み立て直すだけ。同じ種なら毎回まったく同じ結果になる——その性質ひとつで「同じ妖怪は同じ姿」を実現しています。
もう一度、どうぞ
あなたの“あるある”は、どの妖怪でしょうか。図星だったら、笑って許してください。
私たちは、こういう小さな仕掛けを面白がって、最後の細部まで作り込む会社です。集客やブランディングで「こういうの作れない?」というご相談があれば、初回無料の相談でどうぞ。無理な売り込みはしません。
言語・構成:HTML+バニラJavaScript(単一ファイル/フレームワーク不使用)
描画:HTML5 Canvas(ドット絵をパーツ合成して動的生成)
個人化:妖怪ごとの固定No.をハッシュ → mulberry32 によるシード乱数(同じ妖怪は必ず同じ姿)
データ:妖怪138体(静的データ・レア度ティア抽選 UR2%/SR8%/R26%/N64%)
保存:localStorage(捕獲記録はブラウザ内のみ・サーバー送信なし・Cookie不使用)
構成方針:フロント完結(実行時のAPI・LLM呼び出しなし)

