優良な電子帳簿要件を意識した設計と対応表
概要 本書の位置づけ
本書は、国税庁が公表する「優良な電子帳簿の要件判定チェックシート」の各項目について、マルセイ会計(Ver. 2026.0621.18時点)の実装状況を整理した内部設計資料である。
マルセイ会計は法8条第4項の優良な電子帳簿に係る過少申告加算税の軽減措置の適用を保証するものではなく、適用の可否は利用者自身の届出・運用状況に依存する。本書はあくまで、アプリの機能設計がチェックシートの各要件をどの程度意識して作られているかを開発側の記録として残すものである。
✅ 対応 はアプリ機能として要件を満たす設計になっていることを示し、
△ 一部対応 は機能はあるが運用面の補足が必要なもの、
— 対象外 はアプリの機能領域外(利用者の届出・契約等)であることを示す。
対応状況サマリー
基本 基本項目の確認(法4①、8④)
1 システム関係書類の備付け(規2②一関係)
https://marusei.notion.site/eab8fe36e3ed44529df6b080d3320e082 帳簿データの検索、表示、出力機能の確保(規2②二、規5⑤一ハ関係)
3 訂正・削除及び追加入力の履歴の確保(規5⑤一1イ関係)
3方式(A・B・C)のうち A方式 を採用。データを直接訂正・削除できない設計とし、その上で訂正・削除の事実及び内容を自動記録する、A方式の中でも厳格な実装としている。
| 操作 | 動作 |
|---|---|
| 削除 | 物理削除を行わず、voidedBy に削除タグを設定して旧仕訳を隔離(論理削除) |
| 編集 | 旧仕訳を隔離した上で新仕訳を生成(直接上書きしない)。旧仕訳の voidedBy に新仕訳IDを記録 |
| 再決算 | 決算整理仕訳を自動隔離し、再計算結果を新規仕訳として生成 |
逆仕訳(反対仕訳)による訂正も入力操作として可能だが、B方式の要件(データを直接訂正・削除できないシステムを使用し、訂正は反対仕訳によってのみ行う)への該当を主張するものではなく、上記A方式での対応として整理している。
削除・編集・再決算の履歴は「更新ログ」画面(JournalAuditLogView)で一覧表示し、各履歴から該当する旧仕訳・新仕訳の内容を確認できる(JournalReadOnlySheet)。
入力データに入力年月日の情報を自動付加し、付加した情報をユーザーが訂正・削除できないシステムを使用(A方式)。Journal.createdAt は仕訳生成時に自動設定され、編集対象外。
取引日(date)と入力日(createdAt)の差が2ヶ月以上の仕訳を「遅延入力」として更新ログ画面に自動抽出・一覧表示する。
4 関連する帳簿間の記録事項の関連性の確保(規5⑤一ロ関係)
Journal.id を直接保持しており、IDを辿って仕訳帳側の記録事項を一意に特定できる。詳細は次節「ID設計の経緯」を参照。複数の元データを1本の仕訳に集計転記する処理(決算整理仕訳)すべてに、摘要欄へ集計対象・集計範囲を明記する形式を統一実装している。科目名が長い場合は科目コード表記とし、文字数を抑えている。
| 処理 | 摘要欄の記録例 |
|---|---|
| 家事按分(ApportionmentEngine) | 家事按分/2026/通信費_携帯電話/按分率30% |
| 消費税精算・簡易課税(TaxSettlementEngine) | 消費税精算/2026/納付/簡易5:50% |
| 消費税精算・本則課税(TaxSettlementEngine) | 消費税精算/2026/納付/仮受123000円仮払45000円 |
| 減価償却費(DepreciationCalculator) | 減価償却/2026/備品/1件 |
| 固定資産按分(DepreciationCalculator) | 固定資産按分/2026/車両運搬具/1件 |
減価償却費仕訳は、同一科目コードに属する複数の固定資産の償却額を1本の仕訳に合算する集計転記であるため、対象年度・科目コード・集計対象資産の件数を摘要欄に明記している。個別資産との紐付けは、固定資産台帳側の firstYearJournalID 等のフィールドによるID参照(次節参照)と併用することで、集計範囲の正確性を二重に確認できる構成としている。
設計 ID設計の経緯(Journal / FixedAsset の関連性)
マルセイ会計における Journal.id と FixedAsset.assetNumber は、採番方式が異なる。これは機能的な不備ではなく、それぞれが設計された当初の削除ポリシーの違いに由来する。
Journal は当初「削除主義」(物理削除を前提)で設計されたため、連番である必要がなく、生成時刻ベースのbase62形式IDを採用した。
一方 FixedAsset は当初から「保存主義」(論理削除を前提、削除しても欠番として記録を残す)で設計されたため、連番(assetNumber)を採用している。
優良な電子帳簿要件への対応により、現在は Journal 側も論理削除(voidedBy)に統一されたが、IDの採番方式は当時の設計のまま運用している。
Journal.id(base62形式)
// IDGenerator.generate() timestampPart = base62(unixtime, 6桁) // 生成時刻ベース sequencePart = base62(sequence, 2桁) // 同一秒内の連番(最大3,844件/秒) id = timestampPart + sequencePart // 例: "1waj7wAB"(8桁)
連続した整数の連番ではないが、生成時刻に基づき時系列順に一意となるIDであり、全仕訳に対して一意性が保証されている。チェックシートが求める「一連番号、伝票番号等」のうち、伝票番号としての役割を果たす設計である。
FixedAsset.assetNumber(整数連番)
// FixedAsset.assetNumber 採番ロジック maxAsset = 既存資産を assetNumber 降順で取得した先頭 newAssetNumber = maxAsset.assetNumber + 1 // 削除(markedAsDeleted=true)後も assetNumber は再利用されず欠番として残る
固定資産台帳と仕訳帳の紐付け
固定資産台帳(FixedAsset)は、取得・減価償却・除却・付随費用の各イベントに対応する仕訳の Journal.id を直接フィールドとして保持する。これにより、固定資産台帳の1レコードから、関連する仕訳帳の記録事項を一意に辿ることができる。
| FixedAssetフィールド | 紐付く仕訳の内容 |
|---|---|
| acquisitionJournalID | 取得仕訳 |
| firstYearJournalID | 初年度(取得年)減価償却費仕訳 |
| firstYearApportionJournalID | 初年度按分仕訳 |
| normalYearJournalID | 平年度(代表)減価償却費仕訳 |
| normalYearApportionJournalID | 平年度按分仕訳 |
| finalYearJournalID | 最終年度減価償却費仕訳 |
| finalYearApportionJournalID | 最終年度按分仕訳 |
| disposalJournalIDs(配列) | 除却・売却に関連する仕訳(複数件) |
| insuranceJournalID / roadTaxJournalID / handlingFeeJournalID / acquisitionTaxJournalID | 付随費用(保険料・自動車税・手数料・取得税)仕訳 |
| insuranceApportionJournalID / roadTaxApportionJournalID / handlingFeeApportionJournalID | 付随費用の按分仕訳 |
Journal.id を照合することで、当該資産に関する一連の仕訳(取得・償却・除却)を仕訳帳側で個別に特定できる。
Journal.id は連続した整数ではないが、生成時刻ベースの一意な識別子であり、伝票番号として機能する設計である旨を説明する。