Legalize KR
대한민국 법령을 Git 저장소로 관리하는 오픈소스 프로젝트입니다. 모든 법령은 Markdown 파일이고, 모든 개정은 실제 공포일자를 가진 Git 커밋입니다.
왜 법령을 Git으로?
법령은 끊임없이 개정됩니다. 하지만 기존의 법령 열람 방식으로는 무엇이 언제 어떻게 바뀌었는지 파악하기가 쉽지 않습니다.
Git은 코드의 변경 이력을 관리하기 위해 만들어진 도구입니다. 법령도 텍스트입니다. Git의 버전 관리 능력을 법령에 적용하면:
git log로 법령의 전체 개정 이력을 확인git diff로 정확히 무엇이 바뀌었는지 한눈에 비교grep으로 전체 법령 체계에서 특정 단어나 조항을 검색- 누구나 포크(fork), 복제(clone), 분석 가능한 오픈 데이터
데이터 출처
모든 법령 데이터는 국가법령정보센터 OpenAPI에서 가져옵니다. 법령 원문은 대한민국 정부의 공공저작물로 자유롭게 이용할 수 있습니다.
현재 법률, 대통령령, 부령, 대법원규칙, 헌법재판소규칙 등 총 —건의 현행 법령이 수록되어 있으며, —건의 개정 이력이 Git 커밋으로 관리되고 있습니다.
파일 구조
각 법령은 YAML 프론트매터가 포함된 Markdown 파일입니다. 관련 법령(법률, 시행령, 시행규칙)이 하나의 디렉토리에 함께 관리됩니다.
디렉토리 구조
법령명에서 띄어쓰기를 제거하여 디렉토리명으로 사용합니다. 이는 법령 홈페이지의 URL 규칙과 동일합니다.
kr/{법률명}/법률.md— 국회에서 제정하는 법률kr/{법률명}/시행령.md— 법률의 시행령 (대통령령의 일종)kr/{법률명}/시행규칙.md— 법률의 시행규칙 (부령)kr/{대통령령명}/대통령령.md— 독립 대통령령 (규정, 직제 등)
예: kr/민법/ 디렉토리에 법률.md, 시행령.md가 함께 존재합니다.
Git으로 법령 활용하기
커밋 메시지
법령 커밋은 공포일자를 Git author/committer date로 사용하며, law.go.kr 참조 URL과 메타데이터를 포함합니다:
인프라 커밋은 일반 날짜와 Conventional Commits 형식을 사용합니다.
알려진 제한 사항
Git은 Unix Epoch(1970-01-01) 이전 날짜를 지원하지 않습니다. 이에 해당하는 5건의 법령(공포일자 1950~1969년)은 커밋 날짜가 1970-01-01로 고정되어 있습니다. 실제 공포일자는 각 파일의 YAML frontmatter 공포일자 필드에 정확히 기록되어 있습니다.
기술 스택
- 데이터 수집: Python + law.go.kr OpenAPI
- 저장 형식: Markdown + YAML frontmatter
- 버전 관리: Git (공포일자를 커밋 날짜로 사용)
- 자동화: GitHub Actions (매일 13:00 KST 자동 업데이트)
- 웹사이트: 정적 HTML, GitHub Pages 배포
영감
이 프로젝트는 legalize에서 영감을 받았습니다. legalize는 스페인 법령 8,600건 이상을 Git으로 관리하는 프로젝트입니다.
라이선스
법령 원문: 대한민국 정부 공공저작물 (자유 이용 가능)
저장소 구조 및 도구: MIT License
기여하기
법령 텍스트에 오류를 발견했거나, 누락된 개정 사항이 있다면 GitHub Issues에서 알려주세요. 법령명, 조항, 공식 출처를 함께 기재해 주시면 감사하겠습니다.