青色申告の確定申告では、複式簿記の帳簿を管理する必要があります。
今回は、Googleスプレッドシートを使って、個人事業主のための複式簿記システムを構築する方法を紹介します。


- GitHub – sagami1991/aoiroshinkoku-sheet-gas – 記事で紹介しているGoogleスプレッドシートで青色申告を行うためのTypeScriptプロジェクト
1. Googleスプレッドシートで複式簿記の会計
会計ソフトは便利ですが、年間1万円以上の費用がかかることがほとんどです。
一方、Googleスプレッドシートは無料で利用でき、カスタマイズも自由に行えます。
また、クラウド上にデータが保存されるため、どこからでもアクセスできる点も魅力です。
いくつかの無料テンプレートを調査した結果、「青色申告複式簿記(aoiroshinkoku-sheet-gas)」というGitHubで公開されているプロジェクトに注目しました。
URL: https://github.com/sagami1991/aoiroshinkoku-sheet-gas

このシステムは、Google Apps Script(GAS)を利用しており、仕訳帳に入力すると、総勘定元帳、損益計算書、貸借対照表を自動生成できます。
使い方の流れ:
- GitHubにあるテンプレートを自分のGoogleドライブにコピー
- 勘定科目・期首繰越シートに科目を設定
- 仕訳帳シートに日々の取引を入力
- 確定申告の際に、残りの帳簿を「帳簿を作る」ボタンから自動生成
- 生成された帳簿を参照して申告書を作成する
ただし注意点として、iPadやスマートフォンからではスプレッドシートのマクロ機能が正常に動作しないため、PCからの操作が推奨されています。
1.1. 複式簿記と1日の経理業務の流れ
まず基本的な「複式簿記」について簡単に説明します。
「複式簿記」とは、すべての取引を「借方(かりかた)」と「貸方(かしかた)」の両方に記録する方法です。
例えば、商品を10,000円で売った場合、
「現金 10,000円(借方)」と「売上 10,000円(貸方)」という形で記録します。
| 日付 | 借方科目 | 借方金額 | 貸方科目 | 貸方金額 | 摘要 |
|---|---|---|---|---|---|
| 2023/05/01 | 現金 | 8,000 | 売上 | 10,000 | 商品販売 |
| 2023/05/01 | 売掛金 | 2,000 | – | – | 商品販売(続き) |
この方法は家計簿のような単式簿記と違い、すべての取引の流れがどことどこの間で行われたかが明確になるメリットがあります。
お金が財布から出ていくだけでなく、どこに移動したかも記録するイメージです。
実際に仕訳を入力する際のポイントを説明します:
- 日付の入力:日付形式(YYYY/MM/DD)で入力します。
- 借方・貸方の科目選択:科目マスタで設定した科目から選択します。
- 金額の入力:借方金額と貸方金額は同額になるのが基本ルールです。ただし、このテンプレートでは「事業主借」や「事業主貸」を使った仕訳で金額を調整することも可能です。
- 摘要の記入:取引内容の詳細を記入します。例えば「顧客A様への製品販売」「事務所家賃の支払い」など、後から取引内容が明確に分かるような記述が望ましいです。
- 複合仕訳の扱い:1つの取引で3つ以上の科目が関わる場合は、複数行に分けて入力します。
このように分けて入力すると、バランスが取れます。
2. テンプレートの構造と使用方法
紹介するスプレッドシートテンプレートは、複数のシートから構成されており、それぞれが特定の役割を担っています。
2.1. テンプレートの主要シート
スプレッドシートを開くと、画面下部に以下のようなシートタブが表示されます:
- 使い方 – テンプレートの利用方法の説明
- 仕訳帳 – 日々の取引を記録するメインシート
- 仕訳帳サンプル – 記入例が表示されたサンプル
- 科目マスタ – 勘定科目の設定と期首残高入力
- 総勘定元帳 – 自動生成される元帳
- 損益計算書 – 自動生成される損益計算書
- 貸借対照表 – 自動生成される貸借対照表
2.2. 仕訳帳シートの構造
仕訳帳シートは、複式簿記の基本となる部分で、以下のような列で構成されています:
- 日付 – 取引が発生した日付
- 借方科目 – 借方(資金の使途や増加する資産など)の勘定科目
- 借方金額 – 借方の金額
- 貸方科目 – 貸方(資金の源泉や減少する資産など)の勘定科目
- 貸方金額 – 貸方の金額
- 摘要 – 取引の内容説明
- エラーメッセージ – 記入ミスがあった場合に表示される
2.3. 勘定科目の設定
複式簿記では、勘定科目の設定が重要です。
このテンプレートでは「科目マスタ」シートで以下のように設定します:
- 勘定科目の種類:
- 資産科目(現金、預金、売掛金など)
- 負債科目(借入金、買掛金など)
- 純資産科目(元入金、事業主借、事業主貸など)
- 収益科目(売上、雑収入など)
- 費用科目(仕入、消耗品費、地代家賃など)
- 借方・貸方の区分:
各科目が「借方」と「貸方」のどちらでプラスになるかを設定します。- 資産科目:「借方」でプラス(例:現金が増えると借方に記録)
- 負債・純資産・収益科目:「貸方」でプラス(例:売上が増えると貸方に記録)
- 費用科目:「借方」でプラス(例:経費が増えると借方に記録)
- 決算書の種類:
各科目が「貸借対照表」と「損益計算書」のどちらに反映されるかを設定します。- 資産・負債・純資産科目:貸借対照表
- 収益・費用科目:損益計算書
2.4. スクリプト実行のアクセス権限
総勘定元帳、損益計算書、貸借対照表の各シートは、空欄になっています。
仕分け帳の記帳で自動的に反映されるのではなく、必要なタイミングで集計プログラムを動かす設計になっています。
決算タイミングで出力すれば、これを参照して確定申告書に記入できます。
- 「帳簿を作る」ボタンをクリック
- 仕訳帳から取引データを読み込む
- 読み込んだデータを元に総勘定元帳、損益計算書、貸借対照表を計算
- 計算結果を各シートに書き込む
- 完了メッセージを表示
Googleスプレッドシートのスクリプトを実行するには、認証が必要です。

「詳細を表示」から「安全ではないページへ移動」すると、アカウントへのアクセスを許可できます。
ここでは、Googleスプレッドシートへの操作を許可しています。


許可が完了すると、スクリプト処理が開始します。
「損益計算書」シートに計算結果が集計されています。


3. TypeScriptプロジェクト構造
実はこのテンプレート、単なるスプレッドシートではなく、TypeScriptというプログラミング言語で作られたアプリケーションが内部で動いています。
GitHubプロジェクトは以下のような構造になっています:
プロジェクトルート/
├── src/
│ ├── commonUtil.ts - 共通ユーティリティ関数
│ ├── interface.ts - データモデル定義
│ ├── main.ts - メインエントリーポイント
│ ├── sheets/ - シート操作クラス
│ │ ├── abstractSheet.ts - 基底クラス
│ │ ├── kamokuSheet.ts - 勘定科目シート
│ │ ├── shisanSheet.ts - 試算表シート
│ │ ├── shiwakeSheet.ts - 仕訳シート
│ │ └── soukanjoSheet.ts - 総勘定元帳シート
Code language: PHP (php)
このコードをGAS(Google Apps Script)に変換して、スプレッドシートのマクロとして動かしているのです。
アプリケーションの実行フローは非常にシンプルです:
3.1. 仕訳帳のデータモデル
複式簿記で扱うデータは明確に定義されています。
例えば、仕訳帳の1行は以下のようなデータ構造です:
/** 仕訳帳 */
export interface IShiwake {
id: number;
date: Date;
kariKamoku: string;
kariPrice: number;
kashiKamoku: string;
kashiPrice: number;
summary: string;
}
Code language: CSS (css)
3.2. 計算ロジック
最も複雑なのは帳簿の計算を行うChoboCalculatorクラスです。
このクラスでは、仕訳帳のデータから総勘定元帳、試算表、貸借対照表、損益計算書のデータを生成します。
例えば、総勘定元帳を作成する部分では以下のような処理を行っています:
/** 総勘定元帳のレコード作成 */
public calcSoukanjomotocho(): ISoukanjo[] {
// 仕訳データを取得して日付順にソート
let shiwakeRecords = this.shiwakeSheet.getRecords();
shiwakeRecords = CommonUtils.sortArray(shiwakeRecords, [
{ keyName: "date", type: "ASC" },
]);
// 勘定科目データを取得
const kamokuRecords = this.kamokuSheet.getRecords();
const kamokuMap = CommonUtils.arrayToMap(kamokuRecords, "name");
// 各勘定科目の残高を初期化
const zandaka: { [kamoku: string]: number } = {};
for (const kamoku of kamokuRecords) {
zandaka[kamoku.name] = 0;
}
// 総勘定元帳のレコードを作成
let soukanjoRecords: ISoukanjo[] = [];
for (const shiwake of shiwakeRecords) {
// 借方の処理
const kariKamoku = kamokuMap[shiwake.kariKamoku];
if (kariKamoku === undefined) {
throw new Error(`科目名: ${shiwake.kariKamoku} は、科目マスタに存在しない借方科目です`);
}
const plusMinusKari = kariKamoku.kashikariType === "借方" ? 1 : -1;
zandaka[shiwake.kariKamoku] += shiwake.kariPrice * plusMinusKari;
// 借方のレコードを追加
soukanjoRecords.push({
// 省略...
});
// 貸方の処理も同様に...
}
// 勘定科目順、日付順にソート
soukanjoRecords = CommonUtils.sortArray(soukanjoRecords, [
{ keyName: "kamokuOrder", type: "ASC" },
{ keyName: "kamoku", type: "ASC" },
{ keyName: "date", type: "ASC" },
]);
return soukanjoRecords;
}
Code language: JavaScript (javascript)
材料(仕訳データ)を取得し、順番に処理して完成品(総勘定元帳)を作っています。
4. まとめ
Googleスプレッドシートを活用することで、無料でありながら高機能な青色申告用の複式簿記システムを構築できます。
複式簿記の概念を理解しておくことは重要ですが、実際の計算や帳簿の作成は自動化できることがわかりました。
時間とコストを節約して会計処理を行いたい方には適したツールです。
- GitHub – sagami1991/aoiroshinkoku-sheet-gas – 記事で紹介しているGoogleスプレッドシートで青色申告を行うためのTypeScriptプロジェクト
- 国税庁 – 青色申告制度 – 青色申告の基本的な制度説明と特典についての公式情報
- 国税庁 – 確定申告書等作成コーナー – e-Taxによる青色申告の公式サイト
- Googleスプレッドシート ヘルプ – Googleスプレッドシートの基本的な使い方
- Google Apps Script ドキュメント – GASの公式ドキュメントとAPI情報
- TypeScript公式サイト – 記事内で説明されているTypeScriptの詳細情報
- 複式簿記の考え方と仕組み – 日本商工会議所 – 複式簿記の基本概念と仕訳の考え方
- freee会計 ナレッジベース – 青色申告の複式簿記 – 複式簿記による青色申告の実践的なガイド
- クラスプ(clasp)の使い方 – Google Apps ScriptをTypeScriptで開発するためのツール解説