手牌
牌面の切り出しとテンプレート照合などで牌を読みます。副露で手牌が短くなった場合や、離れたツモ牌の位置も区別します。判断に使った牌と、実際にクリックする位置が対応していることが必要です。
HOW IT WORKS
このサイトは、雀魂の画面を認識して操作する自動対局システムの記録です。どのように判断し、何を成績として数えているのか。結果を確かめながら読めるようにまとめました。
説明の確認日:2026年10月28日 · 現在の実装と、公開データの集計仕様に基づく説明です。過去の対局には異なるバージョンや設定が含まれます。
01 / OVERVIEW
自動対局を動かすプログラムと、この閲覧サイトは別です。Pythonの操作者が画面取得・クリック・記録を担い、TypeScript側が牌認識や候補評価を担います。成績ページは出力された記録を表示する静的なアーカイブです。別のライブ観戦ページでは、対局PC上のDocker配信サービスからWebSocketで最大3fpsの映像を受け取ります。音声や操作機能はなく、ログイン・ロビーなど対局以外の画面は待機表示になります。
02 / VISION
ブラウザの画面を取得し、手牌やボタンなど、校正した領域を切り出して認識します。ログイン画面、ロビー、マッチング、対局中、局結果、最終結果などを分類し、状態に応じた処理へ進みます。画面サイズや牌の配置が違えば、同じ座標をそのまま使えるとは限りません。
牌面の切り出しとテンプレート照合などで牌を読みます。副露で手牌が短くなった場合や、離れたツモ牌の位置も区別します。判断に使った牌と、実際にクリックする位置が対応していることが必要です。
ドラ表示、河、副露、リーチ表示などを認識します。force-autoでは別プロセスで更新し、期限内のキャッシュを判断に利用する構成があります。未認識の情報を、確認済みの情報と同じ精度で扱えるわけではありません。
通常34種を読むcvmajと赤5判定を補うAutoMajsoulを組み合わせた認識器も使います。認識方式は処理対象や設定によって異なります。画面のアニメーション、牌へのホバー、影、描画の遅れは誤認や古い画面の再利用につながるため、複数フレームの一致や画像の更新状況も確認します。
認識スコアは「正解確率」ではありません。 類似度やconfidenceが高くても誤認は起こり得ます。同じ誤認が複数フレーム続くこともあり、フレーム一致だけで正しさを証明することはできません。
03 / DECISION
ローカルの処理で候補を計算し、Jevを有効にしている場合は構造化した局面と候補を渡して判断を求めます。スクリーンショットや認証CookieをJevへ送る構成ではありません。現在のforce-autoでは先にローカル判断を確保し、Jevが時間内に合法な応答を返した場合に採用します。期限超過・通信失敗・不正な応答ならローカル判断へ戻り、採用元と理由を記録します。
force-autoのJev待機上限は既定2,300ms、クリックまでの予算は既定2,600msです。認識にかかった時間やクリック直前の処理分を差し引いて、実際の待機時間を短くします。これは設定上の予算であり、すべての操作がその時間で完了したという実測保証ではありません。
他家の手番中に、現在の手牌からタンヤオ・役牌・七対子・対々和・混一色などの狙いを検討する処理があります。狙いは戦術的に近い候補を選ぶ補助で、牌効率や安全度に反するときや、手牌が変わって計画が合わなくなったときは破棄します。
チー・ポン・明槓は、ボタンが出たという理由だけでは選びません。対象牌、役の見込み、シャンテン改善、受け入れ、推定打点、守備の低下、巡目と点差を比較します。Jevはローカルで不認可とされた鳴きを上書きできません。
推定と実測は別です。 現在のheuristic-v4が出す和了確率・放銃確率・局収支期待値は、候補比較のための近似値です。実戦ログで校正された確率ではなく、サイトの実際のトップ率とも異なります。
04 / EXECUTION
クリック直前に画面が変わっていないか確認し、実行後は手牌や自分の河の変化を確認します。打牌では、選択した牌を除いた手牌になったかを照合する処理があります。鳴きではボタン消失だけで成立とせず、手牌と自家副露領域の変化を確認し、チー・ポン後の打牌待ちと、明槓後の嶺上牌待ちを分けます。
| モード | 役割と条件 |
|---|---|
| Observe / Advisor | 画面の構造化や推奨表示が中心です。通常のAdvisorはクリックしません。明示設定した限定的なローカル打牌モードは別です。 |
| Auto | 認識・公開情報・Jevの判定や認証条件を要求します。条件が揃わない場合はクリックしません。打牌以外のアクションには個別の証明条件があります。 |
| force-auto | 実験用の別モードです。認識confidence、Jev confidence、Autoやアクションの証明書などを操作許可条件に使いません。座標・画面変化・操作後確認などは残りますが、誤打牌や誤操作は起こり得ます。 |
掲載対局のすべてが通常Autoの厳格な条件を通過した、という意味ではありません。過去の実行には設定変更、停止・復旧、異なる実装が含まれます。対局詳細にある実行記録やコミットは、その違いを確認する手がかりです。コミットが記録されていないものは「未確認」と表示します。
05 / DATA PIPELINE
日時は日本時間(JST)で表示します。段位戦・友人戦などの種別と一部の時間設定は実行名から分類します。時間設定の表示は、その設定画面を独立に確認した証明ではありません。操作期限は記録値を表示し、欠けている項目は未確認として残します。
公開対象は抽出した対局データと結果画像です。元の運用ログ全体、認証情報、ブラウザプロファイルは配信しません。結果画像に映っている対局内容は、画像を通して閲覧できます。
リアルタイム配信ではありません。 表示中の記録は更新日時時点のスナップショットです。新しい対局を反映するには、記録の再生成とサイトの再公開が必要です。
06 / METRICS
| 表示 | 数え方 |
|---|---|
| 対局数 | 対象の種別・日付・検索条件に合う、終了確認済みの対局数。順位が未確認の対局も含みます。 |
| 平均順位 | 最終順位が確認できた対局の順位合計 ÷ 順位確認済みの対局数。小さいほど上位です。 |
| トップ率 | 1位の対局数 ÷ 順位確認済みの対局数 × 100。1局ごとの和了率ではありません。 |
| ラス率 | 4位の対局数 ÷ 順位確認済みの対局数 × 100。 |
| 未確認 / — | 確定情報がない項目です。順位統計には入れず、点数や確率の0としても扱いません。 |
一覧上部の統計は順位フィルター適用前の集計です。「1位」を選ぶと一覧とCSVは1位だけになりますが、トップ率が100%になるような再計算はしません。「すべての記録」では種別を混ぜたトップ率・平均順位を出さず、段位戦と友人戦を分けて読みます。
グラフには数値表もあります。CSVは現在の絞り込み条件に対応し、未確認値の空欄は0を意味しません。
07 / WIN EVIDENCE
「役の分析」は、操作者がクリックしたロン・ツモの履歴と、その後最初の局結果画像を関連付けた記録です。同じ実行区間で対局終了まで確認できたものだけを採用します。ロン/ツモの操作記録は、画像で実際の和了方式や点数を確認した記録とは区別します。
新しい記録機能では、自分の和了操作後に0.5秒間隔で最大15秒・30枚の画像を保存します。役表示のアニメーション途中の1枚だけに頼らず、連続画像から確認できるようにするためです。次の局や最終結果が確認できた場合は早期終了します。役名をOCRで自動確定する処理ではありません。
過去画像のレビューは、和了IDと原画像のSHA-256の両方が一致する場合だけ適用します。2026年10月27日の目視確認では189枚中16枚で一部の役名が読め、173枚は表示前・表示途中で未確認でした。これは過去レビューの範囲であり、現在の全記録数を示す固定値ではありません。
08 / VALIDATION
ライブの機能・回帰テストは、友人戦の300+0秒設定で、操作者の期限を300,000msと明示して行う方針です。この条件は認識・操作・復旧・結果保存の動作確認用です。短い持ち時間で同じ処理が間に合うことや、段位戦での勝率を証明する条件ではありません。
掲載している終了対局だけでは、中断・未完了を含むすべての実行の成功率は計算できません。また、対局には複数の実装や停止・復旧が混在するため、集計値の改善だけで特定の変更が強さを改善したと結論付けることもできません。
結果画像は順位や点数の根拠を確認する材料ですが、勝った対局の打牌すべてが正しかったことを意味しません。打牌の良し悪しを比較する評価では、局面ごとの正解ラベルや条件を揃えた検証が別途必要です。