【個人開発】麻雀の着順条件ツールを作りました

# はじめに

初のWebサービスデプロイです。

# アプリの紹介
![welcome.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/107eceac-ba99-b2f0-f836-39509a5ce804.png)

## サービスURL

レスポンシブ対応（スマホ・タブレット・PCで使用可能）です。

https://mahjong-runk-navi.glitch.me/

## Github

https://github.com/Kohki-Takatama/mahjong_runk_up_navi

:::note info
「着順ナビ」は「どうすれば着順が高くなるか」がわかる麻雀ツールです。
:::

:::note warn
雀魂など「外部ツールの使用」が禁止される環境での使用は想定していません。
友人との麻雀や、振り返りなどでお使いください。
:::

## 使い方

|  |
|:-:|
| ![スクリーンショット 2024-06-04 14.16.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/db8ebf11-c4eb-baee-0d56-2f0ec020c8ab.png)|
| 入力が必要なのは赤枠の5箇所です。  |

|  |
|:-:|
| ![スクリーンショット 2024-06-04 15.08.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/fbf0930c-f570-506b-fdc2-edf75089ed3c.png)|
| 入力し、右のタブをクリック、またはスワイプ  |

|  |
|:-:|
| ![スクリーンショット 2024-06-04 15.11.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/22659231-b034-a6bf-c0d7-f7a033bcefe9.png)|
| 何翻・何符の役で着順が上がる / 下がるかを表示  |

## 技術構成

|         |                                 |
| ------- | ------------------------------- |
| フロントエンド | TailwindCSS, daisyUI, Hammer.js |
| Webサーバー | Node.js                         |
| インフラ    | glitch.com                      |

## こだわったポイント

### UI

「説明無しに使える」UIにできたかなと思います。

## レスポンシブ対応

スマホでも使えるよう、以下の点を考慮しました。

- Hammer.jsを使用しスワイプに対応しました。
- タブを分割し、狭い画面でも見やすい表示にしました。

## 画像の表示・favicon

少し殺伐としていたので、サイト訪問時に画像を表示
faviconも作成し、見た目を整えました。

## Twitter Card

Twitterでの告知もリッチな見た目にしたいと思い、Twitter Cardに対応しました。

https://x.com/SamuraiStats/status/1795391365171524039

# 次回やりたいこと

「次回」があればやりたいこと

## サービス名に「麻雀」を入れる

語呂の良さで「着順ナビ」にしましたが、「麻雀」を入れたほうが検索に引っかかる、
つまり需要に対し供給できるかなと思います。

せっかく作ったので、より使ってもらいたいですから。

## 入力をより簡易に

現在、入力に26秒ほどかかります。長い。

### 案1 画像解析

OpenAI APIを使用して画像から点数を抜き出す方法です。

|                                                                                                                                                        |                                                                                                                                                    |
| :----------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |
| ![スクリーンショット 2024-06-04 11.27.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/eca55d37-287b-285d-9b3c-2ac32158c23a.png)<br> | ![スクリーンショット 2024-06-04 11.03.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3457770/0122b4a4-be20-df5f-4042-7857dbad8ee3.png) |

<details><summary>プロンプト</summary>

:::note
スクリーンショットから以下の情報を抜き出してください：

各プレイヤーの点数
スクリーンショットの中央にある点数表示パネルに注目してください。
各プレイヤーのアイコンの隣に表示されている点数を読み取ってください。

供託のリーチ棒と本場情報
スクリーンショットの中央にある点数表示パネルの下部に注目してください。
「リーチ棒」と「本場」の数値を確認してください。
「リーチ棒：0」
「本場：0」
このようにして、各プレイヤーの点数および供託のリーチ棒と本場の情報を正確に読み取ってください。
:::

</details>

画像の通り、成功はしています。

問題は、雀魂のガイドラインです。

https://mahjongsoul.com/news/20

このツールの使用は「外部ツールの使用」にあたると思われます。
そんな中で、雀魂に特化した機能を提供するのはいかがなものかと思います。

「外部ツール」の詳細については公的な説明はありません。
少なくとも「外部のツール」全般が禁止されてはいません。
例えば、雀魂公式で解説をするようなプロ雀士がnagaを使用して牌譜振り返り配信をしています。

しかし、公式の説明が変わるまで、開発はしない予定です。

## 案2 入力フォームの改善

- 1つの入力フォームで連続入力機能
- 末尾の00を入力不要に

入力の速さと、最初の馴染みやすさのどちらを取るかの問題です。

今回の開発では、馴染みやすさを取ったUIにしました。
しかし、「自分が一番のユーザーになるアプリ」であるため、入力の速さを優先したほうが良かったかなと思います。

以下は簡単な動作イメージです。

<p class="codepen" data-height="300" data-default-tab="result" data-slug-hash="jOomLXe" data-pen-title="Qiita_runk_navi" data-user="Kohki-Takatama" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;">
  <span>See the Pen <a href="https://codepen.io/Kohki-Takatama/pen/jOomLXe">
  Qiita_runk_navi</a> by Kohki_Takatama (<a href="https://codepen.io/Kohki-Takatama">@Kohki-Takatama</a>)
  on <a href="https://codepen.io">CodePen</a>.</span>
</p>
<script async src="https://cpwebassets.codepen.io/assets/embed/ei.js"></script>

# おわりに

改善点はあるものの、満足のいくサービスが作れたと思います。

同様の実装をしようとしている方がいれば、いつでも相談してください！