昔から麻雀AIに興味があって、ちまちまと麻雀AIを開発してきた。 大学生の時には強化学習をしたくてAI同士を戦わせるための環境を作っていた。

ゲーム系の環境を作るときは、実際にそのゲームをプレイできるUIがあったほうがバグに気づきやすい。そこでReactを使ってUIを作った。

それがこれである。大学生のときに作って未完成のままなので、かなりのバグがある。

最近、また麻雀AIを作る気力が湧いてきたので、このときのコードをリファクタしようと思ったのだが、そこでふと気づいた。

いや、なんでReactでUI作ってんの?

と…。

フロントエンドとバックエンドを分ける方式にすると、データのやり取りをする必要がある。ゲームだとやりとりするデータのパターンが複雑で型定義が面倒だった。

ただでさえ型定義が面倒なのに、麻雀とかいうゲームのルールが複雑すぎるせいで絶対に考慮漏れが発生するので、そのたびに莫大な型定義の修正が発生するのも面倒だった。

もうとにかく面倒くさい。誰だよ、麻雀のルールをここまで複雑にしたやつは!

大学生の時に未完成のまま放りだしたのも、型定義するのめんどくせーって感じだった気がする。

AI部分がPythonならUI部分もPythonで書いたほうが絶対楽に決まっている。データのやり取りをする必要がなくなるし、いちいちReactのサーバを起動する必要もなくなる。将来的にAIと対戦できるようなプラットフォームを作りたい場合でも、まずプロトタイプを作って安定的に動作することを確認してからの方が良い。

冷静に考えたらそうなんだけど、実はこの事実に気付いたのは昨日だ。なんか寝て起きたら気付いた。


自分の方針を疑っていない状態で自分の非効率さに気付くのってマジでむずい。世間の人はどうやってモードを切り替えているんだろう。

良いものを効率良く作るなら常に万物に対して疑問を呈さないといけないんだろうけど、それってめちゃくちゃ脳が疲れそうだな。