LoginSignup
3
2

法律の(かっこ)ネスト問題:深すぎる「◯段ネスト」条文と、読解を拒む「とあるのは」条文《法令.app》

Last updated at Posted at 2024-06-03

誰でも楽しく:books:法律:books:が読める《法令.app》というWebアプリを作っています。

:open_mouth: 誰にとっても平等に「条文は読みにくい」

当初はWebアプリにするつもりはなく、Chromeの「拡張機能」で、「漢数字」をローマ数字にするだけで読みやすくなると考えました。「昭和六十年」を「1985年」、「一、○二五、二○○円」を「1,025,200円」にするだけで頭に入りやすくなります。

しかし、拡張機能はセキュリティの制限が厳しくなり(前はできた気がしますが)本文を書き換えるのは「裏ワザ」的になり、今後はさらに厳しそうでした。

次はどうしようかと調べているときに、カルアパ(@lawyer_alpaca)さんの記事を見つけました。「すでに先のことまで大体やられてしまっているぞ。。」と思って、開発意欲がいったんゼロになりました:weary: 3ヶ月くらい考えるのも止めてましたね。

かるあぱさんの記事は面白くて、実際いろいろ使わせてもらいました(参照先・被参照先法令など。不完全ですが)。とくに大きかったのが「(程度の差はあれど)どんなに優秀な人でも、法律のプロでも、条文は読みにくい!」という大きな気付きを得たことです。「気づき」、なんてシャラくさいですが、ここでこそ使うべきだと思います。

誰もがそう思っていたけど、自分の頭の悪さを認めるようでなかなか言えなかった。でも、考えてみれは、こんな独特な文章をスラスラ読めるわけがない。固定観念がくつがえされました。

()かっこ の処理が一番楽しくて:smile:、一番むずかしい:weary:

下は、カルアパさんが紹介していた「()かっこ」のネスト問題です。プログラミングではif文などのネストを深くすることは避けられますが、法律の条文では「多段ネスト」がよく見られます。2段くらいであれば、かろうじて読めますが、だんだんしんどくなってきます。

やはり「脳のリソース」をかなり食っているようで、JavascriptとCSSでパッと消したときの、「視界が開ける感じ」は何度やってもいいものです。

《法令.app》では、ボタンを押して()の中を隠すのと、色を変えて「どのネストの中にいるのか」なんとなく分かるようにしました。その後、「色覚」は個人差があるらしいので、色よりも明度を下げたり反転したりしました。

追記:育児休業、介護休業等育児又は家族介護を行う労働者の福祉に関する法律 第二条(定義) が、()を隠したときのスッキリ感を味わえます。ぜひ。(ほとんど何も残らない笑)

しかし、リンクの種類が増えて情報量が激増していくとゴチャゴチャになりました。かえって読みにくくなりつつあります。

paren.gif

いい解決法は思いついていないのですが、「複雑なものを人が理解しやすく表現するツール」としては「コード・エディター」がとても優れていて、そのアイデアが使える気がしています。

一つ、ヒントかもしれないと思うのは「カラーテーマ」です。VScode を使っていて「このカラーテーマはすごく読みやすい」と思って使っていても、疲れたり、部屋の光量が変わると、急に文字が追えなくなることがあります。「今日はもう終わりか」となりかけたときに、テーマを切り替えると、また復活することがあります。

もしかすると、「ベストの表示形式」を見つけるより、「手軽にテーマを切り替えられる」と読みやすさに効果があるのかもしれません。

その1つの試みで「表示の変化をリセットして、ただの黒いフォントだけにする(フラット・モード)」のも用意してみました。模索中です。(知識ゼロですが、「論理式」や宣言型のプログラムのような見た目に変換して見せるとか、パッパと切り替えられるといいのかも)

:jack_o_lantern: 限界に挑戦する「5段ネスト」誰か止めなかったのか・・

とりあえず「3段目」までスタイルを作りました。それ以上は無さそうに思えました。4段ネストになると「人の理解」を超えている気もします。ちょっと気になって、今回記事を書くにあたって、全法令の「ネスト数」を調べるスクリプトを書いてみました。

Pythonスクリプト
count_paren_depth.py
for path in glob.glob('# 法律データ/*.xml #'):
    with open(path) as f:
        for row in f.readlines():
            max = depth = 0
            for i in range(0, len(row)):
                if '」とあるのは「' in row:
                    continue

                c = r[i]
                if c == '':
                    depth += 1
                    if( depth > max ):
                        max = depth
                elif c == '':
                    depth -= 1
            print(max, path)

1段は 52,946、2段は 4,290、 3段は270、4段は32でした。たしかに4段以降は少ない(正確には個数でなく「最小のブロック内にあったかどうか」なので、もうちょっと増えます)。

そして、「2ヶ所」だけ、しかも1つの法令の中に「5段ネスト」がありました!

電気事業託送供給等収支計算規則・別表

その他に整理された費用のうち、電源開発促進税、事業税(当該額に料金収入比(電気事業営業収益(電気事業雑収益(1.(2)⑥イに整理された額及び契約超過金収益等を除く。)の合計額に占める1.(2)に定めるところにより配電部門の収益として整理された額(電気事業雑収益(1.(2)⑥イ及びロに整理された額を除く。)の合計額の割合をいう。以下この別表において同じ。)を乗じて得た額に限る。以下この(15)における開発費、開発費償却及び電力費振替勘定(貸方)について同じ。)、開発費、開発費償却及び電力費振替勘定(貸方)を、配電部門の費用に整理すること。

長い段落でもなく、一見「おとなしく」見えます。展開してみます。

その他に整理された費用のうち、電源開発促進税、事業税(
1#  当該額に料金収入比(
1 2#  電気事業営業収益(
1 2 3#  電気事業雑収益(
1 2 3 4#  1.(2)⑥イに整理された額及び契約超過金収益等を除く。
1 2 3#  )の合計額に占める1.(2)に定めるところにより配電部門の収益として整理された額(
1 2 3 4#  電気事業雑収益(
1 2 3 4 5#  1.(2)⑥イ及びロに整理された額を除く。
1 2 3 4#  )の合計額の割合をいう。以下この別表において同じ。
1 2 3#  )を乗じて得た額に限る。以下この(15)における開発費、開発費償却及び電力費振替勘定(
1 2 3 4#  貸方
1 2 3#  )について同じ。
1 2#  )、開発費、開発費償却及び電力費振替勘定(
1#  貸方
)を、配電部門の費用に整理すること。

現状、《法令.app》では、3段ネスト以降は同じスタイルになっています。これはもう「ネストは2段まで」とか、法律で決めたほうがいいのではないでしょうか:sob: (実際、条文作成の「作法」「禁止事項」などは決められているのかもしれません。調べてみます)

paren1.png

:angel_tone1: これはもうムリな「とあるのは」ゲシュタルト崩壊条文

上のスクリプトでは、文中に 」とあるのは「 が出てきたらスキップしています。「とあるのは」が連発する条文は「手に負えない」からです。スキップ処理なしで「10ネスト」の記録を叩き出したのが次の条文です。

せっかく読んでいただいているのに、これで法律が嫌いになられては困ってしまうので開閉式にしておきます。

所得税法施行規則《附則(2014年7月9日財務省令第53号)87条2項》

「とあるのは」条文を読む

支払事務取扱者等が同項の規定により同項に規定する番号未告知者の個人番号を確認した場合における附則第50条第1項(支払事務取扱者等の確認事項の記録及び帳簿書類の保存等)、第60条第2項(利子等の支払調書及び配当等の支払調書に関する経過措置等)、第69条第2項(株式等の譲渡の対価等の支払調書に関する経過措置)、第71条第2項(信託受益権の譲渡の対価の支払調書に関する経過措置)、第72条第2項(先物取引に関する支払調書に関する経過措置)及び第73条第2項(金地金等の譲渡の対価の支払調書に関する経過措置)の規定の適用については、附則第50条第1項中「同条第5項の規定による告知の際に提示された同項に規定する確認書類の名称又は当該告知の際に署名用電子証明書等の送信を受けた」とあるのは「同条第27項の規定により同項に規定する番号未告知者の個人番号を確認した」と、附則第60条第2項中「が番号利用法整備令第16条第5項(所得税法施行令の一部改正に伴う経過措置)の規定による告知をする日(その者が同項」とあるのは「の個人番号を番号利用法整備令第16条第27項(所得税法施行令の一部改正に伴う経過措置)の規定により確認した日(同日が同条第5項」と、「までに当該告知をしないときは」とあるのは「後である場合には」と、附則第69条第2項中「が番号利用法整備令第16条第13項(所得税法施行令の一部改正に伴う経過措置)の規定による告知をする日(その者が同項」とあるのは「の個人番号を番号利用法整備令第16条第27項(所得税法施行令の一部改正に伴う経過措置)の規定により確認した日(同日が同条第13項」と、「までに当該告知をしないときは」とあるのは「後である場合には」と、附則第71条第2項中「が番号利用法整備令第16条第17項(所得税法施行令の一部改正に伴う経過措置)の規定による告知をする日(その者が同項」とあるのは「の個人番号を番号利用法整備令第16条第27項(所得税法施行令の一部改正に伴う経過措置)の規定により確認した日(同日が同条第17項」と、「までに当該告知をしないときは」とあるのは「後である場合には」と、附則第72条第2項中「が番号利用法整備令第16条第21項(所得税法施行令の一部改正に伴う経過措置)の規定による告知をする日(その者が同項」とあるのは「の個人番号を番号利用法整備令第16条第27項(所得税法施行令の一部改正に伴う経過措置)の規定により確認した日(同日が同条第21項」と、「までに当該告知をしないときは」とあるのは「後である場合には」と、附則第73条第2項中「が番号利用法整備令第16条第25項(所得税法施行令の一部改正に伴う経過措置)の規定による告知をする日(その者が同項」とあるのは「の個人番号を番号利用法整備令第16条第27項(所得税法施行令の一部改正に伴う経過措置)の規定により確認した日(同日が同条第25項」と、「までに当該告知をしないときは」とあるのは「後である場合には」とする。

「とあるのは条文」とは、私が勝手に呼んでいるだけです。「Aの場合は、BとあるのはCとする」と読み替えています。法改正などで、全体の整合性を保つためにやっているのだと思います。

上の条文はとても長いですが「。」が最後に一つしかありません。その中に文脈が異なる文(の断片)が散りばめられています。それで「一つの文」になっています。これを読み続けたら廃人になりそうです。もう一つ困るのが(かっこ)を閉じずに断片化することがあり、目で読むときに文の構造が分からなくなる(既に分からないのに、もっと分からなくなる)のに加えて、データ処理が難しくなります(現状できてません)。

かっこの片方だけ断片化してるのは、以下のようなことです。正規表現の職人なら処理できるかもしれません。ただ、ここに突っ込むと、「」の中に「の片方だけ入ってる、とかいう新たな深淵に引き込まれそうで、見ないことにしてます。

  1. 「が番号利用法整備令第16条第5項(所得税法施行令の一部改正に伴う経過措置)の規定による告知をする日その者が同項」
  2. とあるのは
  3. 「の個人番号を番号利用法整備令第16条第27項(所得税法施行令の一部改正に伴う経過措置)の規定により確認した日同日が同条第5項」
  4. とする。

実際、ネストを過剰に深く認識してしまってバグになっています(下)。ただ、この類の条文は「優先順位」からすると高くはないはずです。他のことに集中したほうがいいのかもしれませんが、法律を読むのに慣れない人が挫折する「読めないのが普通な条文」という「地雷」をうまく避けてほしい気持ちがあります。

スクリーンショット 2024-06-03 102837.png

「読み替え」というボタンが各条についていて、押すと「読み替えの前後の変化」が表になります。現状は、書きなぐった正規表現がうまくマッチしていないところがありますが、「地雷除去」についても探っていこうと思います。

toa1.png

長くなってしまいました。読んでいただき本当にありがとうございます。読者の方のニーズと合っているのか、早くも心配になってきましたが、もうしばらく今の感じで書いてみます。マークダウンの「開閉」も覚えましたので、より読みやすい記事を書いていきます!

ひばりソフト(ひばり)

3
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2