generated from jphacks/JP_sample
-
Notifications
You must be signed in to change notification settings - Fork 0
フロントエンドのコーディング規約など
Yuta Kawamura edited this page Nov 5, 2024
·
1 revision
デザインシステムは、開発の生産性を最大化し、ユーザーに一貫性のある体験を提供するための仕組みを指す。
デザインシステムを作る際は、基本的にデザインガイドライン、UI パターンやコンポーネント、ライブラリを作成する。だが、そこまでするのは手間がかかるので、UI パターン・コンポーネントを作成するに止めようと考える。そのため、今回はデザインシステム(もどき)を作る予定でいる。
予定している作業内容は以下のものになる。
-
./components/ui
に基本となる共通コンポーネントを作成する。選定基準は、Material 3 Design Kit に乗っている component を参考にすることとする。 - 既存のページで使われているコンポーネントを、新しく作成した共通コンポーネントに置き換える
ハッカソンにも関わらず、デザインシステム(もどき)を作りたいと思った理由を以下に書く
- 現状の実装だと、page.tsx で UI の描画を切り替える機能をハードコーディングしており、描画部分と機能部分をうまく切り分けれていない。
- 検索欄の実装箇所などで、似た機能なのにそれぞれを実装している箇所が散見され、そういった部分を修正したい。
- 今後コードを書く上で、なるべくコンポーネントはブラックボックスにして、実装を知らずとも簡単に機能として使えるようにしておきたい
- 今後追加実装をする上で、親コンポーネントさえ変えれば良い、という状態にするのは理にかなっていると思う。
以上から、上記の内容を満たすデザインシステム(もどき)を作りたいと思う。
components 直下には、機能を構成する単位ごと(state を管理できる単位ごと)にディレクトリを切ります。 それぞれの components 内で使用するパーツは、さらに細分化したディレクトリを切り、その中でコードを記述します。
ui 直下には、2 つ以上のコンポーネントで利用する機能を配置します。
本プロジェクトでは、コンテナ・プレゼンテーションパターンを採用しています。 コンテナコンポーネント(index.tsx)が useState や useEffect を使ってデータの取得や管理を行い、そのデータをプレゼンテーションコンポーネント(presenter.tsx)に渡すことで、UI ロジックとビジネスロジックの分離を図っています。 コンポーネント中でグローバルにアクセスしたい変数は、Context API を用いて provider が提供します。