코드공개성명 (Code Availability Statement)
쉽게 풀면
요리 레시피에서 재료 목록만 공개하고 조리 순서나 불 조절법은 알려주지 않는다면, 다른 사람이 똑같은 요리를 재현하기 어렵습니다. 연구도 마찬가지입니다. 원자료(raw data)를 공개해도, 그 자료를 어떤 순서로 정제하고 어떤 통계 모형과 옵션으로 돌렸는지 알 수 없다면 다른 연구자가 결과를 그대로 재현하기 어렵습니다. Code availability statement는 논문에 사용한 통계 코드, 분석 스크립트, 시뮬레이션 프로그램 등을 GitHub나 전용 리포지토리에 올리고, 그 접근 방법과 라이선스·버전 정보를 논문에 명시하는 절차입니다. 최근에는 많은 학술지가 데이터 공개와 별도로 코드 공개를 요구하거나 권장하고 있습니다.
왜 중요한가
같은 데이터를 두고도 전처리 방식이나 통계 모형의 세부 옵션에 따라 결과가 달라질 수 있기 때문에, 코드 자체를 공개하지 않으면 논문의 결론을 온전히 검증하기 어렵습니다. 이 때문에 code availability statement는 재현성 위기 논의와 오픈사이언스 운동에서 핵심적으로 다뤄지는 주제이며, 계산생물학이나 데이터 중심 사회과학처럼 분석 파이프라인이 결과에 큰 영향을 미치는 분야일수록 더 중요하게 취급됩니다. 최근에는 딥러닝 기반 연구에서 모델 코드와 학습 설정을 공개하지 않으면 후속 연구자가 벤치마크 결과를 재현할 수 없다는 문제 제기가 이어지면서, 많은 학회와 학술지가 코드 공개를 사실상 요구하는 방향으로 정책을 바꾸고 있습니다.
논문에서는 이렇게 쓰입니다
이 문장은 독자나 다른 연구자가 동일한 코드로 동일한 절차를 다시 실행해 결과를 검증하거나 재현할 수 있도록 구체적인 경로와 버전 정보를 제공합니다.
딥러닝·기계학습 분야 논문에서 흔히 볼 수 있는 서술로, 심사 과정에서의 익명성을 지키면서도 결과를 검증할 수 있도록 공개 시점과 접근 방식을 구분해 제시하고 있습니다.
계산과학·물리학 계열 논문에서 자주 쓰이는 표현으로, GitHub처럼 변경될 수 있는 저장소 대신 DOI가 부여된 영구 아카이브를 활용해 장기적인 접근성을 보장하려는 의도를 보여줍니다.
조금 더 깊게 보면
코드를 공개할 때는 실행 파일 자체뿐 아니라 실행 환경까지 함께 명시하는 것이 중요합니다. 사용한 프로그래밍 언어와 패키지의 버전이 다르면 같은 코드라도 결과가 달라질 수 있기 때문에, 최근에는 Docker나 Singularity 같은 컨테이너, 혹은 requirements.txt·environment.yml 같은 의존성 명세 파일을 함께 제공하는 경우가 늘고 있습니다. 또한 GitHub 링크는 저장소가 삭제되거나 내용이 바뀔 수 있어 장기 보존이 보장되지 않으므로, Zenodo나 기관 리포지토리처럼 DOI를 부여받아 특정 시점의 코드를 고정(archiving)해 두는 방식이 권장됩니다. 일부 학술지는 코드 리뷰나 재현성 배지(reproducibility badge) 제도를 운영해, 제출된 코드가 실제로 실행되고 보고된 결과를 재현하는지를 심사 과정에서 별도로 검증하기도 합니다.
주의할 점
코드공개성명은 데이터공유 성명과 짝을 이루지만 같은 것이 아닙니다. 데이터만 공개되고 코드가 없으면, 어떤 전처리와 통계 절차를 거쳤는지 알 수 없어 결과를 재현하기 어렵습니다. 반대로 코드만 공개되고 데이터가 비공개이거나 연구데이터 저장소에 등록되지 않으면 코드를 실행해 볼 수조차 없습니다. 또한 코드를 공개했다고 해서 그 코드에 오류가 없다는 보장은 아니므로, 코드 공개는 재현성을 높이는 필요조건이지 충분조건은 아닙니다.