コードであるべき法律

2021/01/13

必要上、Rubyで税額計算するライブラリを書いている。また、オープンソースで配布している。
まずは 年末調整のコードの例を見て欲しい。

初見で気づいて欲しいポイントとして、かなり日本語で書いてある。
これは実際に動作するし、すでに使っている。いま年次の給与支払報告書を提出したところだ。

論旨を明確にすると、このライブラリが国税庁とユーザーコミュニティ(普通の人々)から提供される社会にならなくてはならないと考えている。
現状は、 パンフレットとして提供され、毎年紙で送られてくる。
なお、役所の公式情報はどんどん消えていくため、いずれリンク切れになるだろう。

実現のハードルなど存在しない

コードはもちろんプログラミング言語であり、難しいスキルと捉えられていることが多い。
だが、冒頭のコードの意味がとれないということがあるのだろうか?
まったくの素人であっても10分ほど眺めれば、構造はとれるのではないだろうか。

このケースの良い点は、RubyのUTF-8対応が徹底しているため、関数名を含めて主要な部分に日本語を使っても支障がないことだろう。 文法上のキーワードは英語だが、これを漢字かなに置き換えて読みやすくなるとは到底思えず、日本語を利用するならこの程度がベストバランスに見える。

法律技術としては、他の読み方ができない程度に自明であることも重要だが、その点も支障がないだろう。
要するに、このライブラリの範囲に専門的スキルはとくにない。

なぜコードであるべきか?

端的に言えば、コードになっていないと計算に全然使えない、というのは当たり前であり、「それはそうだ」と思える人にとってはそれ以上の説明はない。パンフレットを読んで計算する、ということを望んでいる人などいない。
給与計算などは、支払総額とせいぜい労働時間(もう時間でもないと思うが)を決めたら、あとは全自動で計算できなくてはならない。現実には全然そうなっていないのだが、それらはすべて言い訳にすぎない。

一点、健全な市民として意識しておくべきことは、全自動になっていない作業はすべて徴税コストであり、市民のインフラのため使える税金が減っているということだ。まきあげられつつバラまいている。
日本は歴史に残るほどに年々国債を積みあげていっているのだから、そんな徒労は本来許されない。

また、多少事情の異なるムダとして、計算ロジックのデザインが悪い。
実は、年末調整の計算のうち、ひとまず実装をあきらめた部分がある。分かりやすいのは、 基礎控除申告書に掲載されている配偶者控除の計算だろう。
このリンクもいずれ消えてしまうだろうが、年々複雑になって同じフォーマットが登場し続けることだろう。

配偶者控除は、本人の収入、配偶者の収入、配偶者の年齢という3つの入力値がないと計算できない。
もはや、このあたりはパンフレットも一切の説明を投げてしまっていて、表から読んでくれということになっている。
もし、立法時点でライブラリコードを同時に書くプロセスになっていたなら、そんな奇怪なロジックは作る前に反省するはずだ。

コードとして不自然なルールは、何かが歪んでいる。
歪めている力は、福祉の視点だろう。分かりやすいのは高齢化への対処だが、各人の属性を採り入れると計算コストは増える。年末調整は、すでに組み合わせ爆発を起こしている。
良かれと思って自らの首を締めるのだ。

将来の見通し

事態がここに至ることを考えれば、正直、好転への期待はない。
行政にデザインがなく、実行不可能なルールを年々選択してきているのだから歯止めはきかない。より複雑怪奇になっていくはずだ。

冒頭の論に戻って、税務ルールは国税庁でライブラリ実装しなくてはならないと思う。実装する過程で善し悪しを議論し判断すべきだ。
政治家もその範囲ではコードを理解し切らなければならない。

おそらく未来はそうなっていると思うが、それは日本のことではないという感覚もある。
僕自身はある程度ライブラリの実装を続けるが、すでに"やってられん"ロジックになっている部分があるため、どこまで追えるのかは不透明だ。

C言語が登場したのは1972年だというから、50年前の技術だ。パソコンの価格破壊が進んだのは2000年頃だから、少なく見積っても20年は経っている。
あるべき未来は提出期限を過ぎた宿題でもある。

⁋ 2021/01/13↻ 2021/01/13