Files
2026-04-03 21:28:33 +09:00

2.9 KiB
Raw Permalink Blame History

家計簿アプリ

MoneyForward のCSVを取り込んで複式簿記で管理する個人用Webアプリ。

起動方法

npm run dev
# → http://localhost:5173

技術スタック

  • React 18 + TypeScript + Vite
  • Tailwind CSS(ダークテーマ、slate系カラー)
  • Zustand(状態管理、localStorageにpersist
  • PapaParseShift-JIS CSV読み込み)
  • Recharts(棒グラフ・ドーナツ円グラフ)

主要ファイル

ファイル 役割
src/types/index.ts 型定義(Account, Transaction, JournalEntry等)
src/utils/accounts.ts 勘定科目マスタ・カテゴリ/金融機関マッピングのデフォルト値
src/utils/csvParser.ts MoneyForward CSVパース → 複式仕訳変換
src/utils/bookkeeping.ts 残高計算・P/L・B/S・元帳構築ロジック
src/store/index.ts Zustandストア(全データ管理)
src/components/ 各画面コンポーネント

画面構成

  • ダッシュボード: 月次収支サマリ、棒グラフ、支出内訳円グラフ、費目別ランキング
  • CSVインポート: Shift-JIS CSV ドロップ→仕訳変換(重複自動スキップ)
  • 仕訳帳: 全仕訳一覧(列幅リサイズ対応)
  • 総勘定元帳: 勘定科目別の借方/貸方/残高明細
  • バランスシート: 貸借対照表(B/S)と損益計算書(P/L)タブ
  • 設定・マッピング: MFカテゴリ→勘定科目、金融機関→資産勘定のマッピング管理

重要な設計上の注意点

_skip_ accountId

ATM引き出し・Suicaチャージ・口座間振替など「資産間移動」はカテゴリマッピングで _skip_ を指定すると仕訳生成をスキップする。ただし 天引き貯金投資用振り込み は資産移動だが支出として計上する方針。

勘定科目タイプ

asset / liability / equity / income / expense の5種。normalBalancedebit なら借方残高科目、credit なら貸方残高科目。

選択月の共有

selectedMonth はZustandストアで全ページ共有。ページ切り替えで月選択がリセットされないようにしている。

データの保存場所

全データはブラウザの localStorage に保存(Zustand persist)。ブラウザの閲覧データを削除すると消える。コードからは参照不可。

よくある改善作業

  • 未分類カテゴリの追加: src/utils/accounts.tsDEFAULT_CATEGORY_MAPPINGS または DEFAULT_INSTITUTION_MAPPINGS に追記し、「設定」画面で「デフォルトを再適用」ボタンを押してもらう
  • 勘定科目の追加: src/utils/accounts.tsDEFAULT_ACCOUNTS に追記(id はユニークな文字列、order で表示順を制御)
  • 新しいMF金融機関の追加: DEFAULT_INSTITUTION_MAPPINGS に追記