法令種別と法令ID
本稿では、主に法令APIや法令XMLを活用するための準備として、法令種別と法令IDの基礎について解説します。
法令種別
現在、e-Gov法令検索では、下記の種類の法令を格納しています。括弧内は、法令XML内の LawType
属性の値です。
- 憲法 (
Constitution
):日本における最高位の法令です。 - 法律 (
Act
):憲法の規定に基づいて国会の可決により成立する法令です。なお、古い形式の法令である「太政官布告」のうち、データ整備開始時点で法律として有効なものを含みます。 - 政令 (
CabinetOrder
):憲法及び法律の規定を実施するために内閣が制定する法令です。なお、古い形式の法令である「太政官布告」のうち、データ整備開始時点で政令として有効なものを含みます。 - 勅令 (
ImperialOrder
):古い形式の法令ですが、データ整備開始時点で法令として有効なものが含まれています。 - 府省令 (
MinisterialOrdinance
)、規則 (Rule
):法律や政令などに基づいて、各機関の長等が定める法令です。
なお、e-Gov法令検索の法令データは、次の時点(基準⽇)のデータから整備を開始しました。
- 憲法・法律・政令・勅令:2015(平成27)年8⽉1⽇時点
- 府省令・規則:2016(平成28)年10⽉1⽇時点
法令XML上での法令種別
法令XML上で、法令種別はLaw
要素のLawType
属性に格納されています。
Try it out!
サンプルコードの実行方法
このサイトに記載のサンプルコードのご利用は、ご自身の責任で行ってください。万が一サンプルコードの利用による不利益が生じた場合でも、一切の責任を負いかねますのでご了承ください。
サンプルコードは、一例として、下記の手順で実行することができます。
test.html
というテキストファイルを作成し、下記の内容を入力して保存してください。
<html><head><meta charset="utf-8"/><script>
【この場所にコードを記述】
</script></head></html>
test.html
をブラウザで開き、JavaScriptコンソールを開くと、出力が表示されます。JavaScriptコンソールは、Chrome/Edgeの場合は、Ctrl+Shift+J
(Windows/Linux) またはCmd+Opt+J
(Mac) で開くことができます。
法令APIで行政手続法(平成五年法律第八十八号)の法令種別を取得してみます。
行政手続法の法令IDは405AC0000000088
です。行政手続法の法令種別を表示するサンプルコードを示します。
(async () => {
// 法令APIから行政手続法(法令ID "405AC0000000088")の法令本文XMLを取得する
const r = await fetch("https://laws.e-gov.go.jp/api/1/lawdata/405AC0000000088");
const xml = await r.text();
const parser = new DOMParser();
const doc = parser.parseFromString(xml, "application/xml");
// Law要素を取得する
const lawEl = doc.getElementsByTagName("Law")[0];
console.log(lawEl);
// Law要素のLawType属性を取得する
const lawType = lawEl?.getAttribute("LawType");
console.log({ lawType });
})();
法令番号
法令番号は、法令の種類・制定者・年別に法令に付けられる番号です[1]。
例えば、「行政手続法」という法律の法令番号は「平成五年法律第八十八号」で、これは1993(平成5)年に公布された「法律」の88号目ということになります。この番号は年ごとに「第一号」から始まるので、法令を識別するためには「平成五年法律第八十八号」という法令番号全体が必要です。
また、府省令の法令番号には府省等の名称が含まれます。例えば「電気通信事業法施行規則」という省令の法令番号は「昭和六十年郵政省令第二十五号」です。「郵政省」は現在の総務省に相当しますが、法令番号には制定当時の名称が残ります。
府省令の中には、複数の制定者が共同で定めるものもあり、「共同命令」と呼ばれます。例えば、「令和二年内閣府・総務省・経済産業省令第一号」という法令番号を持つ共同命令があり、これは内閣府、総務省、経済産業省が関係する共同命令です。共同命令の場合も、年ごと、共同命令ごとに番号を付します[1]。「令和二年内閣府・総務省・経済産業省令第一号」という法令と、「令和二年内閣府令第一号」という法令は別物であることにご注意ください。
なお、「平成五年法律第八十八号」のような年・種類・番号の形式とは異なる体系で番号が付される法令もあります。このような例として、「人事院規則八―一二(職員の任免)」のように名称が付される人事院規則があります。
法令名と法令番号の関係
法令番号は、法令の法令を参照したり識別したりするときに用いられます。例えば、法令の中で「行政手続法」を参照したいときは、最初の参照箇所で「行政手続法(平成五年法律第八十八号)」と法令番号付きで記述し、2回目以降の参照箇所では法令番号を省略して「行政手続法」と記述します。
最初の参照箇所で法令名と法令番号を併記するのは冗長だと思われるかもしれません。しかしながら、法令名は改正により変更されることがあり、また、同じ法令名を持つ法令が複数あることもあります。特に、「○○法の一部を改正する法律」といった法令名は繰り返し登場することがあり、例えば、「電波法の一部を改正する法律」という法令名を持つ法律は、「令和二年法律第二十三号」「令和元年法律第六号」など複数存在します。このような事情もあり、法令を参照する際は法令名に加えて法令番号を併記することで識別します。
法令番号とは異なる効力を有する法令
「出入国管理及び難民認定法」という法律は、「昭和二十六年政令第三百十九号」という法令番号を持ちます。法律なのに法令番号に「政令」と付されている特殊な例ですが、これは、同法律が、制定時は政令として定められ、後に法律としての効力を有するものとされた名残です。このように法律でない形式で定められた法令が法律としての効力を持つものとされた例に、第二次大戦終結時、ポツダム宣言の受諾に伴い、本来法律で定めるべきものを一時的に命令として定めることができるとして定められた「ポツダム命令」と呼ばれる一連の命令があります。「出入国管理及び難民認定法」はポツダム命令の一つです。
ポツダム命令のように、法令番号と実際の効力が異なる場合、e-Gov法令検索では実際の効力に基づいて検索や表示が行われます。また、法令XMLの LawType
属性には実際の効力に基づいた値が指定されます。
法令XML上での法令番号と法令名
法令XML上で、法令番号はLawNum
要素に、法令名はLawTitle
要素に格納されています。
Try it out!
サンプルコードの実行方法
このサイトに記載のサンプルコードのご利用は、ご自身の責任で行ってください。万が一サンプルコードの利用による不利益が生じた場合でも、一切の責任を負いかねますのでご了承ください。
サンプルコードは、一例として、下記の手順で実行することができます。
test.html
というテキストファイルを作成し、下記の内容を入力して保存してください。
<html><head><meta charset="utf-8"/><script>
【この場所にコードを記述】
</script></head></html>
test.html
をブラウザで開き、JavaScriptコンソールを開くと、出力が表示されます。JavaScriptコンソールは、Chrome/Edgeの場合は、Ctrl+Shift+J
(Windows/Linux) またはCmd+Opt+J
(Mac) で開くことができます。
法令APIで行政手続法(平成五年法律第八十八号)の法令番号と法令名を取得してみます。
行政手続法の法令IDは405AC0000000088
です。行政手続法の法令番号と法令名を表示するサンプルコードを示します。
(async () => {
// 法令APIから行政手続法(法令ID "405AC0000000088")の法令本文XMLを取得する
const r = await fetch("https://laws.e-gov.go.jp/api/1/lawdata/405AC0000000088");
const xml = await r.text();
const parser = new DOMParser();
const doc = parser.parseFromString(xml, "application/xml");
// LawNum要素を取得する
const lawNumEl = doc.querySelector("Law > LawNum");
console.log(lawNumEl);
const lawNum = lawNumEl?.textContent;
// LawTitle要素を取得する
const lawTitleEl = doc.querySelector("Law > LawBody > LawTitle");
console.log(lawTitleEl);
const lawTitle = lawTitleEl?.textContent;
console.log({ lawNum, lawTitle });
})();
次に、いくつかの法令について、法令番号と法令名、法令種別を取得し、比較してみます。対象とする法令は下記の3法令です。
- 行政手続法(平成五年法律第八十八号):法令ID
405AC0000000088
- 電気通信事業法施行令(昭和六十年政令第七十五号):法令ID
360CO0000000075
- 出入国管理及び難民認定法(昭和二十六年政令第三百十九号):法令ID
326CO0000000319
(async () => {
const lawIdList = [
"405AC0000000088", // 行政手続法
"360CO0000000075", // 電気通信事業法施行令
"326CO0000000319", // 出入国管理及び難民認定法
];
for (const lawId of lawIdList) {
// 法令本文XMLを取得する
const r = await fetch(`https://laws.e-gov.go.jp/api/1/lawdata/${lawId}`);
const xml = await r.text();
const parser = new DOMParser();
const doc = parser.parseFromString(xml, "application/xml");
// 法令番号と法令名、法令種別を取得する
const lawNum = doc.querySelector("Law > LawNum")?.textContent;
const lawTitle = doc.querySelector("Law > LawBody > LawTitle")?.textContent;
const lawType = doc.getElementsByTagName("Law")[0]?.getAttribute("LawType");
console.log({ lawId, lawNum, lawTitle, lawType });
}
})();
法令ID
法令IDは、法令番号と1対1対応するように設計された15桁の機械可読な文字列で、法令を識別するために用いられます。
法令IDの基本的な構造は次のとおりです。
YYYTTTTTTTTTNNN <- 法令ID
↓ ↓ ↓
YYY 年
TTTTTTTTT 法令の種類
NNN 番号
- 年:法令番号に含まれる和暦の年です。元号を表す1桁と、年数を表す2桁(0埋め)から構成されます。元号は、
1
: 明治、2
: 大正、3
: 昭和、4
: 平成、5
: 令和です。 - 法令の種類:法令番号に含まれる法令の種類を表すコードです。詳細は後述します。
- 番号:法令番号に含まれる数値の番号3桁(0埋め)です。
なお、憲法、人事院規則、内閣総理大臣決定については、法令の種類と番号について上記の基本的な構造とは異なる構造を使用します。詳細は後述します。
例(「平成五年法律第八十八号」の法令ID):
405AC0000000088 <- 法令ID
↓ ↓ ↓
405 -> 平成五年
AC0000000 -> 法律(閣法)
088 -> 第八十八号
法令の種類ごとの法令IDのルールは下記の通りです。
憲法
- 1~3桁目: 和暦年
- 4~15桁目: 憲法を表す種別コード(
CONSTITUTION
)
例(日本国憲法(昭和二十一年憲法)):
321CONSTITUTION <- 法令ID
↓ ↓
321 -> 昭和二十一年
CONSTITUTION -> 憲法
法律
- 1~3桁目: 和暦年
- 4~5桁目: 法律を表す種別(
AC
) - 6~12桁目: 閣法と議員立法の区別
0000000
: 閣法1000000
: 衆議院議員立法0100000
: 参議院議員立法
- 13~15桁目: 番号
例(昭和三十五年法律第百五号):
335AC0000000105 <- 法令ID
↓ ↓ ↓ ↓
335 -> 昭和三十五年
AC -> 法律
0000000 -> (閣法)
105 -> 第百五号
政令
- 1~3桁目: 和暦年
- 4~5桁目: 政令を表す種別(
CO
) - 6~12桁目: 効力を表す種別コード
0000000
: 政令1000000
: 法律
- 13~15桁目: 番号
例(平成十五年政令第二百六十三号):
415CO0000000263 <- 法令ID
↓ ↓ ↓ ↓
415 -> 平成十五年
CO -> 政令
0000000 -> (政令)
263 -> 第二百六十三号
勅令
- 1~3桁目: 和暦年
- 4~5桁目: 勅令を表す種別(
IO
) - 6~12桁目: 効力を表す種別コード
0000000
: 政令1000000
: 法律
- 13~15桁目: 番号
例(昭和十八年勅令第六百十八号):
318IO0000000618 <- 法令ID
↓ ↓ ↓ ↓
318 -> 昭和十八年
IO -> 勅令
0000000 -> (政令)
618 -> 第六百十八号
太政官布告
- 1~3桁目: 和暦年
- 4~5桁目: 太政官布告を表す種別(
DF
) - 6~12桁目: 効力を表す種別コード
0000000
: 政令1000000
: 法律
- 13~15桁目: 番号
例(明治五年太政官布告第三百三十七号):
105DF0000000337 <- 法令ID
↓ ↓ ↓ ↓
105 -> 明治五年
DF -> 太政官布告
0000000 -> (政令)
337 -> 第三百三十七号
太政官達
- 1~3桁目: 和暦年
- 4~5桁目: 太政官達を表す種別(
DT
) - 6~12桁目: 効力を表す種別コード
0000000
: 政令1000000
: 法律
- 13~15桁目: 番号
例(明治十年太政官達第九十七号):
110DT0000000097 <- 法令ID
↓ ↓ ↓ ↓
110 -> 明治十年
DT -> 太政官達
0000000 -> (政令)
097 -> 第九十七号
太政官布達
- 1~3桁目: 和暦年
- 4~5桁目: 太政官布達を表す種別(
DH
) - 6~12桁目: 効力を表す種別コード
0000000
: 政令1000000
: 法律
- 13~15桁目: 番号
例(明治六年太政官布達第十六号):
106DH0000000016 <- 法令ID
↓ ↓ ↓ ↓
106 -> 明治六年
DH -> 太政官布達
0000000 -> (政令)
016 -> 第十六号
府省令
- 1~3桁目: 和暦年
- 4~5桁目: 府省令を表す種別(府省令ビットフラグの世代ごとに
M1
~M6
、詳細は下記) - 6~12桁目: 関係府省等の組み合わせを表す府省令ビットフラグを16進数にしたもの(詳細は下記)
- 13~15桁目: 番号
府省令ビットフラグ:
例(昭和二十五年郵政省令第四号):
325M50001000004 <- 法令ID
↓ ↓ ↓ ↓
325 -> 昭和二十五年
M5 -> (府省令)
0001000 -> 郵政省令(2進数`0000 0000 0000 0001 0000 0000 0000`を16進数にしたもの)
004 -> 第四号
例(令和元年厚生労働省・農林水産省・経済産業省・国土交通省令第六号):
501M60000f00006 <- 法令ID
↓ ↓ ↓ ↓
501 -> 令和元年
M6 -> (府省令)
0000f00 -> 厚生労働省・農林水産省・経済産業省・国土交通省令
(2進数`0000 0000 0000 0000 1111 0000 0000`を16進数にしたもの)
006 -> 第六号
人事院規則
- 1~3桁目: 和暦年
- 4桁目: 規則を表す種別(
R
) - 5~7桁目: 人事院規則を表すコード(
JNJ
) - 8~9桁目: 規則の分類
- 10~12桁目: 規則の分類中の連番
- 13~15桁目: 改正規則の連番
例(昭和三十三年人事院規則九―二四):
333RJNJ09024000 <- 法令ID
↓ ↓ ↓ ↓
333 -> 昭和三十三年
R -> (規則)
JNJ -> 人事院規則
09 -> 九
024 -> 二四
000 -> (指定なし)
例(平成二十七年人事院規則九―一七―一四二):
427RJNJ09017142 <- 法令ID
↓ ↓ ↓ ↓
427 -> 平成二十七年
R -> (規則)
JNJ -> 人事院規則
09 -> 九
017 -> 一七
142 -> 一四二
会計検査院規則、行政機関の規則(人事院規則を除く)及びその他機関の規則
- 1~3桁目: 和暦年
- 4桁目: 規則を表す種別(
R
) - 5~12桁目: 対象機関を表すコード(下記)
- 13~15桁目: 番号
対象機関を表すコード:
00000001
: 会計検査院規則00000002
: 海上保安庁令00000003
: 日本学術会議規則00000004
: 土地調整委員会規則00000005
: 金融再生委員会規則00000006
: 首都圏整備委員会規則00000007
: 地方財政委員会規則00000008
: 司法試験管理委員会規則00000009
: 公認会計士管理委員会規則00000010
: 外資委員会規則00000011
: 文化財保護委員会規則00000012
: 日本ユネスコ国内委員会規則00000013
: 最高裁判所規則00000014
: 衆議院規則00000015
: 参議院規則00000016
: 船員中央労働委員会規則00000017
: 司法試験管理委員会規則00000018
: 電波監理委員会規則00000019
: カジノ管理委員会規則
例(昭和二十二年会計検査院規則第一号):
322R00000001001 <- 法令ID
↓ ↓ ↓ ↓
322 -> 昭和三十三年
R -> (規則)
00000001 -> 会計検査院規則
001 -> 第一号
内閣総理大臣決定
- 1~3桁目: 和暦年
- 4桁目: 規則を表す種別(
R
) - 5~7桁目: 内閣総理大臣決定を表すコード(
PMD
) - 8~11桁目: 決定月日
- 12~15桁目: 同一決定日内の連番
例(平成二十七年十月十日内閣総理大臣決定):
427RPMD10100000 <- 法令ID
↓ ↓ ↓ ↓
427 -> 昭和三十三年
R -> (規則)
PMD -> 内閣総理大臣決定
1010 -> 十月十日
000 -> (連番)
Try it out!
サンプルコードの実行方法
このサイトに記載のサンプルコードのご利用は、ご自身の責任で行ってください。万が一サンプルコードの利用による不利益が生じた場合でも、一切の責任を負いかねますのでご了承ください。
サンプルコードは、一例として、下記の手順で実行することができます。
test.html
というテキストファイルを作成し、下記の内容を入力して保存してください。
<html><head><meta charset="utf-8"/><script>
【この場所にコードを記述】
</script></head></html>
test.html
をブラウザで開き、JavaScriptコンソールを開くと、出力が表示されます。JavaScriptコンソールは、Chrome/Edgeの場合は、Ctrl+Shift+J
(Windows/Linux) またはCmd+Opt+J
(Mac) で開くことができます。
法令APIで行政手続法(平成五年法律第八十八号)の法令IDを取得してみます。行政手続法の法令IDを表示するサンプルコードを示します。
(async () => {
// 法令APIから法令の一覧XMLを取得する
const r = await fetch("https://laws.e-gov.go.jp/api/1/lawlists/1/");
const xml = await r.text();
const parser = new DOMParser();
const doc = parser.parseFromString(xml, "application/xml");
// LawName要素の内容が "行政手続法" であるLawNameListInfo要素を取得する
const lawName = "行政手続法";
const infoEl =
doc.evaluate(`//LawNameListInfo[LawName[text()="${lawName}"]]`, doc)
.iterateNext();
console.log(infoEl);
// LawId要素の内容を出力する
const lawId = infoEl?.getElementsByTagName("LawId")[0]?.textContent;
console.log({ lawId });
})();
次に、下記のサンプルコードでは、法令APIを使って、法令IDの4~12桁目(概ね法令の種類に対応)にどのようなものがあるか調べてみます。
(async () => {
// 法令APIから法令の一覧XMLを取得する
const r = await fetch("https://laws.e-gov.go.jp/api/1/lawlists/1/");
const xml = await r.text();
const parser = new DOMParser();
const doc = parser.parseFromString(xml, "application/xml");
// 法令IDの一覧を取得する
const lawIdList =
[...doc.querySelectorAll("LawNameListInfo > LawId")]
.map(el => el.textContent);
console.log(lawIdList);
// 法令IDの4~12桁目(概ね法令の種類に対応)をカウントする
const counter = {};
for (const lawId of lawIdList) {
const part = lawId.slice(3, 12);
counter[part] = (counter[part] ?? 0) + 1;
}
console.log(counter);
})();
参考文献
- [1] ワークブック法制執務 第2版