【個人開発】フリーランスの税金管理ツールを作った話

「フリーランスになると税金管理が大変」という話はよく聞く。しかし実際にフリーランスになってみると、その「大変さ」の具体的な意味がわかる。
毎月の売上から、どれだけ税金として積み立てるべきか。口座残高のうち、本当に使っていい金額はどれだけか。確定申告の時期に「足りなかった」という事態を防ぐには、何をどう管理すればいいのか——。
これらの問いに対して、スプレッドシートや手計算で対応しているフリーランスは多い。私自身もそうだった。しかしそれには限界がある。
この記事では、自分の課題を解決するために個人開発したフリーランス金銭プランナーというWebアプリを紹介する。現在は非公開だが、興味がある方は記事末尾の問い合わせフォームから連絡してほしい。
この記事でわかること
① フリーランスの税金管理でどんな課題があるか
② 個人開発したツール「フリーランス金銭プランナー」の全機能
③ 技術スタック(Go + Next.js + PostgreSQL + Docker)の設計思想
④ 税金計算(所得税・住民税・消費税・国保)の実装の仕組み
⑤ ツールの入手方法(問い合わせ先)
なぜ自分でツールを作ったか
フリーランスエンジニアとして独立してから、税金管理の複雑さに最初から苦労した。
フリーランスが管理しなければならない税金の多さ
会社員のときは給与から天引きされているため意識しないが、フリーランスになると以下の税金をすべて自分で計算・積立・納付しなければならない。
| 税目 | 納付時期 | 概算の計算方法 |
|---|---|---|
| 所得税 | 3月(確申)・6月・8月・11月(予定納税) | 課税所得 × 累進税率 × 1.021 |
| 住民税 | 6月・8月・10月・翌1月(4分割) | 前年所得 × 10% + 均等割 6,000円 |
| 消費税 | 3月(確申)・11月(中間申告) | 売上 × 10% × 仕入税額控除率 |
| 国民健康保険 | 6月〜3月の10回 | 所得割 + 均等割(都道府県別、上限あり) |
| 国民年金 | 毎月 | 2026年: 17,920円/月 |
これだけの税目を毎月手で計算して積み立てるのは、正直かなり煩雑だ。特に問題なのが住民税が前年所得に課税されるという点で、独立1年目は「去年の所得が0なので住民税が安い」状態が翌年には激変する。これを知らずにいると、2年目に大量の住民税請求が来て口座が一気に減る。
国保についても、市区町村によって料率が異なり、「実際いくら払うことになるのか」を独立前から正確に把握している人は少ない。
スプレッドシートの限界
当初はGoogleスプレッドシートで税金計算を管理していた。しかし以下の問題にぶつかった。
計算が複雑すぎて式の管理が追いつかない
消費税の計算はインボイス登録月によって月数按分が変わる。国保は都道府県別の料率を調べて別シートに持たせる必要がある。住民税は前年確定申告後に計算式のベースが変わる。こうした変動要素が多すぎて、スプレッドシートのメンテが追いつかなくなった。
freeeとの二重管理が発生する
请求書・経費の管理にはfreeeを使っているが、税金計算のためにスプレッドシートにも同じデータを入力する必要があった。二重管理は入力漏れ・入力ミスの温床になる。
「今月いくら使えるか」がわからない
税金積立を考慮した上で、口座残高のうち本当に使っていい金額を計算するのが難しかった。住民税や消費税の納付月は残高が大きく減るため、「支払い月の前に残高が足りなくなる」という事態も防ぎたかった。
エンジニアなら自分で作れる
フリーランスエンジニアの強みは、自分の課題をコードで解決できることだ。必要な機能は明確で、複雑なUIも不要。バックエンドはGo、フロントエンドはNext.jsで、業務の合間に1ヶ月ほどで実用版が完成した。
作ってみてわかったのは、「税金計算は複雑に見えるが、ロジックを正しく実装すれば計算機として完結する」という事実だ。所得税の累進課税も、消費税の月数按分も、TypeScriptの関数として書けばシンプルに整理できる。
フリーランス金銭プランナーとは
フリーランス金銭プランナーは、フリーランスエンジニアの税金・積立・口座管理を自動化するWebアプリだ。
売上と経費を入力するだけで、以下が自動計算される。
- 年間の税金総額(所得税・住民税・消費税・国保・国民年金)
- 毎月の税金積立目標額(1,000円単位)
- 口座残高から固定費・積立を差し引いた「今月使える金額」
- 12ヶ月分の残高推移(予測・支払い後・実績の3行マトリクス)
ローカル環境でDockerを使って動かす構成のため、データはすべて自前のPostgreSQLに保存される。クラウドへのデータ送信は(freee連携を除いて)一切ない。センシティブな収入・残高データを外部SaaSに預けたくない場合に安心できる設計だ。
主な機能
1. 税金プランナー
アプリのメイン画面。案件(売上)と経費を入力すると、各税目の年間合計と内訳がリアルタイムで更新される。
表示される情報
| 項目 | 内容 |
|---|---|
| 所得税 | 課税所得 × 累進税率 × 1.021(復興特別所得税込み) |
| 住民税 | 前年確定事業所得 or 当年事業所得 × 10% ± 調整控除 |
| 消費税 | 売上 × 10% × (13 − 課税開始月) / 12 × 仕入税額控除率 |
| 国民健康保険 | 都道府県別料率 × 所得(賦課限度額あり) |
| 国民年金 | 2026年: 月17,920円 × 12 = 215,040円 |
| 税金合計(年間) | 上記5項目の合計 |
| 毎月の積立目標 | 税金合計 ÷ 12(1,000円単位で切り上げ) |
追加控除の入力
青色申告特別控除(65万円)は自動適用されるが、以下を手入力で追加控除として設定できる。
- iDeCo: 年間掛金(所得税・住民税の課税所得から全額控除)
- ふるさと納税: 寄付額(住民税から控除)
- 国民年金: 実際に払っている場合は全額控除
- 国民健康保険(実額): 確定申告後に実際の保険料が確定したら上書き
iDeCoとふるさと納税を最大限活用した場合の「節税後の実質税負担」がリアルタイムで確認できるため、節税戦略を数字で検討できる。
2. 使える金額(口座管理)
「口座に150万あるけど、本当に使っていい金額はいくら?」という疑問に答えるのがこの機能だ。
複数口座の残高を入力し、税金積立・固定費を差し引いた使用可能金額を自動計算する。
設定できる項目
- 口座名・現在残高: メイン口座・税金積立口座・生活費口座など複数登録可能
- 最低残高: 常に確保しておきたい金額(バッファ)
- 出費項目: 固定費(家賃・サブスク・通信費等)を登録し残高から自動差引
使える金額の計算式
使える金額 = 残高合計 − 最低残高合計 − 固定費合計 − 税金積立残額「税金積立残額」は、当年分の税金合計から今月までの積立済み額を差し引いたもの。年が進むにつれて自動的に減っていくため、年末近くには「もう少し使えるな」という状態になる。逆に年初は積立残額が多く、使える金額が絞られる。
3. 残高推移(月別マトリクス)
月別残高の見通しを可視化する画面。12ヶ月分が3行(予測・支払い後・実績)で表示される。
| 行 | 内容 |
|---|---|
| 予測 | 毎月の積立・固定費控除後の残高予測 |
| 支払い後 | 各税目の納付月に実際の支払い額を反映した残高 |
| 実績 | 各セルをクリックして実際の残高を手入力 |
住民税(6月・8月・10月・翌1月)、消費税(3月・11月)、国保(6月〜3月)の納付月に自動で「支払い後」残高が計算されるため、「税金の支払い月に口座が足りなくなるか」が事前に確認できる。
また「支払い記録」テーブルで実際の納付額を入力すると、「支払い後」行に反映される仕組みになっており、予測と実績の乖離を把握できる。
4. freee連携
freee会計に登録している売上・経費データをワンクリックで同期できる。
freee APIを使って案件(売上)と経費を取得し、アプリのデータベースに反映する。手動入力と二重管理にならないため、freeeをメインの帳簿として使っている場合に特に便利だ。
freee連携はオプション機能であり、手動入力のみでも全機能が使える。freee未契約の場合も問題ない。
技術スタック
エンジニア向けに技術スタックと設計思想を紹介する。
全体構成
ブラウザ (Next.js 14)
↕ REST API (HTTP)
Go + Echo (APIサーバー)
↕ SQL
PostgreSQL 16DockerComposeで3つのコンテナ(frontend / backend / db)を管理している。ローカル環境で完結するため、クラウドへのデプロイは不要だ。
# 初回起動(イメージビルド込み)
make rebuild
# 2回目以降
make up
# 停止
make downmake up で http://localhost:3000(フロント)と http://localhost:8080(API)が起動する。
フロントエンド: Next.js 14 (App Router) + TypeScript
最大の設計ポイントは、税金計算がすべてクライアントサイドのTypeScriptで行われる点だ。
frontend/lib/tax.ts に所得税・住民税・消費税・国保の計算ロジックを集約し、案件・経費・控除の変更が即座に税額に反映される。APIリクエストを挟まないため、入力のたびにリアルタイムで数値が更新される。
// 所得税累進課税の実装イメージ
const brackets = [
{ limit: 1_950_000, rate: 0.05, deduction: 0 },
{ limit: 3_300_000, rate: 0.10, deduction: 97_500 },
{ limit: 6_950_000, rate: 0.20, deduction: 427_500 },
{ limit: 9_000_000, rate: 0.23, deduction: 636_000 },
{ limit: 18_000_000, rate: 0.33, deduction: 1_536_000 },
{ limit: 40_000_000, rate: 0.40, deduction: 2_796_000 },
{ limit: Infinity, rate: 0.45, deduction: 4_796_000 },
]
function calcIncomeTax(taxableIncome: number): number {
const b = brackets.find(b => taxableIncome <= b.limit)!
return Math.floor((taxableIncome * b.rate - b.deduction) * 1.021)
}税法の改正(控除額の変更など)は tax.ts の1ファイルを更新するだけで全画面に反映される。
バックエンド: Go + Echo
バックエンドはGoのWebフレームワーク「Echo」で実装した。
Goを選んだ理由:
- シンプルな型システムで税金計算のロジックをバックエンド側でも検証しやすい
- 軽量でコンテナのビルドが速い
- バイナリが1つにまとまるため本番環境への持ち込みが容易
バックエンドの主な責務はCRUDとfreee API連携に限定し、税金計算のコアロジックはフロントエンドに置いている。これにより「計算を確認したければTypeScriptのコードを見ればよい」という明確な責務分離が実現できた。
// ルーティング(主要エンドポイント)
e.GET("/api/projects", h.GetProjects) // 案件一覧
e.POST("/api/projects", h.CreateProject) // 案件作成
e.DELETE("/api/projects/:id", h.DeleteProject)
e.GET("/api/settings", h.GetSettings) // 設定取得
e.PUT("/api/settings", h.UpdateSettings) // 設定更新
e.POST("/api/freee/sync", h.FreeeSync) // freee同期
e.POST("/api/freee/disconnect", h.FreeeDisconnect)データベース: PostgreSQL 16
案件・経費・口座・設定・追加控除・支払い記録をPostgreSQLに保存している。DockerComposeのボリュームでデータを永続化しているため、コンテナを落としても次回起動時にデータは残る。
スキーマはシンプルで、マイグレーションも平易なSQLファイルで管理している。ORM は使わず database/sql で直接クエリを書いており、コードを読めばSQLが追える状態にした。
年度更新の仕組み
税法は毎年少しずつ変わる(2026年から基礎控除が変更される等)。このアプリは設定画面で「税率年度(2024〜2026)」を選択できる仕組みになっており、年度を切り替えると対応する控除額・税率テーブルが自動で適用される。
税金計算の詳細
実装した税金計算ロジックを解説する。エンジニア向けには実装の参考に、非エンジニア向けには「なぜこんなに複雑なのか」を理解する材料にしてほしい。
所得税の計算
課税所得 = 事業所得
− 基礎控除(480,000円)
− 青色申告特別控除(650,000円)
− 国保料
− 追加控除(iDeCo・ふるさと納税・国民年金等)
所得税(復興税込み)= 課税所得 × 累進税率 − 速算控除額
× 1.021(復興特別所得税)年収1,200万円(月100万)のフリーランスエンジニアを例に取ると、控除後の課税所得は700〜800万円程度になり、税率は23%帯に入ることが多い。iDeCoで年間81.6万円(月6.8万)積み立てている場合、課税所得が約60〜80万円減り、所得税だけで10〜20万円近く節税できる計算になる。
住民税の計算
住民税は前年所得に課税される点が重要だ。
住民税課税所得 = 前年度確定事業所得(設定値 or 当年事業所得)
− 住民税基礎控除(430,000円 / 2025年〜)
− 青色申告控除(650,000円)
− 国保料 − 追加控除
所得割 = 住民税課税所得 × 10%
調整控除 = (所得税基礎控除 − 住民税基礎控除) × 5%(最低2,500円)
住民税 = 所得割 − 調整控除 + 均等割(6,000円)設定画面で「前年度確定事業所得」を入力することで、翌年分の住民税を正確に計算できる。確定申告後に毎年この値を更新するのがポイントだ。独立2年目以降は「前年の住民税課税所得がわかっている」状態になるため、計算精度が上がる。
消費税(インボイス制度対応)
消費税の計算は消費税区分と登録月によって大きく変わる。
| 区分 | 仕入税額控除率 | 実質税負担 |
|---|---|---|
| 免税事業者 | — | 0%(消費税なし) |
| 簡易課税2割特例 | 80% | 売上の約2% |
| 簡易課税5種 | 50% | 売上の約5% |
| 原則課税 | 実額 | 個別計算 |
インボイス年途中登録の場合、課税期間が月数按分される。
消費税 = 売上 × 10%
× (13 − 課税開始月) / 12 ← インボイス登録月による按分
× 仕入税額控除率2026年4月にインボイス登録した場合、(13 − 4) / 12 = 9/12分だけ消費税がかかる。これをスプレッドシートで正確に計算するのは意外と面倒で、このツールを作った動機の一つでもある。
国民健康保険の計算
国保は都道府県・市区町村によって料率が異なる。このアプリでは設定画面で居住都道府県を選ぶと概算料率が自動設定される仕組みになっている。
国保 = min(
所得割(前年事業所得 × 所得割率)+ 均等割,
賦課限度額(所得割・支援金・介護分の合計上限)
)実際の保険料通知が届いたら「国民健康保険(実額)」として追加控除に入力することで、所得税・住民税の計算にも正確な数値が反映される。
設定画面で対応している項目
設定は以下の項目を変更できる。
| 設定項目 | 内容 |
|---|---|
| 税率年度 | 2024・2025・2026(年によって控除額が変わる) |
| 消費税区分 | 免税 / 簡易2割 / 簡易5種 / 原則課税 |
| インボイス登録月 | 年途中登録の場合に設定(消費税の月数按分に使用) |
| 居住都道府県 | 国保の概算料率を決定 |
| 前年度確定事業所得 | 住民税・国保の正確な計算のために確定申告後に入力 |
| 積立に含める費用 | 別途口座引き落としされる費目を積立目標から除外 |
freeeを使っている方へ
freee会計で請求書・経費を管理しているなら、同期機能が役立つ。/api/freee/sync を叩くと、freee上の売上・経費がアプリのデータベースに取り込まれる。
freeeはMCP(Model Context Protocol)サーバーも提供しており、AIエージェントとの連携も可能な状態になっている。将来的にはAIによる「今月の節税アドバイス」機能も追加したいと思っている。
使ってみたい方へ
現時点ではこのツールは非公開で、ローカル環境向けのDocker構成として管理している。将来的には以下を検討している。
- 有料SaaSとして公開: セキュアなクラウドホスティング版
- オープンソース公開: GitHubでコードを公開し、自分でホストできる形
興味がある方、または「こういう機能が欲しい」「こんな消費税区分に対応できるか」という質問がある方は、以下の問い合わせフォームからご連絡ください。
フリーランス転向を考えている人へ
このツールはフリーランスになってから税金管理に使うものだが、「そもそもフリーランスになるべきか」という段階の人にも参考情報を伝えたい。
フリーランスエンジニアとして安定して稼ぐには、案件を継続的に獲得できる仕組みが必要だ。独立初期はとくに、フリーランス専門エージェントに登録して案件を紹介してもらうのが現実的なルートになる。
フリーランスエージェントを選ぶ基準
| 観点 | チェックポイント |
|---|---|
| 案件数 | バックエンド(Go・Java・Python)の案件が豊富か |
| 単価 | 経験年数・スキルに見合った単価帯があるか |
| 契約形態 | 準委任契約(成果物に縛られない)が多いか |
| リモート | フルリモート案件の割合 |
| サポート | 専任コーディネーターがいるか |
バックエンドエンジニア向けのフリーランスエージェントとして、ITエンジニア専門のレバテックフリーランスが選択肢の一つになる。高単価・フルリモート・週4日といった案件も扱っている。
レバテックフリーランス
ITエンジニア・クリエイター専門のフリーランスエージェント。無料登録後に専任のコーディネーターが担当し、スキルに合った案件を紹介してくれる。
レバテックフリーランスに無料登録する →
フリーランス転向の具体的なプロセス(準備・案件獲得・税務の基本・正社員との収入比較)については別記事で詳しく解説している。
SESや自社開発正社員からフリーランスへの転向を検討している場合は、こちらも参考になるかもしれない。
まとめ
フリーランスの税金管理は、やることが多い割に適切なツールが少ない。既存の家計簿アプリは法人税・消費税・国保の計算には対応しておらず、freeeは素晴らしいが「積立目標をリアルタイムに出す」機能はない。
フリーランス金銭プランナーは、自分の痒いところに手が届くツールとして個人開発した。エンジニアらしく自分の課題を自分のコードで解決した——それ自体が、フリーランスとしての強みを活かした一例だと思っている。
技術スタック(Go + Next.js + PostgreSQL + Docker Compose)はバックエンドエンジニアなら馴染み深い構成で、コードを読んでみたい方にも公開できるよう整備中だ。
興味がある方は問い合わせフォームからどうぞ。