Skip to content

aluqas/gitlaw-jp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,108 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gitlaw-ja

日本の法律の改正履歴・沿革を構造的なディレクトリ・ファイル実体とGitで追跡可能なコミットデータに変換する試み。

  • src/: バルクデータをGitのコミット・ブランチデータへ直接変換するPythonスクリプト
  • laws/: ファイル実体が保管されています。
    • {law_id[:3]}/{law_id}/: e-gov 法令APIの法令IDに基づいています。先頭3文字は和暦になっています。
      • current.json:
      • current.xml: all_xml.zip内に存在する各法令・版のXMLをそのまま各コミットが適用しています。当ファイルの来歴を見ることで法令の差分を確認することが可能です。

ブランチについて

  1. 公布runs/<run_id>/promulgationsと施行runs/<run_id>/enforcementsはブランチを分ける
  2. 公布ブランチでは改正法=commitの単位としたい。
    • 改正法は複数の法律の条文を一気に変える場合がある。
    • 改正法=commit単位は個人的に直感的だと思うので。
  3. 施行ブランチでは各法令の条文の溶け込み・各法令の版をcommitの単位としている。
    • 同じ改正法の同じ方に対する変更はそのまま同じ時に適用されるわけではない
    • 例えば、制度上緩和措置として「この業界だけは猶予を与える」ということは多いが、法律でも同じで、同じ改正法でも〇〇法は〇月から施行、〇〇法は〇月から施行が起きる。
    • またN段ロケットと呼ばれるものもあり、同じ改正規定が同じ法に対しても、段階的に改正を適用することがある。
  4. 公布-施行ブランチの対応の両立
    • これが一番の課題で、これについては今後どのような形であれば自然か、扱いやすいかなどは考えていくつもり。
    • 今のところ、版単位のcommitを最も小さい単位として、公布ブランチ側では改正法ごとに束ねるmerge commit的なcommitを生成している。

使用方法

  • python: uvを利用することが一番簡単です
  • e-gov 法令APIからall_xml.zipXMLSchemaForJapanaeseLaw_v3.xsdをダウンロードし、payload/ディレクトリに配置してください
    • --input-zip--xsd-pathで変更が可能です。
  • デフォルトでは法律のみを対象にします。--law-type 政令のように追加でき、--all-law-typesで全種別を対象にできます。
  • main.pyがエントリーポイントになっています。
    • plan: runs配下にapplyで適用されるcommit/branchに関する情報を構築し、jsonファイルを含むディレクトリとしてruns/<run_id>配下に出力します。
      • 詳細はパイプラインを確認してください。
      • dataset_idはzipのhash値に基づきます。run_id日時_dataset_idです。
      • 既存runを明示的に上書きする場合は--forceを利用します。
    • apply: planで生成されたruns/<run_id>/manifest.jsonを--run-manifestで渡し、実際にcommit/branchを生成します。
      • 既存refを明示的に更新する場合は--force-refsを利用します。
    • full: plan/applyの両方をまとめて行います。この場合--run-manifestは必要ありません。
    • 詳しくは-hまたは--help

パイプライン

  • 01_ingest: 入力Zipの識別とrun_idの決定
  • 02_validate: CSV / XSDスキーマの検証
  • 03_normalize_versions: CSV / XML からLawVersionを生成
  • 04_build_timelines: 法令ごとの版列(LawTimeline)を構築
  • 05_graph_plan: EnforcementUnit / AmendmentEventからcommit graph planを構築
  • 06_git_sink: planをそのままGit object / refsに反映

Appendix

About

Japanese legislation as a Git repo.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages