0.00643%でLLskipするキューブbotを作りました

はじめに

 はじめましての方ははじめまして。そうでない方はいつもお世話になっております。ピース(@peace_cube_)です。今回は2022年11月に作った0.00643%でLLskipするキューブbot(@LLskipbot)というTwitterのbotアカウントを作成した件についてのお話です。

作ろうと思ったきっかけ

 Twitterを見てて、いわゆるソシャゲのガチャの当たりの確率の話をしていたツイートを見かけたのが始まりでした。成功確率1%の場合に100回試行したら100%の確率で1回は成功するっていうのは誤りで、確率統計の計算をすると実際には約63%程度でしかないというお話ですね。ちなみに以前友達がポケモンの色違い厳選(4096分の1)をしようっていうときにちょこっと調べて勉強したことがありました。

 そして、ふとキューブにおける確率について同じことを考えたとき、F2L終了時点で6面が完成状態になる、いわゆるLLskipが15552分の1の確率で出現することはスピードキューバーにとっては有名な話ですが、これについても同様に15552回ソルブしたら1回はLLskipが出現するのかと言えばそうではなくて、やはり約63%になるんですよね。

 このことをTwitterでツイートしようと思ったんですが、「いや、誰かが既に同じようなツイートをしてるだろうな」と思って「LLskip 確率」でTwitter検索したところ、案の定いくつかそんな感じのツイートがありました。早とちりしなくてよかったと安心したのですが、そのとき、こんなツイートが目に留まりました。

 「ああ!2019年のツイートなのにまだ誰も作ってないじゃん!」

 これ、元ネタがありまして、知らない人のために説明しておくと、5%の確率で性器を露出するドラちゃん(@5percent_Dora)というbotアカウントがあって、2時間に1度ドラえもんのひみつどうぐの名前をツイートするんですが、5%の確率でボロンするっていう、ただそれだけです。ただそれだけで面白いんですよね。いや、本当にただそれだけなんですが、そのタイミングでソシャゲのガチャを回すとSSRが出やすくなるという噂があるとかないとか…で今もなお一定の盛り上がりを見せており、「〇%の確率で××するbot」の派生アカウントも沢山産み出されてきました。まぁただ、やはり、ただそれだけなのに面白いということを知っているからこそ、「0.00643%でLLskipするキューブbot」を作成することに踏み切りました。

なぜ0.00643%なのか

 雑に言ってしまうと、OLLskipの確率が216分の1、PLLskipの確率が72分の1で、それらはそれぞれ独立した事象なので掛け算すると1/15552=0.00006430041152…ということでおよそ0.00643%という訳なのですが、もう少し分かりやすい説明はだーおかさん(@Daaaaaaaaaoka)のブログ記事をご覧ください。(このブログ記事は、だーおかさんより許可を頂き、LLskip botのプロフィール欄に掲載させていただいております。だーおかさん、ありがとうございます!)

使用したツールと仕組みについて

 OLLもPLLもいわゆる「同様に確からしい」確率で出現するのであればBotbirdやTwittbotなどのツールを使えば簡単にbotアカウントを作成できるのですが、OLL27(Sune)をはじめとした多くのOLLは216分の4の確率で出現するのに対してOLL57(H型)等は216分の2、OLLskipとOLL20は216分の1、といったように出現確率が異なります。また、PLLについてもT permをはじめとした多くのPLLは72分の4の確率で出現するのに対してE permとZ permは72分の2、N permとH permとPLLskipは72分の1の確率で出現するため、0.00643%でLLskipしてもらうためには、それぞれの出現確率に対して重み付けをしてあげる必要があります。

 そこで、こちらのブログ記事を参考にさせていただいて、Google App Script (GAS)を用いて重みづけをし、実際の出現確率に合わせてツイートできるような仕様を実装することができました。

 これがローンチしてから一応最初の現存するLLskip botのツイートになります。とりあえず文字でOLLとPLLのそれぞれを表示させたって感じですね。GASのTwitter APIの認証までは少々面倒でしたが、LLskip botの仕様にぴったりなブログ記事が運良くあったこともあって、ここまでは一応一晩で作ることができました。

 ただ、文字ツイートだけではネタbotとしては味気ないというかなんというか、上級者キューバーでもOLLの番号に対するパターンを覚えている訳ではないし、画像も一緒にあった方がいいという声もあったので、画像付きツイートをできるように実装しました。画像についてはネットにあるものでもよかったのですが、画質が粗いものばかりだったため、visualcubeでskipの状態を含めた合計80種類の各LLそれぞれのU面から見たときのU面とU層の画像をポチポチして高画質なものを作成しました。(ネタbotとしてどのような演出が良いのかについて様々ご意見くださった皆様、ありがとうございました。)

 また、GASで画像をツイートするために最終的に参考になったブログ記事はこちらこちらになります。なんか色々調べたけどサンプルコードが全然見つけられなかったっていうのと、拡張子の付け忘れに気付かずで、実装に丸1.5日かかってしまいました…
そんなこんなでOLLとPLLのそれぞれの文字と画像が一緒にツイートされるような仕様になりました。

 仕組みについてざっくりと話すと、まず、Googleスプレッドシートに各LLの名前と重み付けのための数値を記入したものと、Googleドライブに「(各LLの名前).png」の名称を付けた各LLの画像を用意します。そして、GASで一定時間毎にスプレッドシートに記入された重み付けに基づいてランダムにOLLとPLLの名前を決定し、同名の画像をドライブから取得して文字と画像を一緒にツイート、といった感じです。(気が向いたら説明図を作ります)

嘘OLL発覚

 画像付きツイートによる運用が開始されてより1か月半程経った2023年1月1日、先述のだーおかさんの指摘によって、それまでずっと誤ったOLLの画像のツイートがなされていたことが発覚しました。

 正直なところ、これを言われた時点では「え?!あ、これ間違ってるの?!」って感じで間違っていることに対してピンと来ず、OLL手順表をスマホで調べて確認してしまいました。もちろん指摘された通り確かに間違っていて、ツイートを遡ってみたところ100件くらい嘘OLLの画像がツイートされてきたのに今まで誰一人として気付くことがなかったのが面白すぎて吐きそうになるくらい笑いました。いやだって、いや、もっと早く誰か気付いているはずでしょ!
 一応その日の晩に正しい画像を作り直してGoogleドライブにて差し替えをして一件落着となりました。

Twitter API有料化?

 2022年10月にイーロン・マスクがTwitterを買収してから、サードパーティーアプリが使えなくなったりインプレッション数が表示されるようになったりと、様々な仕様変更がされてきました。そしてそのTwitter改革の流れの中、2023年2月上旬頃にTwitter APIの使用が有料化するという発表がありました。部分的でしかない詳細情報の公表や度重なる有料化実施の延期に、サービスを継続していけるのかどうか戸惑いがありましたが、結局のところ一定の条件の下、無料で使用が可能であるということになりました。 その条件とは主に、
・1か月あたり1500ツイート以内であること
・ツイートの読み込み(をして解析等)をしないこと
の2つで、ローンチ当初は15分に1度の投稿頻度だったのを30分に1度に変更すれば、botアカウントの運用を継続していけるということになりました。

Skip発生の期待値

 30分に1度ツイートする場合、1日あたり48ツイートなので、期待値として3日に2回PLL skipが出現します。また、4日に1回程度OLL skipが出現することになります。

 そして、LLskipの出現確率はこんな感じになります。

LLskip出現確率(計算に使用したサイトはこちら、確率を0.00643%で計算)

 この記事を書いている時点では、約12000ツイートでまだLLskipはしていないのですが、1回でも出現する確率はおよそ5割程度となります。冒頭でお話した通り、LLskipが1/15552なのに対して15552回試行(本記事投稿時点から約2か月後)しても63%程度にしかなりません。40000回試行してようやく9割台といったところになります。6か月で大体9000ツイートっていうことを考えると、運が悪ければ結構気長に待つことになるかもしれません…

おわりに

 30分に1度という高頻度のツイートのbotであり、フォロー数が少ない方やTLをちゃんと管理したい方はLLskip botでTLが埋められてしまうので、わざわざフォローすることについておすすめはしません(フォローしたからといってスピードキューブが速くなるということは一切ありません)。その代わり、いつかLLskipが出現した暁には是非いいねとRTをよろしくお願いいたします!
 そして、LLskip botをわざわざフォローして見てくださっている方々、いつも本当にありがとうございます!実は、作成者自身がフォローをしていないので、LLskipを見逃さないようこれからも何卒よろしくお願いいたします!



この記事が気に入ったらサポートをしてみませんか?