ポータルサイト開発ガイドライン - Singuralitylabs/portal-site GitHub Wiki

シンラボポータルサイト チーム開発ガイドライン

基本方針

  • 読みやすさを優先する
  • 初心者にも理解しやすいコードを心がける

ファイル命名

  • コンポーネントファイル: PascalCase.tsx
    • 例: Button.tsx, UserProfile.tsx
  • その他のファイル: kebab-case.ts
    • 例: use-auth.ts, date-utils.ts

コンポーネント

コンポーネントの基本構造

// 型定義
interface UserCardProps {
  name: string;
  role?: string;
  onProfileClick: () => void;
};

// コンポーネント
export function UserCard ({ name, role, onProfileClick } : UserCardProps) => {
  return (
    <div onClick={onProfileClick}>
      <h3>{name}</h3>
      <p>{role}</p>
    </div>
  );
};

コンポーネント設計のガイドライン

  • 一つのコンポーネントは一つの責務を持つようにする
  • 長すぎるコンポーネントは分割する(目安:200行以上)
  • 関数の引数には原則propsは用いず、分割代入を用いる
  • 関数の引数には明示的に型定義する

TypeScript の型定義

基本的な型定義

  • 原則としてtype aliasよりinterface を使用する
  • 型名は PascalCase で記述する
  • 意味のある型名をつける
  • any 型の使用はできるだけ避ける
export interface User {
  id: string;
  name: string;
  email: string;
};

// 関連する型をまとめたファイルにする
export type UserCreateInput = Omit<User, 'id' | 'joinedAt'>;
export type UserUpdateInput = Partial<UserCreateInput>;

エラーハンドリング

  • try/catch で適切にエラーをキャッチする
  • エラー発生時は、console.error()を使ってエラー情報を出力する
try {
  await fetchData();
} catch (error) {
  console.error('データの取得に失敗しました', error);
  setErrorMessage('データの読み込みに失敗しました。後でもう一度お試しください。');
}

Git 運用

  • 機能単位でブランチを作成する
  • ブランチ名はfeature/実装内容とする
  • コミットメッセージやプルリクエストの内容などは日本語で書く
  • 作成済みのissueでプルリクを作成する際には、projectの紐付けはしない
  • プルリクエストのレビューを依頼したい時は、slackでReviewerメンションで依頼を出す
  • Pull Request はレビューを受けてからマージする

初心者向けリソース

⚠️ **GitHub.com Fallback** ⚠️