WADA-DEV(7) $ /ja/blog/houritsu-japanese-laws-as-git/

NAME

houritsu-japanese-laws-as-git — 日本の全法令を git の履歴にしてみた

SYNOPSIS

法律は全然知らないけれど、AI で調べものが速くなった今どこまでできるのか試したくて、日本の全法令を改正 1 本 = 1 コミットの git リポジトリにしてみました。git log で改正の歴史が、git diff で何が変わったかが読めます。

DESCRIPTION

きっかけ

ただの思いつきです。

私は法律のことを全然知りません。ただ、最近は AI のおかげで、知らない分野の調べものがとても速くなりました。国会会議録の API を眺めていたときに、ふと「法律を git で管理したら面白いのでは」と思いつきました。知らない分野でも、AI と一緒ならどこまでできるのか試してみたくなりました。

法律の改正は「〇〇法の一部を改正する法律」という別の法律で行われます。中身は「第三条中『A』を『B』に改める」のような書き換えの指示なので、読んでも結局どこがどう変わったのかが分かりにくいです。

これは diff だな、と思いました。法律の本文をファイルにして、改正を 1 コミットにすれば、git diff で変わったところがそのまま見えるはずです。

調べてみると、ドイツには連邦法を git で管理している bundestag/gesetze がありました。日本にも e-Gov の全法令を毎日スナップショットしている elaws-history はありますが、XML をそのまま貯めているので、改正ごとの履歴としては読めません。それなら作ってみよう、となりました。

作ったもの

houritsu は、日本の法令を git の履歴にしたリポジトリです。

  • 法律・政令・省令など、e-Gov にある全法令が入っています。今ある法令ファイルは 8,982 個、main のコミットは 23,338 個です。
  • 1 コミットが「1 本の改正法が施行されたこと」に対応します。コミットの日付は施行日です。
  • 1 法令が 1 つの markdown ファイルで、メタデータは frontmatter に入っています。
  • 公布済みでまだ施行されていない改正は upcoming ブランチにあります。
  • 毎朝自動で e-Gov から差分を取ってきて、コミットを足しています。

データの元は e-Gov 法令 API v2 で、変換するプログラム houritsu-builder は Rust で書きました。

使ってみる

改正の歴史を見る

個人情報保護法のファイルに git log をかけると、この法律に手を入れた改正法が並びます。

$ git log --format='%ad %s' --date=short -- laws/act/415/415AC0000000057.md
2026-10-01 日本学術会議法 施行
2026-07-17 防災庁設置法の施行に伴う関係法律の整備等に関する法律 施行
2026-07-17 個人情報の保護に関する法律等の一部を改正する法律 施行
2026-06-24 民法等の一部を改正する法律の施行に伴う関係法律の整備等に関する法律 施行
2026-05-21 民事訴訟法等の一部を改正する法律 施行
...

個人情報保護法を直接いじる改正だけでなく、学術会議や防災庁の法律に巻き込まれて書き換わっていることが分かります。

何が変わったかを見る

2026-10-01 の日本学術会議法のコミットを見ると、個人情報保護法の別表に 1 行足されていました。

<tr>
<td>日本学術会議</td>
<td>日本学術会議法(令和七年法律第七十号)</td>
</tr>
<tr>
<td>日本銀行</td>

日本学術会議が国の機関から法人になったので、法人として個人情報保護法の対象に並んだ、ということのようです。

2026-07-17 の個人情報保護法の改正では、令和 2 年改正の附則にある見直しの規定が、こう変わっていました。

政府は、この法律の施行後三年ごとに、個人情報の保護に関する国際的動向、…
政府は、この法律の施行後三年を目途として、個人情報の保護に関する国際的動向、…

「三年ごとに」見直す、が「三年を目途として」見直す、になっています。改正法の条文から読み取るのは大変ですが、diff なら一目で分かります。

どの改正法か、どの議案か

コミットメッセージには、改正法の番号と公布日、同時に書き換わった他の法令が入っています。国会で成立した法律なら、衆議院の議案へのリンクも付けました。

日本学術会議法 施行
改正法令: 令和七年法律第七十号
公布日: 2025-06-18
施行日: 2026-10-01
変更された法令:
- 国家公務員法(昭和二十二年法律第百二十号)
- 日本学術会議法(昭和二十三年法律第百二十一号)(廃止)
...
Bill: 閣法 第217回国会 第36号
Bill-Url: https://www.shugiin.go.jp/internet/itdb_gian.nsf/html/gian/honbun/g21709036.htm

1 本の改正法が十数本の法令をまとめて書き換えていることも、このメッセージで分かります。

1 つの条文を追う

git log -L を使えば、特定の条文だけの変遷を追えます。

git log -L '/^##* *第十六条/,/^##* *第十七条/:laws/act/415/415AC0000000057.md'

限界

  • 履歴は 2015 年ごろからです。 e-Gov の改正データがそのあたりから揃っているので、それより前の改正は入っていません。
  • git blame は文言ができた日を示しません。 2015 年以前からある文は、最初のコミットに全部まとめて入っています。
  • 正本は官報です。 条文の文字は変えていませんが、これは公式のものではなく、法的な助言でもありません。

おまけ: git は 1970 年より前にコミットできない

作っていて初めて知ったのですが、git は 1970 年より前の日付ではコミットできません。

$ GIT_AUTHOR_DATE='1969-12-31T12:00:00+0000' GIT_COMMITTER_DATE='1969-12-31T12:00:00+0000' \
git commit --allow-empty -m test
fatal: invalid date format: 1969-12-31T12:00:00+0000

git はコミットの日時を Unix 時間(1970-01-01 00:00 UTC からの秒数)で持っていて、マイナスの値を受け付けないためです。日本時間の 1970-01-01 00:00 も UTC では 1969 年の大晦日になるので、弾かれます。

ところが日本の法令は、明治から施行されているものがあります。houritsu で一番古いコミットは、1872 年 11 月 9 日施行の改暦ノ布告(太陽暦に切り替えた布告)でした。こういう 1970 年より前のコミットが 317 個あります。

仕方がないので、これらはコミットの日付を 1970-01-02 に寄せて、本当の施行日はコミットの Enforced トレーラーと frontmatter に書くことにしました。

おわりに

作ってみて、法律は思ったよりずっと頻繁に、思ったより他の法律に巻き込まれて変わっていると分かりました。法律を知らなくても、データの形にしてしまえば眺められるのは面白かったです。

次は、houritsu と国会会議録の API を組み合わせて、kokkai-cli のようなものを作ったら面白そうだと思っています。コミットから、その改正を通した法案と国会での議論までたどれる道具です。暇なときにやってみようと思います。

データは CC BY 4.0、builder は MIT で公開しています。使ってみて、こういう見方ができると便利、というのがあれば教えてください。

出典:e-Gov法令検索(https://laws.e-gov.go.jp/)、PDL1.0。houritsu-builder が markdown に加工して作成。

bookmark: B! はてなブックマークに追加

COMMENTS