Slackでアンパンマンがちょっと流行った話
※本記事は「Unityゲーム開発者ギルド2AdventCalendar2021」の記事になります
貴様は誰だ
どうも すずきかつーき というセキュリティ意識の欠片も無い名前で電脳空間をさまよっているオジサンです。鳩を飼っています(実物は飼っていません)
UGDGとは
UnityGameDeveloperGuildの略で、Unityを使った(Unityじゃなくても良さそう)ゲーム(ゲームじゃなくても良さそう)を制作(制作してなくても良さそう)する人(人じゃなくても良さそう)の集まるSlackグループになります。控えめに言っても最高です。
なんで語ることもないのにアドカレ登録しちゃったの?
ごめんなさい。
で、何話そうか
今日は、UGDGで暗躍しているアンパンマン機能についてちょっと話したいと思います。
アンパンマン機能とは
UGDG のSlackのどこでも良いので
鳩: あーんぱーんまーん
と記入すると
このように、各種emojiをランダムで組み合わせて返却してくれるという、超ローテクな機能になります。
由来
記憶が定かではないのですが、Slackで使用される というemojiが「その ”それ” って ”それいけアンパンマン” の ”それ” だよね・・・?」という話が上がり。
(ちなみに、その”それ”の登録者はUGDGの長であるないち御大でした。犯人はヤス
)
その後 "いけ" "アン" "パン" "マン" 等のアンパンマンを構成するパーツも登録されていったため、調子に乗った鳩が(鳩の飼い主が)機能を追加した。
という流れだったかと。
仕組み
全体の流れとしては
0. 「あーんぱーんまーん」 のワードを検知
- 総返却絵文字数を決定 3〜12文字
- 用意された絵文字の中からランダムで 1. で決まった総返却絵文字数分連結
- "それいけ!" をprefixとしてくっつけて slackに送信
という感じです。
実際のプログラムは
function MakeAnPanMan() {
var dat = [":sore:",":ike:",":ahh:",":nn:",":daddy:",":n:",":ma:",":an_anpanman:",":man_anpanman:",":pan_anpanman:"];
var ret = ":sore::ike:";
var cnt = 3 + Math.floor(Math.random() * dat.length);
for(var i = 0;i < cnt;++i){
ret += dat[Math.floor(Math.random() * dat.length)];
}
return ret;
}
こんな感じ。 どシンプルですね。
確率
正しく(正しく?)「それいけ!アンパンマン」になる確率はどれくらいかと言うと、
まず、↑の「総返却絵文字数」が3〜12の10パターンの中から、「3」を選ばないと必ず余計な絵文字が付いてしまいます。 この時点で 1/10
そして 用意されている絵文字の中から
1文字目に "アン” を選ぶ確率は 絵文字10個から選んでいるので 1/10
2文字目に "パン” を選ぶ確率も同じく 1/10
3文字目に "マン” を選ぶ確率も同じく 1/10
なので、ざっと 1/10000
俗に言われる交通事故の確率と同じくらいですね。
ちなみに僕が知る限り一人だけ達成しています。その方の名誉のために名は伏せておきます・・・。
これからも
鳩ちゃんをよろしくね。
余談
毎回 「:鳩 あーんぱーんまーん」と打つのも面倒(:が半角なので地味に打ちづらい)と思った方が、ショートカット(Slackのカスタムレスポンス機能)で
それいけ!
を検知すると `:鳩 あーんぱーんまーん" と返答するというハックを登録してあります。
(というか、鳩君、カスタムレスポンスにも反応するんですか。 なんかの間違いで無限ループしそう。)
時々間違えて 鳩:それいけ!
と打っている方も見かけますが、これをやると、鳩君へは
- :鳩 それいけ! っていきなり呼ばれた → よくわからんが謝っておこう→「すみません」
- :鳩 あーんぱーんまーん って呼ばれた → アンパンマン機能を発火
という2つのリクエストがほぼ同時に呼ばれる事になるので
このような謎の流れになりますお試しあれ。
Discussion