Skip to content

コーディング規約

Published: at 23:29

フロントエンド コーディング規約

このドキュメントは、当プロジェクトのフロントエンド開発におけるコードの品質と一貫性を保つための規約をまとめたものです。

A. アプリケーションの構成とナビゲーション定義

プロジェクト全体の構造、ルーティング、ナビゲーション、およびサイトの基本設定に関する規約です。

1. ルーティングと Navigation API

2. 主要な設定ファイルとフォルダ構成

プロジェクトの保守性と可読性を高めるため、特定の情報を一元管理するファイルを設けます。

3. 国際化 (i18n) と翻訳ファイルの構造

多言語対応における翻訳データ (JSON ファイル) の管理方法と命名規則に関する規約です。

B. コンポーネント設計と実装ガイドライン

コンポーネントの設計思想、配置ルール、および具体的な実装方法に関する規約です。

1. 主要なコンポーネントディレクトリとその役割

当プロジェクトでは、コンポーネントの保守性、再利用性、および開発効率を高めるため、主に以下の 2 つのトップレベルディレクトリに UI コンポーネントを配置し、それぞれの役割を明確に定めます。

2. Atomic Design の適用と考え方

当プロジェクトでは、UI コンポーネントの設計と整理の指針として Atomic Design の考え方を採用します。コンポーネントは、その役割と配置場所に応じて、atomsmoleculesorganismsといった粒度に分類されます。

3. イベントハンドラの命名規則

C. スタイリングとテーマ利用規約

UI の見た目に関するスタイリング方法、Typography の定義と利用、テーマファイルへの準拠に関する規約です。

1. Typography と theme.ts への準拠

Figma よりテキストのスタイルがグループ化されいているため、それらをtheme.tsにまとめました。

2. スタイリング手法 (sx プロパティと styled コンポーネント)

MUI (@mui/material) などのライブラリを使用する場合のスタイリング方針です。

3. レイアウトの実装方針

意図的に特定の汎用エラーメッセージを表示したい場合の規約を追記しました。

D. フォームの実装 (Zod + React Hook Form + MUI)

アプリケーション内のフォームは、型安全なバリデーションと効率的な状態管理を実現するため、以下のライブラリを組み合わせて実装することを原則とします。 playground/page.tsxとそれに対応するコンポーネントを参照して作成して下さい

1. バリデーションスキーマの定義 (Zod)

2. フォームコンポーネントの実装 (useForm)

3. RHF 対応 UI コンポーネントの責務と実装

MUI のコンポーネントを React Hook Form (RHF) で管理するため、useController フックを用いたラッパーコンポーネントを作成します。

4. フォームの構築と送信処理

E. エラーハンドリングとメッセージ表示

アプリケーション全体で一貫性のあるエラーメッセージを提供し、多言語対応を容易にするための規約です。

1. エラーメッセージの一元管理 (src/constants/errorMessage.ts)

2. エラーメッセージの翻訳と利用方法

エラーオブジェクトやエラーコードを、ユーザーに表示するための翻訳済みメッセージに変換するユーティリティを用意しています。コンポーネントの種類(クライアント or サーバー)に応じて適切なものを利用してください。

a. クライアントコンポーネントでの利用 (useTranslatedError フック)

"use client" ディレクティブを持つクライアントコンポーネント内でエラーメッセージを取得する場合は、useTranslatedError フックを使用します。

b. サーバーコンポーネント / Server Actions での利用 (getServerErrorMessage 関数)

サーバーコンポーネントや Server Actions など、サーバーサイドの非同期処理中でエラーメッセージを生成する必要がある場合は、getServerErrorMessage 関数を使用します。

c. 意図した汎用エラーメッセージの表示

Firebase などからスローされるエラーだけでなく、独自のバリデーションチェックなど、特定の条件で意図的に定義済みエラーメッセージを表示したい場合があります。その場合は、src/constants/errorMessage.tsGENERAL_ERROR_MESSAGES に定義されたエラーキー(文字列)を利用します。

F. BFFごしでのFastAPIのコール方法

セキュリティの都合も兼ねてNextソース上のAPIをプロキシにFastAPIを呼び出ししています。 \

詳しくはこちら

ざっくりと構成は下記になります。

BFF本体のサンプル
front/src/app/api/proxy/users/route.ts

tanstackを利用したmutationの記載
front/src/hooks/users.ts

上記mutationを利用してAPIをコールしている個所 2025/07/05現在ダミーで記載中
front/src/app/[locale]/(main)/dashboard/page.tsx

useMutationを利用することでレスポンスを保存できるため不要なAPIコールの削減に寄与したり、ローディング等の状態管理などにも役立ちます。
回りくどいですが意識して実装を行うようにお願いいたします。

useQuery内のqueryKeyですがパスをラワーキャメルで取ってくださいusers/detail -> usersDetailのように。