はじめに
こんにちは。
みなさん、いかがお過ごしでしょうか。
僕は、仲間で麻雀をするのが楽しみの一つなのですが、この状況下、みんなでそろって麻雀することは控えております。
そこでzoom飲み会ならぬ、zoom麻雀をしております(笑)
オンライン麻雀で、仲間用の部屋を作ってそこに集まって、zoomで会話しながら麻雀をするって形ですね。
これがなかなかスムーズで快適で、みんなとも色んな話ができて楽しいです(^^)
ただ、1つの難点を除けば、、、
難点とは
難点とは、そう!
チップのやり取りができない!
麻雀は、点数そのもののやり取り以外に、「チップ」というのを使って、和了(あが)り方によって、点数とは別に何枚払う/もらう、みたいなルールも追加できるんですね。
和了ったときに、
- 赤いドラがあったら1つにつきチップ1枚
- 裏ドラがあったら1つにつきチップ1枚
- 役満あがったら5枚
などなど。
まぁ、このルールは仲間の中で好きに決めますがw
ないなら作れ
初めて仲間内でzoom麻雀したのがある日の金曜日だったんですね。そのときは、「あー、これだとチップやり取りできないねぇ」ってなったんですが、ぼくはITエンジニア。
「じゃ、作るわ!」
と、言いました。
この時に、構想とかあったわけじゃないんですけどね(笑)
で、土曜の朝から構想して、日曜の夕方に麻雀仲間に
「できたよー」
と、できたのが、これ!
チップくん
https://mahjang-chips.an.r.appspot.com/
システムの流れ
- 主催者が面子(メンツ)を設定する。
- 生成されたURLをメンツに連絡する。
- 全員、同じURLにアクセスする。
- そこの画面でチップのやり取りを行う。
と、シンプルなもの。
この通り、画面としては、3つだけ。
チップのやり取りを行う画面では、
- チップの枚数の増減ボタン
- 増減の確定ボタン
- 画面の更新ボタン
があるのですが、2,3の処理は非同期処理にて実装しました。
ボタンを押すたびに画面ごとリロードするのは、ダメだな、ってことで。
システム構成
このサービスを運用するのに、できるだけお金かけたくないなぁっと思って色々検討した結果GCP(Google Cloud Platform)を使うことにしました。
最小のVMならタダっぽかったんで。
あとは、データベースをどうするか考えたんですが、使ったことないけど「Datastore」にしました。
エンティティはたった1つだけです(笑)
- Chips
- プレイヤー4人の名前
- プレイヤー4人のチップ数
- キーとなるID
- 作成日
GCPの要素は以下です。
- GAE
- Python
- Flask
- Python
- Datastore
以上!
初めてGAE、Datastore使ってみましたが、ドキュメント読みながらでなんとかなるもんですねー。
いやー、時代は進んでますね(笑)
詳しいことは、ソースを見てもらったほうが早いと思うので、Githubのリンクを張っておきます。
今後の展望
- リファクタリング
2. 急いで作ったので、コピペが多い
3. ループですっきりする箇所がいくつもある - 試合結果のOCR
5. 試合結果の点数が画像であるので、それをOCRしてテキストにしたい
って感じですー。
最後に
今、苦しく厳しい状況ですが、大なり小なり、ITのチカラで課題を自分なりに解決していけたらいいなぁ、って思っています。
自分ができることを考えて、世の中に発信していきたいと思います。
チップくん、よかったら使ってみてくださいねー!(^o^)/
ステイホームだけど、楽しく過ごしていただける一助になれば幸いです。
ではでは。
2021/06/09
チップ君が生まれ変わりました!!
以前のものは、良かれと思って作り込んだもの実際は使いづらかった。。。。
なので、一気にシンプルに作り直しました!!
よかったら使ってみた下さい!
目玉機能は
チップのやりとり履歴が見れる!!