1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

イントロダクション【データで見る麻雀①】

1
Last updated at Posted at 2026-08-11

注意書き

この記事は、著者が個人開発の中で調べたことや試したことを整理した備忘録として書いています。
あわせて技術記事という性格上、実際に手元で試す場合は原典や実装、前提条件を確認したうえで各自の責任で扱ってください。

はじめに

ここ数年、Mリーグの中継やプロが自分の対局を振り返る配信で、強い打ち手が「何を考えて打っているのか」を聞ける機会がずいぶん増えました。私個人は特にKADOKAWAサクラナイツの堀慎吾選手の牌譜検討配信をよく視聴しています。

そこではプロならではの深い読みも言葉で説明されます。「この捨て牌なら、このあたりは持っていない」「この手出しがあるならここにブロックがある」。聞けばなるほどと思いますし、自分が打つときにも頭に残ります。

ただ、自分が受け取れているのは「そういう見方があるらしい」というところまでです。読み自体は筋が通っていて、おそらく正しいのだと思います。それでも自分の中では「ぼんやりした知識のまま」で、実戦でうまく使えている実感がありません。

「このあたりは持っていない」と言われても、実際にどのくらい持っていないのか。序盤なら効いて中盤では効かないのか。切られたのが2なのか4なのかで変わるのか。切った牌の内側と外側で差はあるのか。こうした点が整理できていないため、結局は何となくの感覚で打つことになります。

同じ局面が二度と訪れない麻雀だからこそ、多様な状況においてその読みがどう機能するのかを細分化して検証する意義があります。しかし、実戦を自分で打ちながら確かめるには、サンプル数も時間も圧倒的に足りません。

そこで、天鳳の牌譜データを用いてデータ分析を行い、「読みの精度を上げるために、セオリーを統計的に検証してみる」。それがこのシリーズの出発点です。

このシリーズの目的

麻雀には「読み」のセオリーが数多く存在します。

  • 序盤に切った牌の周辺は持たれていない
  • 間隔を空けて手出しされた牌の周りにはブロックが残っている
  • 第一打が役牌なら役牌の対子は持っていない

こうしたセオリーはたいてい経験則として語られ、「どのくらい効くのか」「どの条件で強く、どの条件で崩れるのか」は曖昧なままです。一口に「持っていない」と言われても、何巡目までの打牌なら信用してよいのか、切った牌の内側と外側でどう違うのか、といった部分は打ち手の感覚に委ねられています。

このシリーズの目的は、「麻雀における読みのセオリーをデータ分析によって検証し、より実践的な手牌読みの知見を抽出すること」です。セオリーを牌譜データで1つずつ数値化し、実戦で使える形に落とし込むことを目指します。

構成は大きく2部に分かれます。

第1部: 麻雀における「読み」をデータ分析で検証する
既存のセオリーを1テーマずつ取り上げ、牌譜での成立率と効果量を測ります。牌の種類や巡目など条件を変えながら、セオリーを細分化して検証します。

第2部: 手牌予測モデルを作る
第1部で得られた個々の知見を統合し、捨て牌から相手の手牌を確率的に推定するモデルを作ります。単発の読みの積み重ねではなく、牌ごとの所持確率の分布として出力することを目標にします。

使用データ

出典

天鳳の牌譜を MJAI 形式に変換して公開しているデータセット tenhou-to-mjai を使わせていただきます。リポジトリの説明を引用します。

Complete collection of Tenhou phoenix room (鳳凰卓) game logs in MJAI format, spanning 2009–2026.

All datasets contain only 4-player (四人麻雀) hanchan (半荘戦) games from the houou (phoenix) room.
No 3-player or tonpuu (東風戦) matches are included.

天鳳の鳳凰卓(4人打ち・半荘のみ)の牌譜が、2009年から年次アーカイブで配布されています。東風戦と3人麻雀は含まれません。

本シリーズで対象にするのは 2025年分(178,888半荘) です。

鳳凰卓は、一定の条件を満たした打ち手だけが入れる上位卓です。読みのセオリーを検証するなら、そのセオリーが実際に使われている母集団のほうが適していると考えて選びました。

ライセンスとクレジット

データセットのライセンスは以下の通りです。

Data License

The datasets are licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).
You may redistribute, remix, and build upon the data with proper attribution.

元データの出所と権利についても、リポジトリの記載を引用します。

Data Sources

Data is derived from:

  • Tenhou.net (天鳳) — Phoenix room (鳳凰卓) game logs

All rights to original game data remain with their respective owners. Converted datasets are redistributed for research and educational use under CC BY 4.0.

MJAI 形式への変換には、以下のツールが使われています(同リポジトリの Attribution より)。

  • Mortal — MJAI 形式のターゲットとなる麻雀AI
  • mjai-reviewer — JSON から MJAI への変換(convlog
  • mjlog2json — 天鳳の XML ログから JSON への変換

全員の手牌が復元できる

MJAI は麻雀AI向けの形式で、局の開始・ツモ・打牌・副露・リーチといった出来事が時系列に並んでいます。点数や役の内訳までは入っていませんが、このシリーズで必要なのは手牌なので支障ありません。

このシリーズにとって重要なのは、「局の開始時点で、4人全員の配牌が記録されている」という点です。

配牌が分かっていて、以降のツモ・打牌・副露がすべて並んでいるということは、「任意の時点における全員の手牌を再構成できる」ということです。

読みの検証は本来「見えない情報を当てる」問題ですが、牌譜の上では「この捨て牌のとき、相手は実際に何を持っていたか」を対局の数だけデータ化することができます。

共通の前処理

各回でテーマは変わりますが、次の扱いは全記事で共通です。

  • 巡目は「そのプレイヤーの打牌回数」で数える
    ツモ回数ではありません。副露が入るとツモが席順どおりに回らないため、打牌回数のほうが「何枚捨てたか」という捨て牌の見え方に対応します。
  • 赤5は通常の5に統合する
    残す/切るの判断は違いますが、形の読みとしては5です。
  • リーチ後は除外する
    測定時点までに誰か1人でもリーチを受理していたら、その局のそれ以降を集計から外します。リーチが入ると以降の打牌は強制ツモ切りかベタオリに偏り、「手作りの跡としての捨て牌」という前提が崩れるためです。
  • 1と9のように、端から同じ距離にある牌はまとめて数える
    1と9、2と8、3と7、4と6 はそれぞれ左右をひっくり返した関係なので、分けて数える意味がありません。1/9 2/8 3/7 4/6 5 の5種類にまとめます。
  • 位置は言葉で書く
    切った牌から見て中心(5)方向を「内側」、端(1や9)方向を「外側」と呼びます。「3を切ったときの4」は1つ内側、「3を切ったときの2」は1つ外側です。
  • 巡目の偏りは回ごとに扱いが違う
    条件の成立が巡目に依存するテーマでは、対照群を条件群の巡目分布に合わせて標準化します。補正が結論を変えた例は該当回で詳しく扱います。

記事一覧

随時更新します。

第1部: 麻雀における「読み」をデータ分析で検証する

タイトル 状態
「序盤に切った牌の周辺は持ってない」って本当? 準備中

第2部: 手牌予測モデルを作る

準備中です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?