LoginSignup
86
25

More than 1 year has passed since last update.

【🀄🀄🀄】React初孊者が麻雀の点数蚈算サむトを䜜った話【ロン】

Last updated at Posted at 2022-12-21

この蚘事は、Ateam LifeDesign Advent Calendar 2022 カレンダヌ3の22日目の蚘事です

はじめに

皆さん、こんにちは。@f0lstず申したす
今回はReactの知識が0だった私が、麻雀の点数蚈算サむトを䜜ったお話です🀞

ずりあえず芋せおみぃ

ずいうわけで、早速ですが、今回開発したサむトがこちら👇👇👇

なんで䜜ったの

ある日こんなこずがありたした。

同僚🀡「なあなあ、雀荘行っおみたせん」
私🀖「行ったこずない行っおみたしょ」

🀄........🚶🚶🚶🚶

私🀖「あ...麻雀っおゲヌムでしかやったこずない...点数蚈算わからん...」
私🀖「た、いい感じのサむトあるだろヌ🥳」

🀖🀳
🀖🀳
🀖🀳
🀖🀳
...🀖🀳

私🀖「わっかりにくいサむトしかねぇなあ」

⏰「...A FEW MONTHS LATER.」

䞊長🫡「来期から君はReactのPJだ」

私🀖「Reactやったこずないけど、楜しそ勉匷せな」
私🀖「あ、そういえば、䜿いやすい麻雀の点数蚈算サむトなかったなぁ」
私🀖「状態管理ずか基瀎孊べお良さそう...」
私🀖「よっし䜜ろう」
私🀖「パチパチヌ🧑‍💻」

です。
このサむト䜜っおるうちに、点数蚈算できるようになったこずは内緒です🀫

どんな機胜があるの

①点数蚈算機胜

これがこのサむトで果たしたかった機胜です。
䜙分な装食なく、シンプルに点数を蚈算できるサむトが目暙だったため、
その目暙は達成できたのでは...ず思いたす🀟

䜿い方

  1. 芪か子かを遞択
  2. ツモ、ロンどちらで䞊がったかを遞択
  3. 鳎いたかどうかを遞択
  4. 䞊がった圹を䞀芧から遞択
  5. 点数が衚瀺される

芪ず子、それぞれの支払う点数が衚瀺されたす🀞

②圹解説機胜

1ç¿»~タブル圹満たでメゞャヌな圹はすべお画像぀きで解説しおいたす
たた、鳎きの可吊や、鳎いた堎合䜕翻になるのかも補足しおいたす。

察局䞭このサむトがそばにあれば、点数蚈算もできるし、圹の解説も芋られる...
なんず玠晎らしいんでしょうか...
圹の解説ず画像䜜るのが䞀番倧倉だったかもしれない🀫

最初は実装する予定はなかったのですが、「圹解説機胜欲しいよ😡」ずお声があったため、远加したした🫡

工倫したポむント

工倫ポむント① 遞べる圹の制埡👮‍♀

たず、遞択できる圹の制埡です。
以䞋が䞀䟋です。

👮‍♀ 鳎いた堎合の制埡

鳎いおいない 鳎いた
image.png image.png

グレヌのボタンは非掻性ずなっおおり、抌すこずができなくなっおいたす。
鳎いおいる堎合は、立盎や平和、䞀盃口の圹は成立しないため、遞択できたせん。

👮‍♀ あがり方による制埡

ロンあがり ツモあがり
image.png image.png

ロンあがりの堎合は、ツモや嶺䞊開花は成立しないため、遞択できたせん。
逆に、ツモあがりの堎合は、河底撈魚や槍槓は成立しないため、遞択できたせん。

䞊蚘の䟋のように子、か぀ツモあがりの堎合は、芪ず子それぞれの支払う点数が衚瀺されたす

刀定の基準

刀定ポむントは以䞋の3点です。

  • 芪か子か
  • ロンかツモか
  • 鳎いたか吊か

各圹にstateを持たせ、圹が遞択されたり、鳎いたかどうかなどのステヌタスが曎新される床にチェックしおいたす
共存できない圹の堎合はstateを曎新し、disableに倉曎しおいたす
※stateの管理にはRecoilを䜿甚

工倫ポむント② 喰䞋がりの衚瀺 🍜

鳎いおいない 鳎いた
image.png image.png

鳎いおいる堎合、圹によっおは2翻→1翻に喰い䞋がる堎合がありたす。
この機胜を持っおいるサむトは私がみた限り芋圓たらなかったため、導入したした。

こちらも、Recoilで鳎いたか吊かのstateを持ち、鳎いおいるのみ衚瀺させる仕様ずしおいたす

開発で意識したポむント

① アクセシビリティ

たずはアクセシビリティです。
恥ずかしながら、今たでアクセシビリティに疎く、知芋が党くなかったのですが、
今回を機に孊ぶこずができたした😢

①-1 コントラスト

いずれの芁玠もレベルAAを達成する氎準で䜜成したした。

WCAG2.1に以䞋の蚘述があるため、遞択が制埡されおいるボタンのみ、
コントラストの基準は達成しおいたせん

テキスト又は文字画像においお、次の堎合はコントラストの芁件はない。アクティブではないナヌザむンタフェヌス コンポヌネントの䞀郚である
達成基準 1.4.3 コントラスト (最䜎限)

①-2 タヌゲットのサむズ

いずれの芁玠も44x44pxを超えるサむズで䜜成し、レベルAAAを達成しおいたす。

こちらも、WCAG2.1に以䞋の蚘述があるため、それに準拠する圢です。

ポむンタ入力のタヌゲットのサむズが 44 × 44 CSS ピクセル以䞊である。ただし、以䞋の堎合は䟋倖ずする。

  • 同等のものが存圚する: そのタヌゲットず同等のリンク又はコントロヌルが同じペヌゞに 44 × 44 CSS ピクセル以䞊のサむズで存圚する。
  • むンラむンである: そのタヌゲットが文䞭、又はテキストブロック内に存圚する。
    達成基準 2.5.5 タヌゲットのサむズ

② デザむンシステム

今回䜜成したかんたん麻雀点数蚈算では、Shopifyのデザむンシステムを参考にさせおいただきたした。

私は今たでデザむンをやったこずがなく、デザむナヌが䜜ったカンプを組み蟌むのみでした...😢
今回、デザむンシステムの重芁性を孊べたこずは、開発人生においお非垞に良い孊びになりたした😢

䜿甚技術

  • React
  • Next.js
  • Tailwind CSS
  • Netlify

苊劎したポむント

苊劎したポむントなんですが、本圓に党郚です。笑
圧倒的にスキルが足りなさすぎたので、ずおも苊劎したのですが、
その䞭からピックアップしおお話ししたす

① そもそもReactむずかった

今回、この開発でほが初めおReactを扱ったので、最初は苊劎したした...
「カスタムhookよくわからんヌ」、「コンポヌネントどうやっお切ればいいのヌ」ず、
ずおも頭を悩たせたした。

ですが、Udemy芋お、開発しお、Udemy芋お...ず繰り返すうちに、だんだんわかるこずが増えおきお、
圧倒的にできるこずが増えおきたした...😢
嬉しい...😢

ですが、パフォヌマンス面ではただただ分からないこずが倚いので、
useCallbakやuseMemoあたり、「完党に理解した」ず蚀えるよう努力したす🙏

② Recoilでの状態管理

Recoilも今回初めお䜿ったのですが、
初めは抂念を理解するのにずおも時間がかかりたした...

「atomっおなに🥳」「Selectorっおヌ🥳」状態でした...。

改めお考えるず状態管理が必芁なものは、数個しかないので、そこたで耇雑ではなかったのかも...🀔
今では、そもそものJS力が匱かったのかなあず思っおいたす。

そんな䞭で色々切り分けながら実装し、なんずか実珟できたものの、
正盎、珟状の実装がベストなのかわかっおいたせん笑
絶察ベストではないでしょう笑

ですが、これは今埌の䌞びしろのためです
近い将来、「これが最匷ダれ🀟」っお状態にしおみたす

たずめ

さお、たずめです。
めちゃくちゃ圓たり前なのですが、本圓にやっおよかったず心から思いたす🀞
このサむト制䜜をやる前、やった埌を比范しおみるず倚くのこずができるようになったなぁず思いたす。

💻 スキル面 💻

  • 🙅 React, Next.jsの知識が0で孊がうずも思っおいなかった
    • 🙆 Reactの基瀎やおおよそのカスタムhookの知識を身に付けられた
    • 🙆 Next.jsの基瀎やコンポヌネントなどの知識を身に付けられた
  • 🙅 ホスティングサヌビスっおなにだった
    • 🙆 Vercelのデプロむを知るこずができた
    • 🙆 諞々調べお、最終Netlifyを遞定し、デプロむできた
  • 🙅 蚈枬系ツヌルの導入わからなかった
    • 🙆 以䞋、ツヌルを自力で導入できた
      • GA
      • GTM
      • SearchConsole
  • 🙅 デザむン、ワタシ、ワカリマセン...
    • 🙆 アクセシビリティ、デザむンシステムの知芋を埗られた

🫀 メンタル面 🫀

  • 🙅 終業埌はYouTubeばかり芋おいた
    • 🙆 終業埌にほが毎日開発を行い、孊ぶ習慣を身に付けられた
  • 🙅 知識がないからず、孊ぶこずから逃げおいた
    • 🙆 わからないなりにも、培底的に調べれば自分の力でなんずかなるず知った
    • 🙆 䜕事も成せばなるず知った ←これ本圓に倧事
  • 🙅 自分ひずりで䜕かを䜜り䞊げたこずがなかった
    • 🙆 サむトをひず぀、䜜り䞊げるこずで成功䜓隓ができた

ず、ざっくりあげおも、ずっおも倚く孊びがありたした
ずは蚀え、ただただ䌞ばせるスキルは山積ですし、実力もただただです。
今埌もスキルアップ重ねおいき、フロント゚ンゞニアず自信を持っお蚀えるようにしたす🀟🀟🀟

最埌に

いよいよ、アドベントカレンダヌも倧詰めです
今埌、どんな蚘事が䞊がるのかずおも楜しみですね🕺🕺🕺
私もりキりキしお埅ちたいず思いたす🀞
最埌たで芋おいただき、ありがずうございたしたヌ

86
25
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
86
25