こんにちは、エンジニアの仁木です。
最近はフロントエンドの開発について調べており、色々ネット上の記事を見漁っています。
調べている中で、Webアプリケーションの開発などでよく使われているライブラリやツールが何なのか、少しですが把握できてきたので、忘備録も兼ねてご紹介したいと思います。
紹介するものは、公式のドキュメントがしっかり書かれていることや、QiitaやZennなどでも多く取り上げられており、知見を多く得られるので、開発にも安心して取り入れられそうです。
https://react-hook-form.com/
Reactのフォーム作成ライブラリです。
React Hook Formライブラリを使わない場合に比べて、簡単にフォームの入力値の状態管理やバリデーション、送信時のイベント処理を実装することが可能になります。
https://zenn.dev/yuitosato/articles/292f13816993ef#3.-yup%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E8%A6%8B%E9%80%9A%E3%81%97%E3%81%AE%E8%89%AF%E3%81%84%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B
https://github.com/jquense/yup
フォームの入力項目のデータ構造を定義(スキーマ)して、バリデーションルールを宣言的に記述できるJavaScriptのライブラリです。
↑のReact Hook Formと組み合わせて利用されます。
yupを使うことで、バリデーションルールを submit イベントの中やコンポーネントのDOM層に書かなくて良くなるので、コードの可読性や保守性が良くなりそうです。
またメールアドレスやURL、文字数や数値の最小/最大値などのほとんどのフォームで必要になるバリデーションルールが用意されているため、自分で実装しなくて良いのも◎です。
https://zenn.dev/highgrenade/articles/c378deb2ec3eea
https://codezine.jp/article/detail/13518
https://github.com/colinhacks/zod
TypeScriptでデータ構造をバリデーション・パースできるライブラリです。
フォームのバリデーションチェックや、APIの返り値が期待する型で返ってきているかなどをチェックするために使われるようです。
また、バリデーション成功時と失敗時にそれぞれデータをパースして返すことができるようです。
https://qiita.com/YudaiTsukamoto/items/37ee62d3a7ff6e2d52f9
zodは、yupと似た機能を提供しているため、比較されることが多いようです。
フォームのようなバリデーションルールにはyupの方が扱いやすいといった意見の記事もありました。
https://zenn.dev/wintyo/articles/6122304cb56c86
zodでは、APIの返り値の型チェックで利用されている記事などがあります。
https://note.com/navitime_tech/n/n4fc1cf9b71bf
https://zenn.dev/ynakamura/articles/65d58863563fbc
https://www.chromatic.com/
Storybookで管理しているコンポーネント(UI)ライブラリをホスティング・リグレッションテスト(※)できるサービスです。
フロントエンドで実装したコンポーネントをエンジニア以外のメンバーも簡単にブラウザ上で確認できます。
サービスは有料プランと無料プランがあり、無料プランの方では以下のような機能に制限があります。
https://www.chromatic.com/pricing
※リグレッションテスト
リグレッションテスト(regression test)とは、プログラムの一部分を変更したことで、ほかの箇所に不具合が出ていないかを確認するためのテストです。
「回帰テスト」「退行テスト」とも呼ばれており、プログラムの修正後にこれらのテストをもう一度行って不具合がないかを検証します。
バグの修正に限らず、プログラムに何らかの修正や変更を加えたときは、リグレッションテストを実施し、全体への影響を確認する必要があります。引用元… https://hnavi.co.jp/knowledge/blog/regression-test/
https://dev.classmethod.jp/articles/chromatic-storybook-review-and-deploy/
https://zenn.dev/fullyou/articles/3b2d1bd1e6ce79
https://buildersbox.corp-sansan.com/entry/2022/08/01/110000
https://www.hygen.io/
ソースコードのテンプレートを生成するCLIのジェネレーターです。
テンプレートを用意して、コマンドで複数ファイルを一度に生成することができます。
コンポーネント作成時に、ストーリーブックやテストのファイル、cssなどの雛形を一度に生成することができるので、毎回同じコードを書かなくて良くなるのと、実装者が違ってもコンポーネントのコードやファイル構成にある程度一貫性をもたせることもできそうです。
テンプレートには変数を設定することが可能なことや、コマンド実行時に対話形式で変数の値を入力できるので、高い自由度でソースコードを生成できます。
https://zenn.dev/koki_tech/articles/532c9929ac1cc5
調べてみるとフロントエンドは技術やライブラリ/ツールの更新サイクルが非常に早いなと思います。
サイクルが早いので、ベストプラクティスとなるようなツールやフレームワークが確立されず、アプリケーションやサービスよりも寿命が短く終わってしまうようなケースも多くあるのだと思います。
こういった特徴はフロントエンドの特性として理解して、開発に取り入れていく意識が必要なんでしょうね。