世界を動かす技術を、日本語で。

8,642のスペイン法をGitに登録しました – すべての改正はコミットです

概要

  • Legalize は、スペインの法律を Gitリポジトリ 形式で管理するプロジェクト
  • 各法律が Markdownファイル、各改正が Gitコミット として記録
  • 8,600以上 の法律、1960年以降の改正履歴を完全収録
  • データは BOE公式API から取得、内容は ドメインパブリック
  • 構造化・バージョン管理・メタデータを追加、APIやコントリビュートにも対応予定

Legalize — スペイン法 Gitリポジトリ化プロジェクト

  • Legalize は、スペインの全国家法を Gitリポジトリ として管理するオープンプロジェクト
  • 各法律が 1つのMarkdownファイル で表現、各改正が 独立したコミット で記録
  • 8,600件以上 の法律を収録、1960年以降の全改正履歴を完全追跡
  • データソースは BOE(Boletín Oficial del Estado)公式API の「Legislación Consolidada」
  • 内容は ドメインパブリック、本リポジトリは構造・バージョン管理・メタデータのみ追加

クイックスタート

  • リポジトリのクローン git clone https://github.com/EnriqueLop/legalize-es.git
  • ディレクトリ移動 cd legalize-es
  • 現行憲法第135条の内容確認 grep -A 10 "Artículo 135" spain/BOE-A-1978-31229.md
  • 改正履歴の確認 git log --oneline -- spain/BOE-A-1978-31229.md
  • 2011年財政安定化改正の差分確認 git diff 6660bcf^..6660bcf -- spain/BOE-A-1978-31229.md

ファイル構成

  • ルートディレクトリspain/配下に各法律をMarkdownで配置

    • BOE-A-1978-31229.md:スペイン憲法
    • BOE-A-1995-25444.md:刑法
    • BOE-A-2015-11430.md:労働者法
    • BOE-A-2000-323.md:民事訴訟法
    • その他 8,600件以上 の法律
  • 各ファイル冒頭に YAMLフロントマター を記載

    • 例:
      ---
      titulo: "Constitución Española"
      identificador: "BOE-A-1978-31229"
      pais: "es"
      rango: "constitucion"
      fecha_publicacion: "1978-12-29"
      ultima_actualizacion: "2024-02-17"
      estado: "vigente"
      fuente: "https://www.boe.es/eli/es/c/1978/12/27/(1)"
      ---
      

収録内容

  • BOEで「国家法」と分類される全法律 を網羅

    • スペイン憲法
    • 有機法(Leyes Orgánicas)
    • 普通法(Leyes ordinarias)
    • 王令法(Reales Decretos-ley)
    • 王令立法(Reales Decretos Legislativos)
  • 各改正は 独立したコミット で、公式発効日をコミット日時に設定

  • コミットメッセージに 改正識別子公式ソースへのリンク を記載

データソース

  • すべての内容は BOEのLegislación Consolidada API から取得
  • 法令テキストは パブリックドメイン
  • 本プロジェクトは 構造化・バージョン管理・メタデータの付与 のみ行い、内容の改変なし

API

  • Legalize独自API を近日公開予定(legalize.dev)
    • 法律の検索・絞り込み
    • バージョン比較
    • 法改正時の通知受信

コントリビュート

  • 誤記・改正漏れの報告歓迎
    • 法律名、該当条文、正しい公式ソースを明記しIssueを作成

ライセンス・著作権

  • 法令コンテンツ :パブリックドメイン(政府公式ソース)
  • リポジトリ構造・メタデータ・ツール類 :MITライセンス

プロジェクト情報

  • 作者: Enrique Lopez
  • 技術協力: BoletinClaro.es
  • 公式サイト: legalize.dev

Hackerたちの意見

スペインの州法をバージョン管理されたMarkdownに変換するパイプラインを作ったんだ。法律ごとにファイルがあって、各改正は実際のgitコミットとして履歴の日付が付いてる。法律は8,642件、コミットは27,866件。アイデアは、立法はただのパッチの重ね合わせってこと。Gitがこれを解決してくれるんだ。「第3段落を削除して、代わりに...」って読む代わりに、実際のdiffが見れる。リポジトリが製品そのもの。どの法律でもブラウズできるし、git logでその完全な改正履歴が見れるし、git diffで何が変わったかもわかる。Claude Codeを使って約4時間でパイプラインを構築したよ。ソースはBOE(スペインの官報)の統合立法API。ここにビジネスの可能性があるか探ってるところ。法務テックやコンプライアンス向けの構造化された立法API、または単に役立つオープンデータセットとして。HNの人たちがこのデータで何を作るのか興味津々だ。

いいアイデアだね、27,000件のコミットはどれくらい昔まで遡れるの?これが(自動化された)研究や(スペインの)法律の進化の可視化にどう使えるか考えてみてる。

法律の意図は、しばしば裁判所での判決を通じて明らかにされるんだ。もし、その判決を対応する法律の上に、適切なタイミングで重ねることができれば、価値があると思う。例えば、どの法律が最も参照されたか、どの法律が最も明確にする必要があったかを示すかもしれない。どの法律用語が時代を超えて通用したか、どれが何度も明確にする必要があったかの洞察も得られるかもしれないね。

おお、もう少し詳しく教えてくれない?官報がそれをどうやって公開してるのかとか、どんなフォーマットを解析しなきゃいけなかったのかとか。合計で何件の文書があったの?1〜2年前にドイツの法律で同じことを試みたけど、LLMはまだ賢くなかったんだよね。それに、コストも数千ユーロはかかってたはず。追記: いや、"BOE(スペインの官報)統合立法API"の部分を見逃してた。ドイツから嫉妬の挨拶を送るよ。ドイツにはPDFの束しかないからね。それに、数十年もそれを公開してきた民間企業が著作権を主張してるんだよ!

おめでとう!これは素晴らしいリソースだね。自分もやろうと思ってたことの一つだけど、全然続かなくて、他のことに気を取られちゃって、夢のままだったよ。リポジトリをクローンして探るのが待ちきれない!データで何ができるかというと、他の法律やそれに依存する定義を参照する法律に関するグラフデータベースを作るのも面白いかもね。

これは素晴らしいね。すべての立法にこれがあればいいのに。既存の技術フレームワークで簡単に解決できる非効率がたくさんあるから。

本当にその通りだね - これは素晴らしい仕事だ。

既存の技術フレームワークで簡単に解決できる非効率がたくさんある。ほんとにそうだよね。法律業界はその事実をよく理解してるし、仕事をもっと効率的でわかりやすくすることで失う請求可能時間がどれだけあるかも知ってる。税務準備会社が税金の申告を難しく複雑に保つために、9000万ドル以上を使って議会にロビー活動をしてるの知ってる?弁護士たちも自分たちの利益を守るために、あらゆる手段を使うから、法律をもっと透明で効率的にしようとする試みを潰そうとするよ。

それを基にした法律相談があればいいな。少なくとも最初の質問くらいは、弁護士に払わずに済ませたい。

既存の技術フレームワークで簡単に解決できる非効率がたくさんある。具体的にはどんなこと?DOGEの失敗が実際には簡単じゃなかったことを示したんじゃない?一見懐疑的だけど、間違ってることを証明されるのにはオープンだよ。

政府の中では、トラックチェンジが何かみんな知ってるよね。イギリスの影響を受けたシステムの法律の標準フォーマットはdiffだし、テクノロジーの分野には他の人類が知らない秘密の知識なんてないんだよ。

で、典型的なベンチャーキャピタルを求めるテックブロのクソみたいなプロジェクトが、世界中に蔓延してるけど、実際には現実の問題を理解したり解決したりしてないんだよね。著者に対して悪く言うつもりはないけど、楽しいものを作ったと思う。でも、俺が言いたいのは、世界にはソフトウェア開発者が必要だっていう親投稿の考え方に対してなんだ。彼らの素晴らしい頭脳を使って、システムの実際の参加者が考えつかなかった方法で問題を解決するためにね。LLMにPythonを書かせることができるからって、世界の問題を解決する特別な立場にいるわけじゃないって考え方が、以前よりもひどい自動化されたソリューションを生み出した世代を作ったんだよ。

私たちの非営利団体、オープン・ロー・ライブラリーは、まさにこの問題に取り組んでいます。決して簡単ではないけど、実現可能です。政府と直接提携して、Gitリポジトリが公式な記録になるように手助けしています(ただの非公式なミラーじゃなくてね)。メリーランド州は、私たちのプラットフォームで規制を発表したばかりです: https://regs.maryland.gov (https://github.com/maryland-dsd/law-xml-codified) あなたのコミュニティが公式な法律をGitHubに公開したいなら、気軽に連絡してね(メールはプロフィールに載ってるよ)!

すごいプロジェクトだね。他の人たちが気になってるかもしれないけど、フランコ時代の法律のほとんどは1978年に廃止されたけど、古い法律(20世紀以前の)もたくさん含まれてるよ。ただ、ソース資料は1960年の圧縮コミットから始まるから、それ以前の変更履歴はないんだ。でもBOEのソースはすごくて、1600年代まで遡るファイルをスキャンしてるんだ。

これ、すごくいいと思う。gitの唯一の制限は、「git blame」がうまく機能するとは思えないことかな。各パッチに賛成票と反対票を投じた人が誰か知れたらいいのに。Gitは共同コミット用に構造化されてないからね。

それ、実際には日付、投票、その他のメタデータを含むgitコミットログになるかも。でも、国全体の法律をgitに入れるのは、すでにすごい偉業だよ。

うん、できるよ。複数の人が貢献したPRでコミットをまとめちゃえばいいんだ。そうすれば、歴史の中で共同コミットだったって表示されて、みんなのアバターが見えるよ。

Gitは共同コミット用に構造化されていない。Gitは共同コミット用に構造化されていないけど、コミュニティ全体の慣習が「Co-Authored-By: 名前」っていう形で、gitメッセージの本文の上にサポートを「パッチ」する感じになってる。これ、たしかほとんどのプラットフォームがサポートしてるはずで、その慣習自体はLinuxカーネル開発から来てるんだよね。

俺も少し前にオランダの法律の限られたサブセットで同じことをやったよ: https://github.com/sigio?tab=repositories&q=wetboek

おめでとう!これはすごくクールなプロジェクトだね。数年前にも似たようなものがあったよね -- gitlawを見てみて。ブラジルには、法律やその変更を時間をかけて説明するための標準、lexmlがあるんだ。意外と複雑なんだよね。

ハハ!またXMLがやらかしたね。:-) スペインもLexMLに参加してたって聞いたけど…今は別のものに移行したみたいだね?

法律に適切なタイムスタンプがあれば、「特定の瞬間にどうだったか」に遡れるのはクールだし、法律が時間とともにどう変わったかの適切なgitコミットの差分もあればいいなと思う。これを見てみて: https://www.boe.es/buscar/act.php?id=BOE-A-2015-11430 特定の条文が「その条文が各瞬間にどうだったか」を確認するオプションがあるのがわかるよ。これは追跡がずっと難しくなるけど、「過去に遡って法律がどうだったか」を見るだけじゃなくて、「どう進化してきたか」も見れたら最高だよね。

それだけじゃなくて、著者や承認者を使って、誰が各変更を作成し、投票したかを追跡できるといいね。

新しい法律が既存の法律と矛盾しないかをチェックするCIを追加してほしいな。

法律を正式な証明に変える必要があるかもしれないし、裁判官がいると考えると、そうなる可能性はあまり高くない気がする。でも、コメントシステムなら、各国の先例や法理、伝統に基づいて訓練されるから、可能性はあるかもね。

マージコンフリクトがあるリベースを想像できる?

これは重要なプロジェクトで、きっと多くの国にはこれを実現しようとする開発者がいると思うけど、ほとんどの法制度に対応できるプロジェクトがあれば、もっと多くの人が法律リソースにアクセスできるようになると思うよ。

人類の歴史におけるすべての国とすべての法律に必要だよね。