本文へ移動
話題

ガイド

同じ民法第四条に「二十歳」と「十八歳」。e-Govで過去の引用を確かめる

執筆: 読了時間:2分
同じ民法第四条に「二十歳」と「十八歳」。e-Govで過去の引用を確かめる

👁 111閲覧数

過去の記事で法令を引用するときは、法令名と条番号に加えて、いつの条文を指すかを先に決める。民法第四条をe-Gov法令APIで2022年3月31日時点と翌日で取り出すと、前者には「二十歳」、後者には「十八歳」とある。法令番号も条の見出しも同じだった。AIが記事の年代を読み落とし、現在の条文で古い引用を「訂正」する誤りは、この二つの応答を並べると再現できる。

四月一日をまたいで、同じ条を二度読む

今回調べたいのは、一人の契約が有効かどうかではない。古い原稿が掲げた条文は、その時点の条文と一致するのか、という資料の照合だ。題材には法務省が改正の案内を掲載している民法の成年年齢を選んだ。日付は経緯が分かるように2022年3月31日と4月1日に固定した。e-Gov法令APIの法令本文取得で民法の法令IDを指定し、それぞれの日を asof に渡した。法令全文から本則の第四条に範囲を絞って読んでいる。

照合した欄 2022年3月31日を指定 2022年4月1日を指定
法令番号 明治二十九年法律第八十九号 明治二十九年法律第八十九号
条の見出しと番号 (成年)第四条 (成年)第四条
条文中の年齢表記 二十歳 十八歳
取得した履歴情報の施行日 2021年9月1日 2022年4月1日
記事の出典に使う手がかり 民法、本則第四条、3月31日時点の版 民法、本則第四条、4月1日時点の版

右の二列を比べると、識別の手がかりごとに役割が違う。法令番号は同じ法令を選んだか確かめるのに役立つ。条番号と見出しは、長い法令のどの場所を読んでいるかを示す。本文中の語が変わったのは、異なる時点の内容を取り出したからだ。「同じ法令番号・同じ条番号だから引用も一致する」という照合条件を作ると、ここで誤って合格になる。

もう一つ面白いのは左列の日付である。3月31日を指定したのに、その応答の履歴情報に現れた施行日は2021年9月1日だった。指定日は「その時点でどの本文を読みたいか」という問い合わせの条件で、返ってきた版の施行日は版の情報だ。問い合わせ日に法改正があった、という意味ではない。2021年9月1日を見つけて「この日に成年年齢が二十歳になった」と書き足すこともできない。その版に含まれる個別の各条が変わった日まで一律に表すものとしては読めないからだ。

条番号を検索する前に、本則と附則を分ける

法令本文をチャットに貼り、「第四条を抜き出して」と頼むと、全文中の文字列が同じ箇所を拾う可能性がある。長い法令では本則のほかに附則があり、引用文や他条への参照にも「第四条」という文字は現れ得る。単純な検索で最初の一致を取れば、画面上は短い回答が出ても、その候補が対象の条そのものかはまだ分からない。私はここを文章の意味を推測する作業から、構造を選ぶ作業に変えた。

e-Govが返したJSONには、要素の名前、属性、子要素をたどれる構造がある。この例では MainProvision の下にある Article のうち、属性 Num が4であるものを選ぶ。本文として取りたいのはその条の文で、条名や見出しは別に読める。四番目に出現した段落を選ぶ操作でも、ファイル内に「第四条」と書いてある箇所をすべてつないで文章にする操作でもない。

別の法令に流用する場合、本則から取るという条件を自動的に引き継ぐ必要はない。読者が探しているのが改正法の附則にある施行期日なら、探す範囲はむしろ附則側だ。まず手元の質問を「どの法令の、どの部分の、どの日のテキストか」に書き直し、そこで初めて要素の範囲を決める。今回のコードは対象が複数見つかったときに最初の一件で進めないようにしてある。条件を狭め直すきっかけを残すためである。

議事録の表現をそのまま残す場合と、現状を追記する場合

説明用に、2022年3月31日付の架空の会議メモに「民法第四条は年齢二十歳をもって成年とするとしている」と書いてあると仮定する。作成時点の説明として校閲するなら、先に3月31日の本文を開く。今回の取得結果では年齢の表記は一致した。翌日以降の説明と違うという理由だけで、引用自体を十八歳に書き換えない。古い文書の転記を直す作業と、今日の読者へ現在との違いを説明する作業は、入れる場所が異なる。

同じメモを展示する解説文なら、「資料の日付時点の本文には二十歳とあり、翌4月1日時点の本文では十八歳になっている」と二文をつなげられる。原資料の発言を再構成せず、校閲者の追加説明として日付と根拠を示せる。逆に、資料に「春の会合」としか書かれておらず日が分からない場合は、どちらか一日の本文で断定するより、境界の前後で結果が分かれることを示し、会合の日付を確かめる方が先だ。

日付が一つ見つかっても、その日付が何に付いているかを確認したい。会議を開いた日、議事録を公開した日、ウェブ版をあとで更新した日は一致するとは限らない。議事録の発言内容を確かめるなら会議時点、現行の案内を公表した経緯を調べるなら案内の対象日というように、問いに合わせる。画面の「更新」と表示された日付を、過去の会議の実施日として流用する根拠はない。

改める法律と、改まった後の民法を区別する

法務省の案内は成年年齢に関する改正の背景と実施時期を知る入口になる。一方、具体的な一文が何と書かれていたかを比較するには、各時点での民法本文が必要だ。改正を行う法律の題名や番号を、改正後の民法そのものの法令番号の代わりに入れると、別の文書を調べてしまう。改正法は変更を追うため、時点指定した民法は結果の文言を読むため、と調査メモに用途を書き分けた。

さらに、施行が複数の日に分かれる改正を扱うときは、一つの公布日を法令全体の文言が切り替わった日とみなさない。e-Govの履歴の説明は、改正の公布と施行を区別し、施行時点の条文を追う考え方を示している。自分が引用する条について、比較の両端に得た本文が実際に異なったかを検査できるなら、その検査を残しておく。履歴IDが変わったことだけを個別の条文差分として報告しないようにする。

私が引き継ぎ用のメモに残すのは、法令番号、本則・附則の区別、条番号、基準日、実際に返った履歴ID、該当箇所の短い引用である。検索条件として入力した日と、画面を確認した日も混ぜない。このメモから次の人は、同じ二日を指定して文章を読み直せる。過去時点の記述を現代の平易な言葉で要約したときも、どこまでが原文で、どこからが自分の要約かを見分けやすい。

法令本文を二回取得して、違う箇所を確かめる

下のコードはPythonの標準ライブラリで動く。指定した二日について個別にHTTPで本文を取得し、法令IDが一致し、本則の第四条が一件だけ見つかったときに限って比較結果を出す。この題材専用の短い照合で、あらゆる法令の解釈を返す仕組みではない。過去記事の点検なら、調べたい語を最初から答えとして設定するより、二つの本文そのものを出してから照合する方がよい。

import json
from urllib.parse import urlencode
from urllib.request import Request, urlopen

BASE = "https://laws.e-gov.go.jp/api/2/law_data/"
CIVIL_CODE = "129AC0000000089"

def descendants(node, tag):
    if not isinstance(node, dict):
        return
    if node.get("tag") == tag:
        yield node
    for child in node.get("children", []):
        yield from descendants(child, tag)

def text_content(node):
    if isinstance(node, str):
        return node
    return "".join(text_content(c) for c in node.get("children", []))

def lookup(asof):
    query = urlencode({"asof": asof, "response_format": "json"})
    url = BASE + CIVIL_CODE + "?" + query
    req = Request(url, headers={"User-Agent": "Kiramesu legal text reading example"})
    with urlopen(req, timeout=25) as reply:
        data = json.load(reply)
    if data["law_info"]["law_id"] != CIVIL_CODE:
        raise ValueError("指定した法令と応答の法令が異なります")

    # 本則に限定する。附則の「第四条」はこの比較の対象に入れない。
    main_parts = list(descendants(data["law_full_text"], "MainProvision"))
    if len(main_parts) != 1:
        raise ValueError("本則の範囲を確認してください")
    selected = [
        a for a in descendants(main_parts[0], "Article")
        if a.get("attr", {}).get("Num") == "4"
    ]
    if len(selected) != 1:
        raise ValueError("対象の条を一件に決められません")

    article = selected[0]
    sentences = [text_content(t) for t in descendants(article, "Sentence")]
    info = data["revision_info"]
    return {
        "指定日": asof,
        "法令番号": data["law_info"]["law_num"],
        "履歴ID": info["law_revision_id"],
        "履歴上の施行日": info["amendment_enforcement_date"],
        "条名": text_content(next(descendants(article, "ArticleTitle"))),
        "見出し": text_content(next(descendants(article, "ArticleCaption"))),
        "本文": "".join(sentences),
    }

before = lookup("2022-03-31")
after = lookup("2022-04-01")
for record in (before, after):
    for label, value in record.items():
        print(label, value)
    print()
print("法令番号の一致", before["法令番号"] == after["法令番号"])
print("本文の一致", before["本文"] == after["本文"])

実行時に得た出力を載せる。二つの履歴IDの先頭は同じ民法の法令IDで、その後ろの版を識別する部分が異なる。「法令番号の一致」がTrueで「本文の一致」がFalseになったところまでが、今回のプログラムで再現した結果だ。

指定日 2022-03-31
法令番号 明治二十九年法律第八十九号
履歴ID 129AC0000000089_20210901_503AC0000000037
履歴上の施行日 2021-09-01
条名 第四条
見出し (成年)
本文 年齢二十歳をもって、成年とする。

指定日 2022-04-01
法令番号 明治二十九年法律第八十九号
履歴ID 129AC0000000089_20220401_503AC0000000037
履歴上の施行日 2022-04-01
条名 第四条
見出し (成年)
本文 年齢十八歳をもって、成年とする。

法令番号の一致 True
本文の一致 False

この出力を相手に渡すなら、差が出た二つの行だけでなく、その直前にある指定日と履歴IDも一緒に渡す。年齢の表記だけをチャットに貼ると、次にどの版から取ったのか質問されたときに元の作業へ戻れない。資料名から確認できた改正の説明と、二つの応答から確認できた本文の差を分けて説明できれば、あとで別の条を点検するときにも出発点が残る。

履歴が変わっても、第四条の一文が変わらないとき

今度は反対のケースを確かめた。照合したいのは「新しい履歴があれば、引用した文章も必ず変わるのか」という点だ。先ほどと同じ民法の法令IDを使い、指定日だけを2022年4月1日、2023年4月1日、2024年4月1日に切り替えた。それぞれ本則の第四条までたどり、段落に入っている最初の本文を取り出した。三回の応答はいずれも「年齢十八歳をもって、成年とする。」だった。ところが法令全体の履歴IDは三つとも違っていた。

APIに指定した日 応答にあった履歴ID 本則第四条の本文の比較
2022年4月1日 129AC0000000089_20220401_503AC0000000037 比較の基準にした一文
2023年4月1日 129AC0000000089_20230401_503AC0000000061 基準の一文と一致
2024年4月1日 129AC0000000089_20240401_504AC0000000102 基準の一文と一致

この違いは、古い記事を管理する表に役立つ。たとえば編集部で「参照した法令の履歴IDが更新されたら、引用を確認する」という仕組みを作る。履歴IDの変更を見つけた段階で付けられる印は「確認が必要」までだ。自動的に「この条文が改正された」と表示してしまうと、上の二つの新しい履歴で、実際には同じ文言の引用に訂正を出すことになる。逆に一文が同じだったからといって、その法律のほかの条や附則まで同じとは言えない。

照合表には「法律の履歴が変わったか」と「引用範囲の文字列が変わったか」を別々に記録する。今回の三行の差分として公表できるのは、取得した第四条の一文に相違が見つからなかったことだ。比較範囲を法律全体に拡張するなら、別の照合が要る。再確認するときは、たとえば2023年4月1日を指定したe-Govの応答を開き、法令全体の履歴情報と本則第四条を別々に読むと、この二段階を再現できる。

よくある質問

検索結果には同じタイトルしか出ません。どの情報で分ければよいですか。

今回なら法令番号が同じであることを確認した上で、指定した日付と返ってきた履歴IDを別の欄に記録する。条の比較ではさらに本則または附則、条名、見出しも控える。タイトルが一致しただけでは、引用した時期も箇所も確認できない。

AIが条の趣旨を正しく要約したら、原文を読み直す必要はありますか。

要約を説明として使う場面でも、かぎ括弧で原文として示す部分は実際の文言を確認する。今回なら「満二十歳」のように意味を補う表現を原文そのものとして引用しない。どの日の本文を読んだかも引用のすぐそばに置くと、現在の説明との混同を防げる。

二日分の本文が分かれば、当時の個別の案件にどちらが適用されるかも分かりますか。

この手順で確かめたのは指定時点で返された民法本則第四条の文言である。特定の行為への適用には事実の日付や他の規定、場合によっては経過措置など、比較した一文の外にある材料が関わる。記事で示す結果は、ここで実際に読み比べた範囲までにとどめる。

更新日:2026年11月13日

Google · あなたの情報源GoogleでKiramesuをもっと上位に表示-ワンクリックで設定お気に入りの情報源に追加 →

出典

// 関連記事も読む

Kiramesuの関連記事

Piotr Olszewski

Piotr Olszewski

著者・編集
次に読むGTA 6 発売前に分かったこと 公式発表・デモ報道・未確認点を整理速報GTA 6 発売前に分かったこと 公式発表・デモ報道・未確認点を整理GTA 6の発売前に、Guardian・Edge・Dazedの取材と公式発表を整理。公式、デモで確認、未確認の区別と、日本の価格・解禁時刻・言語をまとめました。

よく読まれている記事

  1. 1basal-omniは日本語の分類に使えるか JevBenchの順位と実際の仕事の違い
  2. 2Gemini 4 Argonと3.1 Proの比較 ポーランド語テストから日本語業務へ
  3. 3ローカルAIとAPIの料金比較:RTX 4090の実測コスト

// サイトマップ

kiramesuの数字 0アーカイブの記事数0過去7日間のニュース件数
× ‹ 拡大 ›