2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

React/TypeScript + Vite + Supabase + Chakra UI で学習記録アプリを作ってみた

2
Posted at

React/TypeScript + Vite + Supabase + Chakra UI で学習記録アプリを作ってみた

image.png

はじめに

React と TypeScript の学習を進める中で、シンプルな CRUD アプリを作ってみたくなり、学習記録アプリを作成しました。

今回作ったアプリでは、学習内容と学習時間を記録して、一覧で確認できるようにしています。
新規登録、更新、削除まで一通り入れているので、フロントエンドの画面実装だけでなく、データ保存やフォーム処理までまとめて試せる題材になりました。

作ったもの

学習記録を管理するための Web アプリです。

できることは以下のような内容です。

  • 学習記録の一覧表示
  • 学習内容と学習時間の新規登録
  • 登録済みデータの更新
  • 学習記録の削除
  • フォーム入力のバリデーション

使用技術

  • React
  • TypeScript
  • Vite
  • Chakra UI
  • React Hook Form
  • React Router
  • Supabase
  • Vitest
  • Testing Library

技術選定の理由

React + TypeScript

画面をコンポーネント単位で組み立てながら、型安全も意識して実装したかったのでこの組み合わせにしました。
特にフォームや props の受け渡しが増えてくると、TypeScript があることで安心感がかなり違うと感じました。

Vite

開発サーバーの起動が速く、ちょっとした修正確認のテンポが良いので、学習用の個人開発と相性が良いと思って選びました。

Chakra UI

フォーム、ボタン、モーダルなどを比較的少ないコードで組み立てられるので、デザイン調整に時間をかけすぎず、機能実装に集中しやすかったです。

Supabase

バックエンドを大きく作り込まなくても、データ保存を含んだアプリを試せるのが魅力でした。
フロントエンドから実際のデータベースに接続する体験ができるので、単なるモックデータ表示よりも学びが大きかったです。

環境変数

Supabase に接続するために、.env に以下の値を設定します。

VITE_SUPABASE_URL=your-supabase-url
VITE_SUPABASE_ANON_KEY=your-supabase-anon-key

Vite ではクライアント側で利用する環境変数に VITE_ プレフィックスが必要なので、この形式で定義しています。

やってみた感想

シンプルなアプリではありますが、実際に作ってみると学べることがかなり多かったです。

  • 画面表示だけでなく、登録・更新・削除までつなぐ流れを体験できた
  • フォームバリデーションの扱いに慣れることができた
  • UI の共通化を通して、コンポーネント設計を見直す練習になった
  • テストを書くことで、修正時の安心感が増した

まとめ

今回は、React / TypeScript / Vite / Supabase / Chakra UI を使って学習記録アプリを作ってみました。

機能としてはシンプルですが、CRUD、フォーム、モーダル、外部サービス連携、テストまで一通り触れることができて、学習用の題材としてちょうどよかったです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?