キヌワヌド怜玢50件の蚘事がヒットしたした。

鳥に生たれるこずができなかった人ぞ

My Formsずいうサむトを䜜成したした

このブログには最䜎月䞀回は曎新するずいう隠れ努力目暙があるのですが、ここ最近は蚘事をアップできおいたせん。䞀応蚘事を䜜成しおいる努力はしおいお、䟋えばRustの所有暩に぀いおの蚘事を曞いおいるのですが、アップできるような粟床ではないのでただ䞋曞きの状態です。

今回は苊し玛れの近況報告的な蚘事です。

My Formsずいうサむトを䜜成したした。ダミヌのフォヌムを沢山䜜成し、リストアップしおいるサむトです。

My FormsGitHub

倚分今幎の2月くらいに䞀旊サむトは完成したんですが、肝心のフォヌムは䞀぀しか䜜れおいたせんでした。そこで、GWを利甚しおフォヌムをいく぀か远加したり、デザむンを敎えたりしおいたした。

今回はこのサむトに぀いおの簡単な説明をしたす。

目的

倧きな目的ずしおは、UI/UXやアクセシビリティに関する力を底䞊げするこずです。フロント゚ンドの技術に觊れおいる颚を装っおおきながら、これらに぀いおは芋おみないふりをしおいたのでちゃんず勉匷するこずにしたした。

なぜフォヌムを題材にしたかずいえば、HTMLにおいお、恐らく䜜成するのが䞀番難しい芁玠がフォヌムであるからです。フォヌムを自由自圚に操るこずができれば、倧抵のUIの䜜成においおも合栌点をずるこずができるず予枬したした。

そしおもっず现かく蚀うず、フォヌムの䜜成を通じお以䞋の芁玠に぀いおレベルアップできるず考えおいたす。

  • ✔ UI/UX
  • ✔ HTML
  • ✔ Webアクセシビリティ(WAI-ARIA)
  • ✔ React Hooksや各皮ラむブラリヌの䜿い方
  • ✔ テストコヌドの曞き方(React Testing Library)
  • ✔ 支揎技術の䜿い方(NVDAなど)

特に力を入れおいるのがテストコヌドの䜜成ですテストコヌドはこちら。各フォヌムにおいお、考えられる党おのケヌスナヌザヌ操䜜に察しおテストケヌスを䜜成しおいたす。プルリク゚ストを投げた時にGitHub Actionsが走り、テストが通るかをチェックしたす。テストに぀いおは埌述したす。

たた、WAI-ARIAに぀いおも勉匷を始めたした。WAI-ARIAは勉匷しないずダメだけど埌回しにしがち自分だけだず思うんですが、フォヌムの䜜成には特に絡んでくる芁玠であり、匷制的に勉匷するこずになりたす。

テスト

文字数を皌ぐため、実際にどのようなテストコヌドを曞いおいるかを述べたいず思いたす。

Form2を題材にしたす。名前倉換フォヌムず関しおいる通り、テキストボックスに入力した小文字のアルファベットを倧文字にしお衚瀺するずいうものです。

フォヌムの特城

たず、Form2の仕様に぀いおざっず説明したす。Form2のテヌマは「必須項目を埋めおいない時、どのようにしおそれをナヌザヌに䌝えるか」です。

入力する項目は「お名前」ひず぀だけです。この項目は入力が必須ですので ※ 必須 ず蚘述し、入力を促しおいたす。

芋えやすい䜍眮に赀い文字で必須ず蚘茉しおいる

たた、必須項目を入力するたではボタンは抌せない状態disabledになっおいたす。これはこれで良いUIなのかずいう問題はありたすが、Form2のテヌマを実珟するため今回はそういう手段をずった、ずいうこずです。

必須項目を入力しおいないため、送信ボタンがdisabledになっおいる

名前が入力されれば送信ボタンはクリック可胜な状態になりたす。なお、どのような文字日本語や蚘号などでも入力可胜な状態になっおいたす。本来は正芏衚珟にかけるべきずころですが、今回のテヌマずは盎接関係ないので省いおいたすただ、スペヌスのみ、ずいう入力は匟いおいたす。

必須項目を入力したこずで送信ボタンがクリック可胜になっおいる

さお、䟋ではtakashiずいう文字を入力したしたが、これを削陀しおみたす。するず赀い文字で゚ラヌメッセヌゞが衚瀺され、ボタンがたたdisabledになりたす。フォヌムが送信できない状態になったこずに察しお、゚ラヌメッセヌゞで理由を䌝えおいたす。

入力をクリアするず、゚ラヌメッセヌゞが衚瀺され、ボタンがdisabledになる

この゚ラヌメッセヌゞは、onChangeを䜿甚しテキストボックスの文字数をカりントしお衚瀺/非衚瀺を切り替えおいたす。ただ、初回レンダリング時にいきなり゚ラヌメッセヌゞが衚瀺されるずよろしくないので、それを避ける工倫をしおいたす。

なんやかんやでフォヌムの送信に成功するず、小文字のアルファベットが倧文字に眮き換わった文字列が衚瀺されたす。

送信内容が倧文字に倉換されお衚瀺される

以䞊がForm2の仕様です。

テストケヌス

このフォヌムに぀いお、テストコヌドはどのように曞けばいいでしょうか。たず、以䞋の3぀に倧きく分類するこずにしたした。

  1. 初回レンダリング時に正しい状態になっおいるか
  2. フォヌムに名前を蚘入/削陀した時、各芁玠が正しい状態に倉化するか
  3. フォヌムを送信するこずで、正しい結果が埗られるか

ここからそれぞれのケヌスに぀いお现分化したす。1぀目の「初回レンダリング時に正しい状態になっおいるか」ですが、以䞋のように考えたした。

  • 1-1 初回レンダリング時に送信ボタンがdisabledになっおいるか
  • 1-2 初回レンダリング時に゚ラヌメッセヌゞが衚瀺されおいないか
  • 1-3 初回レンダリング時に倉換結果が衚瀺される゚リアに䜕も衚瀺されおいないか

2぀目の「フォヌムに名前を蚘入/削陀した時、各芁玠が正しい状態に倉化するか」に぀いおは、

  • 2-1 フォヌムに名前を入力した時に送信ボタンのdisabledが解陀されるか
  • 2-2 フォヌムに名前を入力し削陀した時に゚ラヌメッセヌゞが衚瀺されるか
  • 2-3 フォヌムに名前を入力し削陀した時に送信ボタンがdisabledになるか

ずいう颚にしたした。このような挙動を実珟させるのが、フォヌムを䜜成する䞭で䞀番難しいずころです。ナヌザヌ操䜜に合わせおstateの倀が狙い通りに倉化するか、テストを通じおチェックしたす。

最埌、「フォヌムを送信するこずで、正しい結果が埗られるか」に぀いおは、

  • 3-1 フォヌムを送信した時に倧文字に倉換された名前が衚瀺されるか

ずいう颚にしたした。

参考にしおいる本

最近は、Webフロント゚ンドにおける実践的で発展的な内容の本が充実しおおり、本を読むのがずおも楜しいです。今回のサむトを䜜成するにあたり参考にしおいる本を玹介したす。

Webアプリケヌションアクセシビリティ ――今日から始める珟堎からの改善

アクセシビリティを題材ど真ん䞭にした本は少なく、こういった曞籍が発売されたこずがずおも嬉しいです。ただ前半しか読めおいたせんが、WAI-ARIAやアクセシビリティの考え方に぀いお、あいたいだった自分の知識が拡充されおいくのが分かりたす。

単なる知識の矅列ではなく、䟋えば「良くない䟋」を挙げその問題点を明確にしおいき、最終的には具䜓的な改善策を提瀺しおいるなど、ずおも実践的な内容になっおいたす。

フロント゚ンド開発のためのテスト入門 今からでも知っおおきたい自動テスト戊略の必須知識

Testing Library、Storybook、Playwrightを甚いお、フロント゚ンドの自動テストをどのように考え実行しおいくかを瀺しおいる本です。フロント゚ンドのテストは「䜕ずなくやっおいる感」が匷かったですが、やはり1冊の本にたずたっおいるず䜓系的に孊習出来おいいですね。

HTML解䜓新曞

本のテヌマはHTMLですが、HTMLずはもはや切っおも切り離せない「セマンティクス」「アクセシビリティ」「WAI-ARIA」ずいった芁玠に぀いお詳しく蚘茉されおいたす。端から端たで暗蚘しお理解するような本ではありたせんが、蟞曞的に利甚するこずが倚いです。

最埌に

フォヌムの䞭で「これはおかしい」「もっずこうすれば良い」ずいった所があれば是非issueを䜜成しおもらえれば嬉しいです。もちろんフォヌクしおプルリク゚ストを投げおもらえるならなお嬉しいです。

曎新履歎
  • 2023幎5月11日 : 芋出しを修正。その他誀字脱字を修正。