見出し画像

麻雀AI・Mortal牌譜検討から悪手を計算するアプリケーションを作ってみた

初めまして。ゆくるーずと申します。
人に求められた訳ではなく100%私的利用目的ではあるのですが、初めてwebアプリケーション開発(といっても開発と言えるほどハイレベルなものではありませんが…)を行ったので公開してみようと思います。

開発したアプリケーションは
「Mortal牌譜検討 悪手計算ツール」

です。


開発に至った経緯

家族の勧めで今年に入ってから雀魂を始め、最近行き詰まりを感じるようになりいろいろ調べていたところ自分の打牌を評価・指摘してもらえる麻雀AIに出会いました。
NAGAの方がレベルが高い(天鳳十段相当)と言われていますが、わたし(天鳳最高三段)にとってはMortal(天鳳七段相当)でも十分勉強になるし無料なので好きなだけ使える、ということでMortalを利用し始めました。

ただ、Mortalの難点は「どうしてこの打牌なのか」あるいは「どうしてこの打牌はだめなのか」といった点について詳細を教えてもらえないことです。
自分なりに考えても限界がありますし、そもそもそこまで考えが至らないから打牌がうまくないわけなので。
そこで、Mortalをより有効活用する方法はないかということを調べていたところ「悪手」というパラメータに出会い、簡単に算出できるようwebアプリケーション開発を行いました。


「悪手」について

麻雀AI・NAGAにより悪手率と段位の関係について「段位が上がるほど悪手率が下がる」ことが報告されています。
このことからMortalにおいても自身の悪手の数や割合を把握することは成長につながると考えました。
算出される数値については「少ないほど」「低いほど」良いです。


利用方法

  1. http://yucruise.starfree.jp/calc/にアクセスする

  2. 悪手を計算したいMortal牌譜検討のURLをフォームに入力する

  3. 計算ボタンを押す

以上3ステップです。

デフォルトではNAGA同様、「推奨度5%未満打牌」を悪手として悪手数・悪手率の計算を行っていますが、右上のアイコンから任意でその数値を変更可能です。
ただこのツールの目的が「悪手」を算出することであるため、例え「推奨度100%未満打牌」と設定し計算を行っても全ての打牌が該当するのではなく、Mortalが第一選択としなかった打牌のみカウントされる仕様となっています。
また、任意で設定された数値は1回ごとにリセットされます。(これは単にわたしの力不足です…)(2023/6/20のアップデートで改善しました)

また、どの対局かわからなくなることを防ぐ目的と、他のパラメータと比較する目的から「Mortal牌譜検討の生成日時」「AI一致率」「(記載があれば)rating」も同時に確認できる仕様にしています。

極力エラーがでないよう生じうるエラーについてはあらかじめ対処してありますが、何分素人が作ったアプリケーションですのでなにか不具合があった場合はご一報いただけると大変嬉しいです…。

あと、まだまだMortalを使いこなせていないので「このパラメータも合わせて知りたい」とかあれば教えていただきたいです。。本当にただの実力不足なので…。


アップデート情報

アップデート内容の詳細は以下から確認が可能です。
最終更新日:2023/6/20


【おまけ】素人によるwebアプリケーション開発の裏側

今回のアプリケーションに使用した言語は

  • PHP

  • HTML/CSS

  • JavaScript

の3種類です。

本当はHTML/CSSとJavaScriptのみで実装したかったのですが、クロスドメイン通信の制約が立ちはだかり、それならPHPメインで作ろうと図書館で借りた1冊の書籍を基に開発に取り組みました。

どの言語についても素人が趣味で独学したものなので、「これなら任せろ!」と言える言語がないのが残念ですが、PHPについてはWordPressで少し触った程度の知識から、簡単ではあるけれどもアプリケーション開発までできて楽しかったです。
それにしてもChatGPTはすごかった…!彼?彼女?の力が無かったら3倍の時間は要していたことでしょう。

次はデータベースを用いて解析結果を集計できるツールを作りたいなと思っているところですがいつになることやら。

駄文を最後までご拝読いただき有難うございました。
皆さまよい麻雀、プログラミングライフを!


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