[PR] 本記事にはプロモーションが含まれています。

【開発記】React + TypeScriptで血液検査記録WEBアプリを作る(第1回:プロジェクト始動とロードマップ)

React

健康管理のために毎年の血液検査の結果をExcelで受け取っているが、単なる数字の羅列では過去からの推移が直感的にわかりにくい。
そこで、複数年分のExcelデータをブラウザ上で一括で読み込み、時系列グラフとして可視化する自分専用のWEBアプリを開発することにした。

本連載では、プロトタイプとしてフロントエンド(React)のみで動く状態を作り上げ、最終的にバックエンド(Node.js + SQLite)と連携してデータを恒久保存するまでの過程を、実践的なコードと共に解説していく。

1. 採用する技術スタックと構成

ローカル環境での動作確認をスムーズに行うため、フロントエンドとバックエンドを明確に分離した構成を採用する。

フロントエンド(URL: http://localhost:5173/

  • React + TypeScript (Vite): 高速な開発環境と堅牢な型安全性を確保。
  • xlsx: ブラウザ上でExcelファイルを直接解析・読み込みを行うライブラリ。
  • recharts: 読み込んだデータをリッチな時系列折れ線グラフとして描画するライブラリ。

バックエンド(URL: http://localhost:3001/

  • Node.js + Express: APIサーバーを構築し、フロントエンドからのデータ送受信を処理する。
  • SQLite: データを恒久保存するための軽量ローカルデータベース。環境構築の手間を省くために採用し、将来的な自宅サーバー(MariaDB)への移行を見据えた設計とする。

2. 開発ロードマップ

全14回にわたる開発ステップは以下の通り。前半でプロトタイプを作り上げ、後半で実用的なWEBアプリへと昇華させていく。

回数テーマ内容
第1回プロジェクト始動とロードマップアプリの目的、採用する技術スタックの解説と全体設計。
第2回単一ファイルの読み込みReact環境の構築と、xlsxを用いたExcelデータの基本読み込み。
第3回複数ファイルの同時取り込み複数のExcelファイルを一度に選択し、Stateで管理する仕組みの実装。
第4回データ抽出と整形生データから検査項目・結果・単位を動的に探し出し、扱いやすいJSONへ変換。
第5回データの編集・削除機能抽出した数値を画面上で微調整・削除できるテーブルUIの作成。
第6回グラフ描画と表記揺れの吸収rechartsによる動的グラフ生成と、正規化処理によるデータ差異の統合。
第7回DB選定とSQLiteの構築将来のMariaDB移行を見据えつつ、ローカルで手軽なSQLite環境を立ち上げる。
第8回APIサーバー構築とDB連携ExpressでAPIを作り、Reactからデータを恒久保存・取得する仕組みへの移行。
第9回React Routerによる画面分割アプリを「データ管理」と「グラフ閲覧」の2画面に分け、SPAとしてルーティングを実装。
第10回データ管理画面のアコーディオンUI化膨大なデータをすっきり見せるため、日付単位で折りたためる操作性の高いUIへの改善。
第11回複数グラフの一覧表示とレスポンシブ対応見たい項目を選んで同時に並べられるダッシュボード化と、画面幅に応じた自動レイアウト調整。
第12回コンポーネント分割とリファクタリング肥大化したコードを役割ごとにファイル分割し、保守性の高い構成へ再構築。
第13回データの重複読み込み防止と日付別削除誤操作による二重取り込みを防ぐアラート機能と、日付単位でのデータ削除機能の追加。
第14回全データ一括削除機能の実装アプリの運用やテストをより快適にするため、ワンクリックで画面上の全データをリセットする機能の追加。

次回(第2回)から、実際にViteを使ってReactプロジェクトを立ち上げ、Excelファイルの読み込み処理の実装に入っていく。

コメント