e-Gov法令APIを使ってみた

煮干し雑記帳

概要

法令の名前や内容を取得できる、e-Gov法令APIを使ってみました。

法令APIのHP
e-Gov法令APIのホームページ

e-Govとは

e-Gov(イーガブ)は、デジタル庁が整備、運営しているサイトです。サイトの利用者は、行政機関に対する届出・申請等の手続、法令の検索、行政機関が提供するオープンデータの検索、パブリックコメントの提出等をすることができます。

APIとは

APIとは、簡単にいうと、データを投げ入れることで、何らかの処理を行って、何らかの結果を返してくれる「窓口」のようなものです。

例えば、メッセージアプリ(LINEやSlack)が提供するAPIに、この人に対してこういうメッセージを送ってほしいという指示を送信すると、実際にメッセージを送信してくれます。

APIは、Application Programming Interfaceの略称です。Interfaceには「接触面」「接点」という意味がありますが、APIはまさに特定のアプリケーションと別のアプリケーションの「接点」となります。

法令APIとは

法令APIは、4種類のAPIで構成されています(以下の説明は、「法令API仕様書」2頁より)。

①法令名一覧取得API
公布済み現行法令の法令 ID、名称、法令番号及び公布年月日を取得します。リクエストパラメータに法令の種類(「全法令」、「憲法・法律」、「政令・勅令」又は「府省令」)を指定して法令の一覧を取得することもできます。
②法令取得API
施行中の現行法令の全文を取得します。本文に図が含まれている場合は、図の画像を取得することもできます。
③条文内容取得API
指定した条件(法令番号又は法令ID並びに条、項又は別表)に合致する施行中の現行法令の内容を取得します。本文に図が含まれている場合は、図の画像を取得することもできます。
④更新法令一覧取得API
指定した日付に更新された法令の一覧を取得します。

以下では、各APIを実際に使ってみます。それぞれの箇所で紹介するURLには、ブラウザ上でもアクセスでき、最長10秒程度待てばデータが表示されます。

①法令名一覧取得API

凡例

リクエストURI
https://laws.e-gov.go.jp/api/{Version}/lawlists/{法令種別}
{Version}
1(2025年1月現在、バージョンは1なので1を指定します)
{法令種別}
全法令→1
憲法・法律→2
政令・勅令→3
府省令・規則→4

使用例

例えば、全法令の一覧を取得するときは、以下のURLにアクセスします。
https://laws.e-gov.go.jp/api/1/lawlists/1

このようなデータが取得できます。明治時代の太政官布告のうち、今なお効力を有するもの(「爆発物取締罰則」や「決闘罪ニ関スル件」など)も取得できるようです。

全法令の一覧
全法令の一覧

②法令取得API

凡例

リクエストURI
https://laws.e-gov.go.jp/api/{Version}/lawdata/{法令番号}又は{法令ID}
{Version}
1(2025年1月現在、バージョンは1なので1を指定します)
{法令番号}
法令名一覧取得APIで取得できます(〈LawNo〉タグで囲まれているものです)
{法令ID}
法令名一覧取得APIで取得できます(〈LawId〉タグで囲まれているものです)

使用例

民法の全文を取得してみます。

まず、法令名一覧取得APIで民法の情報を取得します。すると、民法の法令番号が「明治二十九年法律第八十九号」で、法令IDは「129AC0000000089」だとわかります(①参照)。

したがって、民法の全文を取得するには、以下のいずれかのURLを用います。

このようなデータが取得できます

民法の全文
民法の全文

③条文内容取得API

凡例

リクエストURI
{Version}
1(2025年1月現在、バージョンは1なので1を指定します)
{法令番号}
法令名一覧取得APIで取得できます(〈LawNo〉タグで囲まれているものです)
{法令ID}
法令名一覧取得APIで取得できます(〈LawId〉タグで囲まれているものです)
{条}{項}{別表}
取得対象の条/項/別表を指定します。必要がないものは省略します。

使用例

例えば、民法1条2項(信義誠実の原則)の内容を取得するには、以下のいずれかのURLを用います。

このようなデータが取得できます

民法1条2項
民法1条2項

④更新法令一覧取得API

凡例

リクエストURI
https://laws.e-gov.go.jp/api/{Version}/updatelawlists/{年月日}
{Version}
1(2025年1月現在、バージョンは1なので1を指定します)
{年月日}
取得対象の日付を「yyyyMMdd」形式で指定します。指定可能な年月日は 2020年11月24日以降です。また、未来の日付は指定できません。

使用例

例えば、2020年11月24日に更新された法令の一覧を取得するなら、以下のURLを用いることになります。
https://laws.e-gov.go.jp/api/1/updatelawlists/20201124

このようなデータが取得できます

2020年11月24日に更新された法令の一覧
2020年11月24日に更新された法令の一覧

条文を取得するプログラムを書いてみた

法令APIからデータを取得して(参考)、コンソールログに表示するプログラムの例を示します。言語は、JavaScriptです。

ブラウザの「デベロッパーツール」を開き(Ctrl/Command + Shift + I)、「コンソール」にコードを貼り付けてみてください。数秒後に、民法1条2項の条文(「権利の行使及び義務の履行は、信義に従い誠実に行わなければならない。」)が表示されます。

lawId,article,paragraphの値を変えれば、別の法律の別の条文が表示されます。いろいろ試してみると面白いと思います。

※プログラムの実行は自己責任でお願いします。


//法令ID、条、項を定義する
const lawId = "129AC0000000089";//民法
const article = "1";//1条
const paragraph = "2";//2項

//URLを組み立てる
const url = "https://laws.e-gov.go.jp/api/1/articles;lawId=" + lawId + ";article=" + article + ";paragraph=" + paragraph + ";";

//データ取得関数を定義する(非同期処理を使用)
async function getData() {
    //リクエストを送信する(fetchAPI)
    const r = await fetch(url);
    const xml = await r.text();

    //受け取ったXMLデータを読み込む
    const parser = await new DOMParser();
    const txt = await parser.parseFromString(xml, "text/xml");

    //データから条文を取得する
    const sentences = await txt.querySelectorAll("Sentence");
    for (s of sentences) {
        //コンソールログに書き込む
        console.log(s.textContent);
    }
};

//データ取得関数の実行
getData();

おわりに

今回は、デジタル庁の提供する「法令API」を使ってみました。人間が法令を検索する際は、e-Gov法令検索の方が便利ですが、プログラムが法令を検索するには、こちらのAPIの方が便利だと思います。法律と技術を組み合わせる「リーガルテック」分野は、今後どのような発展を遂げていくのでしょうか。楽しみです。

※APIの詳細な仕様については、「法令API仕様書」をご一読ください。

参考文献