見出し画像

るなすぺ楽屋裏「雀魂が挑んだ悪魔の証明。牌操作神話は何故信仰を集めるのか」

るなすぺ楽屋裏第一弾はたくさん読んでいただいて感謝の限り。想像以上の反響に自己肯定感が爆上がりすると共に、若干次の記事へのプレッシャーを感じる毎日である。
とは言いつつ流石にあれだけ読んで反応をもらえたら次を書かないわけにはいかないので、楽屋裏と言いつつ楽屋裏ではなく表で出た話題をネタに一本記事をあげておこう。今日はGBの酒井団長との雑談で出て来た、「雀魂は面白い方法を使って運営側の恣意的な不正が無いことを証明している」という話から。

「牌操作」という言葉を聞いたことがあるだろうか。ネット麻雀を長く打っていて、且つ他のプレイヤーとある程度交流している人間であれば、凡そ全く耳にせずに過ごすことは無いだろうというくらいに頻繁に耳にする言葉である。簡単に言えば、確率と乱数で成立するはずのネット麻雀に、運営が恣意的に不正を働いて配牌やツモ山に操作を加えているのではないか、といった話である。実はこれを本気で信じていたりする人間がかなりの数いる、といった議論は後にするのだが、まずはこうしたプレイヤーの疑義に対して雀魂を運営するYostarが面白い方法で不正が存在しないことを証明している、という話を紹介したい。

そもそも一般に、「存在しないことを証明する」というのは非常に難しい。というか正確に言えば「証明する必要が無い」と表現するのが正しい。
「悪魔の証明」という言葉を聞いたことがある人はいるだろうか。これはその類に属するもので、ありとあらゆる不正の可能性を検討し、それをしらみつぶしに反証する必要があるためにほとんど実質的に不可能なのだ。

しかしながら雀魂の運営は、面白い方法でこれを可能にした。それが暗号化を使った牌山の事前提示である。麻雀を含む不完全情報ゲームに属するボードゲームは、「伏せられたカードや牌が何かは事前には分からない」ことを前提に成立しているゲームなので、当然ながらそれが何かはわからない状態でゲームは進行するし、だからこそ人はその見えない部分で「不正をされているかもしれない」という疑義を持ってしまう。

「だったら最初から全部見せてしまえ!」というとんでもない逆転の発想を生み出したのがYostarである。実は雀魂では局の開始時点で全ての牌山の並びを開示している。「それではゲームにならんだろう」と思った人は多いと思うのだが、もちろん開示した時点では暗号化されているので、そこでは誰も牌山の中身まではわからないようになっている。これにはMD5という暗号化技術が使われていて、誰でも簡単に不正が無いことを確認出来るようになっているのだ。

順を追って説明するが、まず特定の牌山の並びはひとまとめのコードとして数字とアルファベットの羅列に変換出来る。下記は自分の牌譜から取ってきた適当なサンプルである

3m9p6p7p4m4m9m8s1s8p1s4s3p9s7p9p1p2p5p2s6s4p6m7p5s1m3z2m4p4z8m8s3p9s9p2z1p8m2z3z9m2p3s3p1s6p2p2z3z2p8s8m4s1s5z1m4p9p1p7s3s1p5p1z4z7z8s2m6s5z2s3m1m6m3p8p0s8p8m9m6p4m4m

慣例的な、萬子をm、索子をs、筒子をpと記載し、赤牌は0、字牌はzといった感じの記載ルールになっている。
これをMD5で変換すると、「a0ae81e25c6903924572c379b40656d6」という128byteの固定長ハッシュ値が得られる。これは技術職の人間に限らず、一般に「MD5 ハッシュ 変換」などでググって出て来たWEBサイトで試せるレベルで流通しているので、興味がある方は試してみると良い。
なお、牌山のコードから暗号を得るのは誰がやっても出来るが、暗号から牌山は生成できないようになっている。これがMD5という暗号化技術の特性である。
この逆変換できないという特性を利用し、実は雀魂は開局時点からこの暗号を公開しているのだ(王牌をタップすると表示される)。「今回の牌山はこれですよ」と暗号を開示した上で、本来の牌山を示すコードは後から牌譜に記載して、各々変換すると事前に開示していた文字列と一致するよね、と納得してもらうという仕組みになっている。
「牌山が全て事前に公開されていたとしても、ツモの並びでここでテンパって、ここで一発で掴ませて、みたいな山を配ることは可能なのでは?」と思った疑り深い人もいるかもしれないが、冷静に考えてみてほしい。麻雀の1局における個人の副露率は30%を超えている。要は、大体の局で誰かが鳴くのだ。「ここで鳴くだろう」みたいな細かい想定をしたらどう考えたって人間の考慮が必要になるからシステムには落とし込めないし、万が一実装出来たとしても「暇だからチー」とか言い出すヨプさんやえったんさんが同卓していたらオシャカである。

さて、ここまで読んだ上で、聡明な読者の皆さんの中にはこう思った人もいるだろう。

「これ、全ての牌山パターンから予めMD5で暗号を得てリストを作って、暗号が表示されたら総当たりで検索かければツモ山分かっちゃうんじゃないか?」

その通りである。実は運営側は事後的にツモ山を操作していないことを証明しているが、逆を言えば理論上はプレイヤー側は不正に未来を知る余地があるのだ。


「理論上は」と断り書きを入れたが、これは技術者がよく使う半分ジョークのような表現であり、言うなれば「理論上可能だが現実的に不可能」な領域のチートだ。赤が入っていないとしても、牌山のパターンというものは日本語の単位系に存在する限界の桁数を遥かに凌駕するほどのとんでもない数存在することが知られているし、赤入りだと更に増える。
これを全通り暗号化しておいて、表示されたら総当たり。しかも打牌が間に合う、もしくは局の中盤には間に合う1分程度での演算と考えても、実現するためには現在の技術水準ではスパコンが何台も必要になる。必要になるのは並列計算処理速度のみなので量子コンピュータが実用化されたらもしかすると違った未来があるかもしれないが、それはその時に考えればよい。
2022年現在の話をすればデータの保管だけでも目が眩むほどの資金が必要になるし、国家プロジェクト級のリソースを割いて雀魂でチートしようとしない限りは無理だ。だったら疑似的に強いAIの打牌選択を取り込んで打たせるとかの方が楽だし簡単だし、めっちゃ勝てる。

少し話題が変わるが、牌山の開示とは別に、もう一つ雀魂が取り入れているのが全対局データの公開である。「雀魂牌譜屋」というWEBサイトを利用しているプレイヤーは多いと思うが、あれは正に雀魂が公開している対局情報を利用して一般のプレイヤーが作成したものだ。

公開している主目的はもちろん、雀魂牌譜屋の作成者のように技術者向けに好きにデータを加工して使ってもらう、というオープンソース的な理念に基づくものだと思うが、それと同時に雀魂に存在する全ての対局データを統計的に使える状態にしておくことで、衆人環視の環境を作って不正の不存在を証明してもらうという役割も果たしている。

もし運営が特定のプレイヤーを利するようなことをしていたり、特定の状況下で特定の偏りが起きるような不正をしていれば、それは統計的な異常として出て来るよね、という話だ。
一例を挙げると、数万局以上打ってるプレイヤーで、統計的な異常を来すほどに平均シャンテン数が高かったり低かったりする人間は居ない、というのは技術者であれば自力で調べて分かるようになっている。

さて、ここまで技術の話ばかりをしていたが、そもそもの話、こんなことを調べるまでもなくネット麻雀で作為的な不正が存在するわけがない、と私は思っている(故意ではない、技術的なミスとかだったらワンチャンあるかもしれないけど、それは全然別次元の話)

単純な話、実装に対してのメリットが無い、という一点に尽きる。本当に全くもって理由が無いのだ。

百歩譲って、これが対人ではなく、CPU相手ならまだ分かる。雀魂でプレーに使用するコインは有限なので、恣意的な介入をしてプレイヤーを意図的に負けさせれば、プレイヤーはゲーム続行のために課金をしてくれるかもしれない。
そんなゲームアンストして終わりだろ、とツッコミが入りそうだが、一応利害が成立するのでこれはまだリターンとしては考慮の余地があるレベルだ。

しかし雀魂は対人戦である。放っておいても誰かは勝つし、誰かは負ける。一回のゲームで生まれる勝者の数と敗者の数は、運営が介入してもしなくても変わらないのだ。

では他に有りそうな可能性は何か、といったら、「特定の誰かを勝たせたり特定の誰かを負けさせたりする」というモチベーションだろうか。

ここについても、「そんなパターン無くない?」というシンプルな帰結になってしまう。安直な発想としては「課金者の優遇」みたいな話が思いつくが、これは無理がある。何故かと言えば、「はっきり分かるレベルで課金者を優遇する」ような措置をボードゲームでやってしまったら利用者が離れて潰れるし、「はっきりとは分からないレベル」だったら何もしないのと同じだから、実装コストが無駄になる。それであれば全プレイヤーからの信用を得ておく方が何倍もメリットが有ると考えるだろう。


とまあ、様々な角度から運営側が不正をすることはない、という解説をここまでしてきたが、恐らくこれを読んでも「いや、細かいことは分からないけど絶対に牌操作してる!だって私負けてるもん!」と思い込み続ける人は一定数いるだろう。別に私もこのテキストを牌操作信者向けに書いているわけではなく、Yostarが取り入れている技術的手法の面白さの紹介を主題としているのでそれは別に構わない。
ただ、どうして人間がそういった思考に陥ってしまうか、という点はフォローしておきたいと思うので、「牌操作神話は何故信仰を集めるのか」というタイトル回収をしておきたい。

一言で表現してしまえば、これは認知バイアスの範疇のごく自然な反応である。認知バイアスがいかに麻雀という競技に取り組むに当たって邪魔になるか、とかヒューリスティクスの壁が邪魔になってくる、みたいな話はこの次の回で詳しく書きたいのでそれを待ってほしいのだが、今回は「牌操作されているに違いない」と思い込むに至る心理に深く関わる認知バイアスを項目別に書いておきたい。

1.ツァイガルニク効果
人は悪いことを記憶しやすい、という心理的なバイアスのことを指す。トーストはいつもバターを塗った面から落ちる的なアレ。

例えば、麻雀で攻撃を受けた際の行動として

A.現物を切って、通った
B.通りそうな牌を切って、通った
C.通りそうな牌を切って、当たった
D.危険そうな牌を切って、通った
E.危険そうな牌を切って、当たった

という事実の分類をすると、人間はCやEを突出してよく記憶するように出来ている。
麻雀というゲームは、AやBは基本行動に類するのでまあそんなに明確に記憶しておく必要は無いのだが、着目すべきは実はDである。
これをしっかり覚えているか覚えていないかで「牌操作されてるんじゃないか」という思考に至るかどうかの大きな分岐になってしまうのだ。

全てをフラットに記憶しておける人間からすれば、「危険な牌を切った。結果通った」という記憶の蓄積は、試行回数の分母として脳内に保存される。そしてどこかで「危険牌を押した。今度は当たった」というEの場面が出て来たとしてもたまたま悪い抽選を引いただけ、と自分の中で処理出来る。

ただ、CとEを突出して覚えがちな人間の場合はDのことが記憶から消されてるため「また当たった!俺だけ当たり牌掴まされてる!」「また一発だ!訴訟だぞYostar!」という心理に陥ることになるのだ。Dをカウントしよう。


2.認知的不協和の解消のための自己正当化
認知的不協和とは、自分の認識と事実に差がある時に、強い不快感を感じるという人間心理のことで、実は厳密に言うと認知バイアスの領域ではない。ただ、これを解消しようとする行動パターンが不合理な選択になるケースが多いので認知バイアスと同列に扱われることが多い。

人は認知的不協和の解消にあたって以下の4つから選択を迫られる

A.事実を変える(事実が自分の考えになるよう努力する)
B.考えを変える(事実を受けとめ、考えを改める)
C.事実を軽視する(たいした問題じゃないから、まあいいか)
D.新しい考えを追加する(他人のせいだ。環境が悪かったなど)

ネット麻雀が持つ大きなカルマの一つは、問答無用で成績が可視化されることだと私は考えている。見知らぬ第三者と麻雀を打つには雀荘に通うしかなかった時代は、「強い奴もいっぱりいるけど、俺様が最強」でみんな成立していたし、それで丸く収まっていたのだ。実際私も麻雀を打ち始めて1年目くらいの時期は自分が世界で一番強いと思っていた(いわゆる「麻雀完全に理解した」ってやつである。またの名を「ダニングクルーガー効果」と呼ぶ)。
それが今やどうか。長期に渡る着順の分布から詳細な打ち筋に至るまで、ありとあらゆるデータが、プレイヤーが望むこともなく手に入るようになってしまった。
先述した雀魂の全牌譜公開は、不正の疑義を晴らす上では役に立っているし、詳細な情報を知りたい人間にとってはありがたい存在だが、その反面「自分の情報を他人に知られたくない」というプレイヤーの意志は全く反映されない状態になっている。

その結果、知りたくもないのに「自分がどれだけ弱いか」を自覚出来るようになってしまったのだ。こんなに不幸なことは無い。

話が脱線してしまったので本筋に戻すが、この上で「自分が弱いとも思っていなかった人間が弱さを客観的に証明されてしまった」時に取る解消的行動を麻雀の例で記すと以下のようになる

A.強くなる
B.弱さを自覚する
C.データなんてどうでもいい、と嘯いてみせる
D.牌操作だ!

一般に、認知的不協和の解消はCとDが自己の否定を伴わないために選ばれやすいとされている。牌操作信者が多いこと自体はそんなに不思議な話ではないのだ。
逆にAは解消行動としては非常に稀なので、技術の向上と研鑽を続けている読者の皆さんは誇っていいところだ。ちなみにBはAよりは多少多い。


他にも、認知バイアスに限らず人間心理の色々な側面が折り重なった上に牌操作信者は生まれている。ちょっと流石にここでは書きづらいのだが、陰謀論のスプレッド構造なども似た構造だと思われる。

だから私は個人の信条に関しては特に責めることも否定することもないが、もしそんな噂を耳にして信じ込んでしまったり、とんでもない不運に見舞われて何者かの作為を感じてしまったような経験がある人向けに、感情をコントロールする技術をいくつか挙げて結びとしたい。全然牌操作なんて感じたことないよ、という人でも役に立つかもしれないので、最後まで目を通してもらえたら幸いである。

1.打牌内容を人格と結びつけて人格否定しない
「さすがにそこまで外道なことはしないよ」と直感的に思った人は多いだろう。当然である。打牌内容を以て人格否定するなんてことは許されない。

そう、たとえ「自分自身」が相手でもだ。

ここでハッとしてしまった人はちょっと危ない。危ないというのは、真面目過ぎるという意味だ。麻雀というゲームはテニスのようなラケットスポーツと近しい側面があって、どれだけ鍛錬した人間でも平気で、強制されていない状況下でミスをする。これを「そういうもんだ」と捉えられないのは思考として危険な部分がある。余りにミスを連発するなら技術的に抑える方法論を学べばいいし、後になってもミスを引きずってしまうタイプだと自覚があるなら相応のセルフコントロール術を学べば良い。これはスポーツの世界では誰もが分かっていることなのだが、どうも麻雀打ちの中でもとりわけ真面目な人間は、「ミスするのはあってはならないことだ」と考えがちである。

誰だって酷い牌を打つことはあるし、とんでもない勘違いをすることだってある。思いつきで行動して失敗することもあるし、その繰り返しで少しずつ精度が上がって、少しずつ強くなっていくのだ。そもそもほとんどの人にとっては娯楽である。肩肘張らずに、ストレスを溜めずにやるべきだと私は思う。

2.「不幸の集中」をうまく捌く
「うまく捌く」とはだいぶぼんやりとした表現になってしまったが、これは好みによるのでそう書かせてもらった。人間は、不幸なことが集中した時に、防衛本能として勝手にその事象に対して不要な意味付けをしようとする。例えば落雷を「神の怒り」と捉えて「神鳴り=雷」としたのはこの類の話だ。往年の麻雀用語であり、現在は完全に死語になりつつある「流れが悪い」もこの防衛本能から生まれたものだ。これは本当に本能の領域なので、実は誰にでも起き得る話だ。ただ、麻雀で起き得る不幸の一つ一つはもちろん非連続なので、ほとんどの場合は解釈が誤っている。私個人の場合は、この「誤った感覚」を論理でねじ伏せる引き出しを作っておくという対処法を使っている。

例えば、先制でリーチを受けて押し返せる形になったテンパイ打牌が2回連続で捕まって致命的な放銃をした後、また同じような形で押し返せる手格好になった。そういった時には私も人間なので、「また捕まったら嫌だな」とか「次こそ反撃してやる」という気持ちは感じる。ただ、こんなことを考えている時点でフラットな押し引きから外れて歪んだ選択をしようとしている、と自分を再認識して、あえて平面的な情報だけを搔き集めて判断する、という思考に移行するのだ。残ってる筋の本数、相手の想定打点、自分の打点、表面上の情報だけであえて判断し、選択を下す。そのくらいの意識を持たないと、人間はその前に起きた無関係な事象の結果に影響されて選択を誤ることが多い、と認識しているが故である。

微妙な表現の仕方になってしまったが、要は「不幸の連続に限らず、感情が判断を鈍らせる局面は人間である限り多数ある」という事実と、それを回避するためには「ブレずに打つ!」みたいな感情論ではなく、技術的に回避する引き出しを作っておいた方が有用であるという話だ。
ちょっと脱線するが、「ブレずに打つ!」と言ってる時点で、本来必要がない思考が脳のメモリを使用している時点でブレてるぞ、と思うことがよくある。精神論を持ち込むのは色々な側面でマイナスに働くので、こういった思考になりがちな人はもう少しドライに打つのがおすすめだ。

麻雀は元々が乱数の暴力ゲームだ。100回200回程度の試行回数でも実は全然安定しない。30とか50くらいの半荘数に切り取ると何が起きても不思議ではないくらいの暴れ方になるし、現に私自身も雀魂では50半荘切り取りだと3000ポイント溶かしたこともあれば3000ポイント増やしたこともある。しかしまあ、統計的に考えたら「そんなもん」なのである。普通に誰にでも起き得るレベルの偏りだ。
ちなみに3000溶かした時は流石に「Yostar許さねえ」という気持ちになったが、これは牌操作うんぬんという話ではなく、2トップ1ラスで微減になる、聖3坂の馬鹿みたいな傾斜を決めたゲームデザイナーに対してである。Yostar許さねえ。

話が長くなってしまったが、思考のパターンというか、自分の癖みたいなものを認識すると対処がしやすくなると思う。私自身は、「怒りを感じたら認知の歪みのサイン」というセルフコントロールを意識的にやるようになって暴言と暴牌が減った。この世には色んなやつがいる。自分がドラ5枚使ってるのにイーシャンテンから地の果てまで押して来るやつもいるし、2者逃げ切りの局面でどれだけアシストしても鳴いてくれないやつもいるし、「暇だから」という考え難い理由でチーするやつもいる。他人の打牌は制限出来ない。ルール上何をしたって構わないし他人が文句を言っていい場面なんて存在しないのだ。私は他人に求めることが少なくなってから、自分自身に対して感じるストレスも大きく軽減した。

麻雀はもっと自由でいいといつも思う。自分自身を含め、プレーに対してある程度の「雑さ」を許容出来るようになると、メンタルゲームとしては格段に扱いやすくなる。最近麻雀に楽しさを感じられなくなってきたな、と感じることがある人は、苦しい時にこれを思い出してもらえたらうれしい。

スキだけでもとても喜びますが、サポートしていただけると執筆時に私が飲むコーヒーのクオリティが上がる仕組みになっています。