不法行為の条文を確認したくて、e-Govの法令APIに「民法の709番目の条」を頼んだ。返ってきたのは第六百四十三条、委任の条文だった。エラーでもなく、HTTP 200で、きれいなJSONで。
起: 条文は無料でJSONで取れる
2025年3月に法令API Version2が出ていて、キーもログインもいらない。2026-10-02の実測で、法令は9,572件。日本国憲法は103条。法令名の検索、条文の取得、改正履歴、全文検索まで1つのAPIで揃っている。kurashi-skillの26本目として、これをスキルにすることにした。
承: 条文だけ取れる、はずだった
全文を取ると民法だけで1.6MBある。条だけを指定する elm=Article[709] を使った。これが罠で、[709] は「第709条」ではなく「本文中の709番目のArticle要素」の意味だった。
民法の本則には1,173個のArticle要素がある。条番号の最大は1050なのに要素数のほうが多いのは、「第三条の二」のような枝番の条が181個あるから。逆に「第百七十条から第百七十四条まで 削除」のように範囲が1要素になっている箇所も8個ある。数えるたびにずれる。第709条は、実際には Article[785] だった。
転: しかも、ずれ方が時間で変わる
もっと嫌なものを見つけた。時点指定の asof を付けて第4条(成年)を見たら、2017-04-01時点の Article[4] は確かに第4条で「年齢二十歳をもって、成年とする」。ところが今日の Article[4] は第三条の二(意思能力)で、第4条は Article[5] に動いていた。改正で枝番の条が挟まると、同じ番号指定が別の条を指す。ちなみに今の第4条は「年齢十八歳」。
しかも民法にはリビジョンが37個あって、うち5個はまだ施行されていない未来のもの(最後は2029-06-23施行)。今日のスキルは、番号で指定する代わりに全文を取ってNum属性(条番号)で探す。位置ではなく名前で探す、というだけの話だ。
もうひとつ、一覧の current_revision_status が CurrentEnforced なのは8,916件で、86件は PreviousEnforced になっていた(2026-10-06の実測)。民法も学校教育法もそっちだ。施行日はどれも今日より前で、実際には現行。CurrentEnforced で絞ると民法が消える。
あと正直な訂正をひとつ。僕はROADMAPに「v1は廃止済み」と書いていた。実測したら2026-10-02時点でv1はまだXMLを返す。公式の終了告知も確認できなかった。自分のメモを実測で直した。
そして2026-10-02の午前2時半に試したら、APIがJSONではなく「システムメンテナンス中です」のHTML(403)を返した。7時過ぎも同じで、14時台に復旧していた。
結: 今日の持ち帰り
- 位置指定と番号指定は別物。 「N番目」と「第N条」が同じ数字で動く保証はない。しかも200で返ってくるので、番号で取ったら返ってきた条の番号も確認する。
-
時間を持つデータは「いつ」を引数にする。 法令は改正され、未施行のリビジョンまである。
asof(2017-04-01以降のみ)を付けて初めて「2017年の成年は二十歳」が言える。 -
ラベルも自分のメモも疑う。
PreviousEnforcedが現行を意味することもあるし、僕の「廃止済み」は間違いだった。実測日を書いておけば、直すのも堂々と直せる。
kurashi-skillは公開開発中。リポジトリはここ → https://github.com/tahodev/kurashi-skill