Skip to content

isValidLawId ​

INFO

houki-abbreviations v0.7.1 の dist/index.d.ts と specs/current/is_valid_law_id/spec.md から自動生成しました(仕様 ID 15 件・2026-10-10)。手で編集しないでください。再生成は node scripts/generate-reference.mjs です。

関数 ・ v0.5.0 で追加 ・ family では未使用

e-Gov の law_id 形式が妥当かを判定する純粋関数。

外部 API は叩かないので「e-Gov 上で実際に存在するか」は確認しない (それは CI スクリプト scripts/verify-law-ids.mjs の責務)。

認識する種別 ​

e-Gov の公式仕様(法令データ ドキュメンテーション「法令種別と法令ID」 https://laws.e-gov.go.jp/docs/law-data-basic/607318a-lawtypes-and-lawid/ )に合わせた 次の 6 つの形だけを受け付ける(v0.7.0、Issue #23)。長さはどれも 15 文字、英字は大文字だけ。 元号の 1 桁は 1〜5。件数は 2026-09-30 に e-Gov 法令 API v2 GET /api/2/laws で 取得した全 9,570 件の内訳で、6 つの形で全件が true になる。

形件数例
元号 + 年 + AC / CO / IO / DF / DT / DH + 10 桁4,677363AC0000000108(消費税法)
元号 + 年 + M + 1〜6 + 16 進 7 文字 + 3 桁4,687340M50000040011(所得税法施行規則)
元号 + 年 + R + 10 進 8 桁 + 3 桁49322R00000001001(会計検査院規則)
元号 + 年 + RJNJ + 8 桁142324RJNJ01001000(人事院規則一―一)
元号 + 年 + RPMD + 8 桁14351RPMD12230000(内閣総理大臣決定)
321CONSTITUTION1日本国憲法

v0.6.1 までは元号の桁・M の次の桁・R の機関番号・CONSTITUTION の先頭を確かめて いなかった(000AC0000000000 340M70000040011 322R0000000A001 363CONSTITUTION も true)。v0.5.x が受け付けていた MO / RU は e-Gov の実データに 1 件も無かったため v0.6.0 で外した(省令は M、規則は M か R で始まる)。

利用者と得られる結果 ​

この関数の利用者と、利用者が渡すもの・得られる結果を示します。

  • houki-abbreviations を import する側(houki-egov-mcp・houki-nta-mcp などの MCP サーバー、辞書を検査する validateAllEntries、辞書のテスト)。law_id を渡して、e-Gov の法令 ID として形が正しいかを true / false で受け取る

シグネチャ ​

import して呼ぶときの形です。パッケージの型定義(dist/index.d.ts)から写しています。

ts
function isValidLawId(law_id: string): boolean;
引数説明
law_id判定対象の文字列

戻り値: 形式が妥当なら true、そうでなければ false

例 ​

型定義の JSDoc に書かれている例です。

例
ts
isValidLawId('363AC0000000108');  // true(消費税法)
isValidLawId('340M50000040011');  // true(所得税法施行規則。v0.6.0 から)
isValidLawId('105DF0000000337');  // true(太政官布告。v0.6.0 から)
isValidLawId('321CONSTITUTION');  // true(日本国憲法)
isValidLawId('106DH0000000016');  // true(太政官布達。v0.7.0 から)
isValidLawId('363CONSTITUTION');  // false(v0.7.0 から。v0.6.1 では true だった)
isValidLawId('699AC0000000001');  // false(元号の桁は 1〜5。v0.7.0 から)
isValidLawId('505MO0000000020');  // false(e-Gov に無い形。v0.5.x では true だった)
isValidLawId('AAA');              // false
isValidLawId('');                 // false
isValidLawId(' 363AC0000000108'); // false(前後空白は呼び出し側で trim)

扱わないこと ​

この関数が意図して扱わないことです。

  • その law_id の法令が e-Gov に実在するかを確かめること(形だけを見る。実在の確認は e-Gov API を呼ぶ scripts/verify-law-ids.mjs で、パッケージには含まれない)
  • law_id から法令名やエントリを引くこと(lookupByLawId)
  • 前後の空白・全角文字・小文字を直して判定すること(直さずに false を返す)
  • 法令番号(昭和六十三年法律第百八号 の形)を判定すること(law_num は対象外。表記を揃えるのは normalizeLawNum)

処理の流れ ​

仕様書の「処理の流れ」の節を、図も含めてそのまま写しています。図が大きいので畳んでいます。

処理の流れの図(仕様書の写し)

図の中の番号は「できること」の仕様 ID の末尾 3 桁です。

仕様項目の一覧 ​

この関数の仕様項目 15 件の見出しです。仕様項目は受入テストと 1 対 1 で対応していて、条件と例は仕様書ページで読めます。

仕様項目の見出し(15 件)
仕様 ID仕様項目
001法律・政令・勅令・太政官布告・太政官達・太政官布達の形を受け付ける
002府省令の M の形と、機関の規則の R の形を受け付ける
003人事院規則と内閣総理大臣決定の形を受け付ける
004憲法の形を受け付ける
005e-Gov に無い MO・RU の形は受け付けない
006知らない種別コードは受け付けない
00715 文字でなければ受け付けない
008空文字は受け付けない
009前後の空白を取り除かない
010小文字の英字は受け付けない
011文字列でない値は受け付けない
012全角の英数字は受け付けない
013元号の桁が 1〜5 以外なら受け付けない
014M の次の 1 桁が 1〜6 以外なら受け付けない
015R の機関番号に英字があれば受け付けない

関連ページ ​

このページの元になった文書と、あわせて読むページです。

本サイトの内容は調査の出発点であり、法的助言ではありません。個別の事案は資格を持つ専門家に相談してください。免責事項と利用範囲