ごく個人的な話だが、だいぶ前に母方の祖父が亡くなった。葬式をあげるでもなく、安置室で家族が見送るだけの寂しい別れだった。相続税の申告すらなかった。
しかし、しばらくして、相続登記をしないといけないことになり、司法書士を使う費用も用意できないからどうしようという話が舞い込んできた。
やるしかないか〜。
必要書類が多い
相続登記で法務局に提出する書類はざっくりこんな感じ:
- 登記申請書
- 遺産分割協議書
- 相続関係説明図
- 委任状(代理人が申請する場合)
- 戸籍謄本一式、住民票、固定資産評価証明書、etc.
戸籍とか証明書の類は役所に取りに行くしかないが、上4つは自分で作成する書類だ。法務局のサイトにWordのひな形があるにはあるのだが、これがお役所の得意な汚いWordでやってられない。
なぜAstroなのか
今どき組版なんてLLMにやらせるに限る。そして、LLMが得意な組版はLaTeXでもTypstでもなく HTML である。
しかし、HTMLを直書きするのも芸がない。要件はこんなところだろう
- 人名・住所・不動産情報はJSONに1回だけ書く
- 各書類のテンプレートがJSONを参照して埋める
- ブラウザで開いて印刷したらA4で出る
- ランタイムJavaScript不要(印刷するだけなので)
ほなSSGか〜。
データ設計
src/data/common.json に被相続人と相続人の情報をまとめた。
{
"deceased": {
"name": "山田 太郎",
"deathDate": "令和6年10月15日",
"birthDate": "昭和13年3月8日",
"lastAddress": "東京都多摩市落合1丁目99番88号",
"lastHonseki": "東京都多摩市落合1丁目99番88号"
},
"heirs": [
{
"name": "山田 花子",
"relation": "妻",
"birthDate": "昭和16年7月20日",
"address": "東京都多摩市落合1丁目99番88号"
}
],
"agreementDate": "令和8年3月17日"
}
※ 上記はサンプルデータ。実際のリポジトリにも架空の情報しか入っていない。
書類固有の情報(不動産の表示、登録免許税など)は touki-application.json や heritage-division.json に分けた。共通情報と書類固有情報を分離することで、名前を1箇所直せば全書類に反映される。
用紙レイアウト
A4用紙を画面上に再現する PaperLayout.astro を作った。
---
const { title = "文書", orientation = "portrait" } = Astro.props;
const isLandscape = orientation === "landscape";
const width = isLandscape ? "297mm" : "210mm";
const height = isLandscape ? "210mm" : "297mm";
---
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>{title}</title>
<style define:vars={{ width, height }}>
.paper {
background: white;
width: var(--width);
min-height: var(--height);
margin: 40px auto;
padding: 20mm;
box-shadow: 0 0 15px rgba(0,0,0,0.2);
box-sizing: border-box;
}
@media print {
@page { size: A4 portrait; margin: 0; }
.paper {
margin: 0;
box-shadow: none;
width: 100%;
min-height: 100%;
padding: 20mm;
}
}
</style>
</head>
<body>
<div class="paper">
<slot />
</div>
</body>
</html>
ポイントはこのあたり:
-
mm単位でサイズ指定。 ブラウザの印刷機能はCSS単位をそのまま物理寸法にマッピングしてくれるので、210mm × 297mmと書けばA4になる -
@media printで影や背景色を消す。 画面上ではドロップシャドウで「紙っぽさ」を出しつつ、印刷時は消す -
orientationをpropsで切り替え。 相続関係説明図は横向き(landscape)で出力するため、@page { size: A4 landscape; }を条件付きで差し込む -
Astroの
define:varsでCSS変数に渡す。 フロントマターで計算した値をそのままスタイルに流し込める
フォントは Hiragino Mincho ProN を第一候補にした。法的書類は明朝体が基本だ。
遺産分割協議書の例
---
import PaperLayout from '../layouts/PaperLayout.astro';
import SignatureBlock from '../components/SignatureBlock.astro';
import commonData from '../data/common.json';
import data from '../data/heritage-division.json';
---
<PaperLayout title="遺産分割協議書">
<h1 class="title">遺 産 分 割 協 議 書</h1>
<p>
上記被相続人の死亡により開始した相続の相続人である
{commonData.heirs.map((h, i) => (
<><span>{h.relation} {h.name}</span>
{i < commonData.heirs.length - 1 ? "、 " : ""}</>
))}
は、その相続財産について、次の通り分割を協議し、決定した。
</p>
<div>
{commonData.heirs.map(heir => (
<SignatureBlock name={heir.name} address={heir.address} />
))}
</div>
</PaperLayout>
相続人を .map() で回しているだけ。相続人が3人でも5人でも自動で並ぶ。署名欄も SignatureBlock コンポーネントにしてあるので、遺産分割協議書でも委任状でも同じ見た目で使い回せる。
相続関係説明図(家系図)
さすがのLLMもお絵かきは苦手っぽい。
.marriage-line .double-bar {
width: 100%;
height: 6px;
border-top: 1px solid #000;
border-bottom: 1px solid #000;
}
:first-child / :last-child で端の横線を消すことで、兄弟間の接続線がきれいに繋がるようにした。子が1人だけの場合は :has(> :only-child) で横線を全部消して縦線だけにする。
押印欄と捨印
ハンコを押す位置にはマークをつけておくとよい。実はこれは私の本職の知識。
<div class="seal-mark"></div>
<style>
.seal-mark {
width: 60px;
height: 60px;
border: 2px dashed #ccc;
border-radius: 50%;
}
</style>
印刷すると薄い破線の丸が出る。ここに実印を押す。捨印(書類の訂正用に余白に押しておくハンコ)の欄も同じ要領で並べている。
ページ送り
登記申請書は3ページにわたる(申請書本体・不動産の表示・印紙貼付台紙)。これは page-break-after: always で制御した。
.page-break {
page-break-after: always;
height: 0;
margin: 40px 0;
border-top: 1px dashed #ccc;
}
@media print {
.page-break { page-break-after: always; border: none; margin: 0; }
}
画面では破線の区切りが見えるが、印刷時はきれいにページが分かれる。
text-align-last: justify
登記申請書の項目ラベル(「登記の目的」「原 因」など)は、文字数が違っても同じ幅に揃える必要がある。手動で全角スペースを入れてもいいが、CSSに text-align-last: justify という便利なプロパティがある。
.label {
width: 100px;
text-align-last: justify;
}
これだけで「登記の目的」も「原因」も100px幅に均等配置される。法務局のWordテンプレートでは手動スペースで揃えていたが、こちらの方が圧倒的に楽だし、文言を変えても崩れない。
できあがり
npm run dev してブラウザで各ページを開き、Cmd+P で印刷するとA4の書類が出てくる。実際にこれを法務局に持っていったら、不動産の表示をちょっと書き間違えていたくらいの指摘だけで済んだ。
リポジトリはGitHubで公開している。GitHub Pagesでもホストしているので、ブラウザから直接見られる。
所感
Wordで法的書類を作るのは本当につらい。レイアウトが壊れる、データの一元管理ができない、バージョン管理ができない。
SSGを使おう!
ぶっちゃけ、組版よりも役所で除籍謄本もらったり、バラバラに家を出ていった兄弟姉妹から遺産分割協議書のハンコを詰めたりするのが一番大変。
あと、相続の段になって、誰も知らなかった根抵当権が出てきたりするから気を付けようね (こっちの抹消登記も連件登記したんだけど、こっちのほうがキツかった) 。
登記情報提供サービスを使おう
登記申請書には「不動産の表示」として所在・地番・地目・地積(建物なら家屋番号・種類・構造・床面積)を正確に記載する必要がある。固定資産税の納税通知書にも載ってはいるが、あれは税務上の表記なので登記簿の記載と微妙に違うことがある。
確実なのは登記情報提供サービスで登記情報を取得すること。PDF1通あたり331円。証明力はないが、申請書を書くための参照用途には十分。利用登録してクレジットカードを登録し、郵便で送られてくるIDでログインしたら、平日は23時まで利用できる。