概要
オンライン麻雀ゲーム 天鳳 (https://tenhou.net/) では一部の対局の牌譜をダウンロードできます。牌譜には対局の完全な履歴が記録されており、統計解析・機械学習・自作プログラムの検証などに広く利用されています。
しかし、牌譜ダウンロード用のプログラムは複数存在するものの散在しており、結果として車輪の再発明が繰り返されています。
本記事の目的は既存の公開プロジェクトを一覧化し、重複開発を減らすことです。
※注意事項
- 本記事で紹介するプログラムはすべて有志による公開物であり、利用は自己責任です
-
天鳳のログ・牌譜の利用規約を必ず事前に確認してください。特に以下は禁止されています:
- 天鳳と競合する製品への開発・応用を目的とした牌譜の利用
- 天鳳での対戦を必要としないサービスへの応用
- 不特定多数が天鳳の牌譜をダウンロードするサービスの作成
- 天鳳のサーバーやネットワークに過度な負荷をかけないよう、ダウンロード速度やアクセス頻度には十分に注意してください。短時間に大量のリクエストを送るとアクセス制限を受ける可能性があります
- 天鳳公式 X アカウントより牌譜のダウンロードは同時に 1 セッションまでと明言されています。複数セッションでの同時ダウンロードは禁止です
牌譜のダウンロードは同時に1セッションでお願いします。1つの接続元から同時に数百以上のセッションでダウンロードする行為はご遠慮ください。
— つの+天鳳公式 (@tsuno_s) June 22, 2024
掲載基準
- 牌譜ファイル (拡張子
.mjlog、 中身は gzip 圧縮された XML) のダウンロード機能があるもの - ログファイル (牌譜再生用の URL 一覧をまとめたファイル) のダウンロード機能は不問
プログラム一覧
MahjongRepository/phoenix-logs
- リポジトリ URL: https://github.com/MahjongRepository/phoenix-logs
- ライセンス: MIT ライセンス
- 言語: Python
特徴
- 今年分の対局 ID 取得が可能 (1/1 ~ 7 日前と直近 7 日分の両方に対応)
- 役満和了が発生した牌譜 (四人麻雀のみ) の対局 ID 取得が可能
- 別途ダウンロードした年次ログファイルからの対局 ID 取得が可能
- SQLite DB に対局 ID・牌譜を保存 (DB からの牌譜エクスポート機能なし)
- デフォルトでは牌譜ダウンロード時のセッション数が 3 になっているため、オプション引数で 1 に変更すること
mthrok/tenhou-log-utils
- リポジトリ URL: https://github.com/mthrok/tenhou-log-utils
- ライセンス: MIT ライセンス
- 言語: Python
特徴
- 1 ファイルずつ対局 ID を指定する
trineutron/mahjong
- リポジトリ URL: https://github.com/trineutron/mahjong
- ライセンス: MIT ライセンス
- 言語: シェルスクリプト
特徴
- 別途ダウンロードした年次ログファイルからの対局 ID 取得が可能
- ダウンロード対象に合わせて
src/download.shの編集が必要
Apricot-S/houou-logs
- リポジトリ URL: https://github.com/Apricot-S/houou-logs
- ライセンス: MIT ライセンス
- 言語: Python
特徴
- 今年分の対局 ID 取得が可能 (1/1 ~ 7 日前と直近 7 日分の両方に対応)
- 役満和了が発生した牌譜 (四人麻雀のみ) の対局 ID 取得が可能
- 別途ダウンロードした年次ログファイルからの対局 ID 取得が可能
- SQLite DB に対局 ID・牌譜を保存 (DB からの牌譜エクスポート機能あり)
- 「ログの自動ダウンロードについて」のルールに準拠するための機能あり
- 最後の最新対局 ID 取得から 20 分以内は取得処理をキャンセルする
- FileIndex の size をチェックし前回の取得時と同じなら取得をスキップする
参考
牌譜ダウンロード方法の解説
- 麻雀牌譜解析のすすめ byほしきゅー | PPTX | Web Design and HTML | Internet
- 牌譜のダウンロードの方法|みーにん
- 麻雀にどんよくです:天鳳牌譜解析をはじめたい人へ - livedoor Blog(ブログ)
- 天鳳からログデータを取得するプログラムまとめ #Python - Qiita