作ったもの
e-Gov 法令の条文を装飾し、読みやすくする Chrome 拡張機能です。
Gemini と GitHub Copilot に手伝ってもらって仕上げました。Gemini はお金払ってますけど、GitHub Copilot は無料版です。
多くの項目を自由に設定できるようにしています。設定を JSON で書き出すこともできます。
使用例
作った理由
複雑な条文になると、括弧内を飛ばして読んで、概要を把握するという読み方が必須になります。最近は、市販の六法でも括弧内を網掛けしているものがあります。括弧内なのか、括弧外なのかという情報は、条文を正しく読むために重要です。
法令において、定義された語は特殊な意味を持ちます。定義語を把握しないと、条文を正確に読むことができません。法人税法における "普通法人" は、普通の法人を意味するものではなく、きちんと定義がされた語です。"外国法人" が "普通法人" に含まれるかどうかといったことは、定義を見ないとわかりません。
苦労(工夫)したところ
e-Gov の HTML の揺れ
e-Gov の HTML は見た目が同じでも class が違ったりして、全ての条文に対応するのが意外に面倒です。
const targetSelectors = [
'[class*="articletitle" i]', '[class*="paragraph" i]', '[class*="item" i]',
'[class*="sentence" i]', '[class*="portion" i]', '[class*="column" i]',
'[class*="list" i]', '[class*="istitle" i]', '[class*="itemtitle" i]',
'td', 'th'
].join(', ');
としているのですが、これが最善ではなさそうです。もっとスマートな方法があったら教えてください。除外する方を指定する方が楽かもしれません。ちなみに、"._div_ArticleTitle" は各条文の第1項だったりします。条文見出しは "._div_ArticleCaption" ですね。そして、条文第2項以降は、"._div_ParagraphSentence" ですね。
さらに、これは一例にすぎず、別の class が用いられているものもあります。目次や条文見出しを除外して、条文本文だけを拾いたいだけなのですが、そんな単純な作業でも結構な手間がかかります。
2026-04-15 追記
その後、いろいろ検討した結果、次のセレクタでいける気がしています。
const targetSelectors = [
'[class*="articletitle" i]', '[class*="sentence" i]',
'td', 'th'
].join(', ');
もしこれで問題があったら、また追記します。
本文中に挟まる HTML タグ
e-Gov の条文は、他の条文への参照がリンク化されています。つまり、条文中に <a> タグが入ることになります。HTML タグが存在するからといって、文が終わっているとはいえません。
定義語やキーワードの処理に関しては、HTML タグの切れ目が語の切れ目と認識していいし、むしろ認識すべきです。しかし、括弧の処理においては、HTML タグを無視し、正しく括弧の開始と終了を把握する必要があります。
定義語を拾う正規表現
法令には様々な定義のパターンがあるのですが、正規表現で拾いやすい定義は、"以下「○○」という" のパターンです。たぶん、かぎ括弧の中にかぎ括弧が入るパターンはないはずです。ないですよね?
/以下「([^」]+)」という/g
また、"「○○」とは、……をいう" のパターンも拾っていいでしょう。ただし、この場合には "とは、" と "をいう" の間に括弧書で句読点を含むものが入ったりするので注意する必要があります。
/「([^」]+)」とは、?(?:[^()。]|([^)]*))+をいう/
半角丸括弧と全角丸括弧は意味が違いますけど、フォントによっては読みづらいですね。
多くの法令は、2条あたりで、まとめて語の定義を行います。
(定義)
第二条 この法律において、次の各号に掲げる用語の意義は、当該各号に定めるところによる。
一 国内 この法律の施行地をいう。
二 国外 この法律の施行地外の地域をいう。
三 居住者 国内に住所を有し、又は現在まで引き続いて一年以上居所を有する個人をいう。
これも正規表現で頑張ります。
/^([一二三四五六七八九十百]+(?:の[一二三四五六七八九十]+)*|[ア-ン]) (.+?) .*?いう。(?=\s*(?:$|[ア-ン]|())/
"百" つまり、100号を超える定義にも対応しています。会社法施行規則には、100号を超える定義が並んでいます。1000号はさすがにないだろうと思います。
また、。(?=\s*(?:$|[ア-ン]|()) というのは、次のような形式への対応です。
六 業務執行者 次に掲げる者をいう。
イ 業務執行取締役、執行役その他の法人等の業務を執行する役員(法第三百四十八条の二第一項及び第二項の規定による委託を受けた社外取締役を除く。)
ロ 業務を執行する社員、法第五百九十八条第一項の職務を行うべき者その他これに相当する者
ハ 使用人
この処理では HTML タグを無視する必要がありますし、この部分全体が処理の対象となりうるため、"いう。" が対象文字列の末尾とは限りません。
対象から外した定義もあります。"以下この章において同じ" といったパターンは、適用範囲を正確に把握するのが難しく、断念しました。
また、"○○(……をいう。以下同じ。)" のパターンは、定義語の範囲を正確に把握することが困難であるため、これも断念しました。このパターンの定義は、定義語の範囲についての解釈が分かれることもあり得ます。
装飾する括弧と装飾しない括弧
条文本文中の括弧書は装飾しますが、単純に丸括弧で囲まれているものを拾おうとすると、余計なものまで拾ってしまいます。条文見出しはセレクタで排除できますが、号のさらに下位の項目は (1) などを用いるものがあります。こういったものは、除外する処理が必要です。
/^([0-90-9a-zA-Za-zA-Z一二三四五六七八九十ア-ン]+(?:の[0-90-9一二三四五六七八九十]+)?)$/
装飾を適用する最終段階での除外なので、")" は末尾に登場します。"(1の2)" といった形も対応しています。"(1の2の2)" は、今のところ装飾対象となるような条文にはないので対応していません。
フルスクリーン化
フルスクリーンを実現するためのカスタム CSS を特定するのに苦労しました。e-Gov の CSS はいろいろ頑張りすぎなんです。
:root {
--bar-height: 0 !important;
}
#rootbar, #titlebar, #sidebar, .revisionmeta, #provisionoptions, .toolbar {
display: none !important;
}
.revision {
margin-left: 0 !important;
}
試行錯誤を繰り返し、これで実現できました。特に --bar-height を発見するのが大変でしたね。こういうのは、AI に任せても簡単には見つけてくれません。
今後の展開
もう少し細部を詰めて、問題がなかったら、ストアに登録するかもしれません。
2026-05-02 追記
関連記事





