CODE GALLERY No.25
今日のダジャレメーカー
毎日1つ、日めくりでダジャレが出ます。言葉を入れると、音の似た言葉を探してダジャレを組み立てます。
「布団が吹っ飛んだ」がなぜダジャレに聞こえるのか。「ふとん」の音が、「ふっとんだ」の中にほとんどそのまま隠れているからです。間の小さい「っ」は、耳がうまく聞き流してくれます。
このページは、その「音が隠れている」をプログラムで探します。読みを1拍ずつのマスに分けて並べ、どの音が重なったか、どこをゆるく見たかを色で見せます。ぴったり重なるほど、寒さメーターが下がります。
HOW TO USE使い方
- 開くと、その日のダジャレが日めくりで出ます。同じ日なら、だれが開いても同じダジャレです。元日や猫の日のような日には、その日にちなんだものが出ます
- 「前の日」「次の日」でめくれます。「今日」で今日に戻ります
- 「言葉から作る」に言葉を入れると、ダジャレを最大5つ作ります。辞書にある言葉(布団・Java など)は漢字や英字でも入れられます。それ以外は、ひらがなかカタカナで入れてください
- 「プログラマー向け」にすると、日めくりも作るダジャレも IT の言葉が中心になります
- 「音の重なりを見る」を開くと、上の段に入れた言葉、下の段にダジャレの続きの読みが、1拍ずつ並びます
HOW IT WORKS音の重なりの探し方
1. 拍に分ける:読みを、日本語のリズムの単位(拍)に分けます。「きゃ」のような小さい「ゃゅょ」の付く音は1拍、「っ」「ー」「ん」もそれぞれ1拍です。「キャッシュ」なら「きゃ・っ・しゅ」の3拍です。
2. ゆるく比べる形を作る:ダジャレでは、少し違う音も同じに聞こえます。そこで、濁点を外した形(「ば」と「は」を同じと見る)と、伸ばす音をまとめた形(「ー」と「けい」の「い」を同じと見る)も用意します。小さい「っ」と伸ばす音は、なくても通じる音として飛ばしてよいことにしました。
3. 重なる場所を探す:入れた言葉の拍が、続きの読みのどこに隠れているかを、先頭から1拍ずつずらして調べます。どの並べ方がいちばん自然かは、手ごとに値段を付けて、合計がいちばん安いものを選びます。
// 手の値段:同じ 0、ゆるく同じ・飛ばす 1、1拍ちがい 3(1回まで) if (a.raw === b.raw) take(0, best(i + 1, j + 1, subs), ['same', i, j]); else if (a.key === b.key) take(1, best(i + 1, j + 1, subs), ['loose', i, j]); else if (subs > 0 && (a.cons === b.cons || a.vowel === b.vowel)) take(3, best(i + 1, j + 1, subs - 1), ['sub', i, j]);
「1拍ちがい」は、子音か母音のどちらかが同じときだけ許しています。「くま」と「こまった」は「く」と「こ」の子音が同じなので重なり、「Java」と「邪魔だ」は「ば」と「ま」の母音が同じなので重なります。
4. 寒さを測る:重なりが続きの読みを広く覆うほど、点数を高くします。ゆるく見た音や1拍ちがいがあると減らし、続きの頭から重なっていると少し足します。点数は 20℃(ぬるい)から −20℃(こごえる)までの温度に直して見せます。
全体ではどこにも重ならない言葉は、前か後ろの一部だけで重なるものも探します。「すいか」なら、後ろの「いか」が「いかがですか」に隠れている、というような見つけ方です。
NOTES注意
- 辞書には、昔から言われている定番の形と、このページのために作ったダジャレを合わせて、140ほど入れています。辞書にない組み合わせは作れません
- 漢字の読みは、辞書にある言葉しか分かりません。読みの分からない言葉は、ひらがなで入れてください
- 音だけで組み立てるので、意味の通らない文ができることもあります。それも含めて楽しんでください
- 節分の日付は年によって変わります。日めくりでは 2月3日に出しています
※ 入れた言葉はこのブラウザの中で調べるだけで、どこにも送りません。

