メインコンテンツまでスキップ

課題(割り勘アプリ)

React フロントエンド開発入門の最後の課題として、割り勘アプリをつくってみましょう。

📊 レベル1:基本の割り勘(初級)

実装する機能

  • 合計金額の入力フォーム
  • 人数の入力フォーム
  • 一人当たりの支払額を自動計算して表示
  • 入力値のバリデーション(正の数値のみ)
  • 計算結果を円単位で表示(小数点以下の処理)

学習ポイント

  • useStateによる状態管理
  • フォーム要素の制御(Controlled Components)
  • 基本的なイベントハンドリング
  • 条件付きレンダリング

👥 レベル2:メンバー管理(中級)

実装する機能

  • 参加者名を追加・削除できる機能
  • 各参加者の名前を一覧表示
  • 参加者ごとの支払額を表示
  • 端数調整(合計金額と一致しない場合の処理)
    • 例:最初の人が多めに払う、など

学習ポイント

  • 配列を使った状態管理
  • リストレンダリング(mapkey props)
  • オブジェクト配列の操作
  • 動的なフォーム要素の追加・削除

🏷️ レベル3:費目別精算(上級)

実装する機能

  • 複数の費目(飲食代、交通費など)を登録
  • 各費目ごとに以下を設定:
    • 費目名
    • 金額
    • 対象メンバーの選択(チェックボックス)
  • 費目の追加・編集・削除機能
  • メンバーごとの合計支払額を集計
  • 費目別の内訳表示

追加チャレンジ

  • 支払った人と立て替えた金額の記録
  • 誰が誰にいくら払うかの精算指示を生成
    • 例:「A さんが B さんに 1,500 円払う」

学習ポイント

  • 複雑な状態構造の設計
  • ネストされたデータの管理
  • フォームの複雑な制御
  • 算出ロジックの実装

🎨 レベル4:自由課題(発展)

レベル3までで基本的な割り勘アプリが完成しました。ここからは自分でテーマを決めて機能を追加してみましょう。

以下はアイデアの例です。これらから選んでも良いですし、自分で考えた機能を実装しても構いません。

データの永続化・共有

  • localStorageでデータを保存・複数の精算を管理
  • データのエクスポート/インポート(JSON、CSV)
  • 精算内容をURLやQRコードで共有

UI/UXの改善

  • レスポンシブデザイン・ダークモード対応
  • アニメーション効果・ローディング表示
  • エラー表示の改善・トースト通知

機能の拡張

  • 割合指定・税込税抜切り替え
  • 立て替え精算(誰が誰に払うか)の計算
  • 統計情報の表示(月別集計など)

コード品質・技術的挑戦

  • カスタムフックの作成・コンポーネント分割
  • テストコードの追加(Jest, React Testing Library)
  • 状態管理ライブラリの導入(Context API, Zustand等)

サンプル(進め方に迷ったらみてみましょう)