ちょうぼっち開発記 第1回 — 個人事業主の記帳を楽にしたい
はじめに
ちょうぼっち(keiri.codese.net)は、個人事業主が記帳・確定申告を行うためのWebアプリです。市販の会計ソフトに比べてシンプルにしぼり、「まず複式簿記で動かす」ことを優先して作りました。
なぜ作ったのか
個人で事業をはじめたとき、会計ソフトの機能の多さに戸惑いました。個人事業主が確定申告に必要な機能は限られているのに、画面が複雑で何をすればいいかわからない。だったら自分で作ろうと思ったのがきっかけです。
技術構成
- フロントエンド: Next.js + TypeScript
- データベース: Supabase(PostgreSQL)
- デプロイ: Vercel Hobby プラン
記帳データはブラウザから Supabase に直接書き込む構成です。認証も Supabase Auth を使っています。
この構成にした理由はコストと運用の手軽さです。個人開発では月額固定費をいかに抑えるかが継続の鍵になります。VercelもSupabaseも無料枠があり、利用者が少ない立ち上げ期は維持費ゼロで運用できます。逆に言えば、無料枠の制約(サーバーレス関数の実行時間が短いなど)に収まるように、重い処理をクライアント側に寄せる設計上の工夫が必要でした。このあたりの試行錯誤は別の記事で詳しく書く予定です。
現在の機能
- 仕訳入力(借方・貸方の科目・金額・摘要)
- 仕訳一覧・検索
- 試算表の表示
- 勘定科目のマスタ管理
確定申告に直結する損益計算書・貸借対照表の出力はまだ実装が不十分で、次のフェーズで整えます。
つまずいたこと
複式簿記の「借方・貸方が必ず一致する」という制約をアプリで強制する実装が思ったより手間でした。入力中は合計が合わなくても途中保存できるようにしながら、最終的に不一致のまま確定できないようにするUXの設計は試行錯誤しました。
もうひとつ悩んだのが金額の扱いです。JavaScriptの浮動小数点で金額を計算すると丸め誤差が出ることがあるため、金額はすべて整数(円単位)で持ち、表示時にだけカンマ区切りに整形する方針にしました。会計アプリでは1円のずれも信頼問題に直結するので、地味ですが最初に決めておいてよかった設計判断です。
AIと一緒に作っている
開発はAIコーディング支援を使いながら進めています。勘定科目のマスタデータ作成のような「手で打つと丸一日かかる単純作業」はAIに任せると数分で終わります。一方で、複式簿記の整合性チェックのような仕様の判断が絡む部分は、結局自分が会計の本を読み直して仕様を固めてからでないと、AIも正しいコードを書けませんでした。「仕様を決めるのは人間、手を動かすのはAI」という分担が、今のところ一番うまく回っています。
次にやること
- 損益計算書・貸借対照表の帳票出力
- CSV インポートによる銀行明細の取り込み
- ちょうぼっちから Valscope への導線
最終的には「記帳 → 確定申告の下書き → 提出」までをひとつの流れで完結させることを目標にしています。
まとめ
- 個人事業主向けに機能をしぼったシンプルな会計アプリを Next.js + Supabase で構築中
- 複式簿記の整合性チェックがUX設計で一番難しいポイント
- 次フェーズは帳票出力と CSV 取り込み