🏃

フロントエンド初心者が勉強を兼ねて簡易ポケモン図鑑を作ってる vol.2

2024/03/20に公開

はじめに

これの続きです
https://zenn.dev/yousaku/articles/0580566071e49b

相変わらず初心者なのでお手柔らかに

成果物

https://pokemon-react-app-pink.vercel.app/pokemons

前回からの成長

ディレクトリ構成更新

新しいコンポーネントやhooks, ディレクトリやファイルが増えました

src
├── App.css
├── App.test.tsx
├── App.tsx
├── components
│   ├── CardUI.tsx
│   ├── Form ← コンポーネント(フォーム)
│   │   └── Auth
│   │       ├── LoginForm.tsx
│   │       └── SignupForm.tsx
│   ├── Header.tsx
│   ├── ProfileButton.tsx
│   └── SelectRegionButton.tsx ← コンポーネント(ボタン)
├── hooks
│   ├── context
│   │   └── AuthContext.tsx ← コンテクスト(React Context)
│   ├── firebase
│   │   └── auth.ts ← カスタムフック(firebaseの認証ロジック)
│   ├── get-pokemon.ts
│   ├── get-pokemons.ts
│   └── select-region.ts
├── index.css
├── index.tsx
├── logo.svg
├── pages
│   ├── auth
│   │   ├── Login.tsx
│   │   └── Signup.tsx
│   └── pokemon
│       ├── Detail.tsx
│       └── Index.tsx
├── react-app-env.d.ts
├── reportWebVitals.ts
├── schemas
│   └── auth
│       └── signUpSchema.ts ← バリデーションスキーマ
├── setupTests.ts
└── types
    └── Pokemon.ts

コンポーネントへ分割していく

ヘッダー部分、プロフィールボタン、地方選択ボタン


Prettierの導入

https://prettier.io

いちいち自分でフォーマットを気にしていると辛かったので導入。これで可読性が上がりました。

機能の追加/拡張

対応地方を追加

ジョウト地方のポケモンも表示され251匹に増えました

フィルタリング機能を実装してみた

ボタンでフィルタリングできます。カントー地方だけのポケモンだけ表示が可能です。
今はどれを選んでいるのかわからないUIなのでこれは改善の余地ありです

超簡易な認証機能の実装

Firebase Authenticationを使いました

  1. 新規登録
  2. ログイン

は可能です
パスワードリセット機能はまだありませんので次の課題です

バリデーションの導入

新規登録フォームにバリデーションを導入しました。使ったライブラリはZodとReact Hook Formです

Zod
https://zod.dev

React Hook Form
https://react-hook-form.com

公式ドキュメントに書き方は紹介されています

今後どうする予定か

1.認証機能を活かしてパーソナルな機能を作ってみよう

簡易なWebAPIを立ててパーソナルな機能を作りたい
認証認可はFirebase Authenticationの検証を使っていきたい(Firebase Admin SDKの導入)
https://firebase.google.com/docs/admin/setup?hl=ja

追加したい機能例

  • プロフィールページの導入
  • お気に入りポケモンの登録
  • メール通知機能(何を通知するかは決まっていない...)

2.今度こそ自動テストを導入

Jest, React Testing Libraryが候補です

3.Biomeを試したい

一旦Prettierを導入しましたが、その後Biomeという存在を知りました。個人的に興味のあるツールですのでPrettierから移行してみたいところです

https://biomejs.dev

まとめ

少しづつですが、できることは確実に?増えてる気がします
もっと手に馴染ませていきつつテストコードの書き方やフォーマッターやリンターなどフロントエンド開発を支えるツールにも詳しくなりたい

実務でもフロントエンド領域をもっと任せていただけるよう無理のないペースで精進続けていきます

Discussion