본문으로 건너뛰기

좋은 README 작성하는 방법

Sabo
· 약 12분

README 파일은 코드 프로젝트의 첫인상을 결정짓는 중요한 콘텐츠입니다. 이는 코드의 존재 이유와 코드가 해결하는 문제, 코드의 중요성을 이해하도록 돕는데요. 훌륭한 README는 프로젝트의 성공에도 큰 영향을 미칠 수 있죠.

IT 업계에 종사하는 개발자와 DevOps 엔지니어라면 README를 올바르게 작성하는 방법을 당연히 숙지해야 하는데요. 이 글에서는 README의 중요성과 기능, 위치, 그리고 포함해야 할 내용 등을 다루고자 합니다. 아울러 README를 작성할 때 지켜야 할 기본 원칙과 요건도 살펴보겠습니다.

README 존재 이유와 중요성

먼저 README가 왜 중요한지 알아보겠습니다. README는 프로젝트의 목적, 설치 방법, 사용 방법 등을 설명합니다. 이는 프로젝트에 참여하는 모든 이에게 중요한 정보를 제공하며, 코드의 가치를 높여줍니다. 코드는 문제를 해결하기 위해 존재하며, 그 문제의 중요성과 해결 방법을 README로 명확하게 전달해야 합니다.

만약 README가 없다면 어떻게 될까요?

README가 없는 프로젝트는 마치 안내판이 없는 미로와 같습니다. 사용자나 개발자가 프로젝트에 접근했을 때, ‘어떤 목적으로 만들어진 것인지’, ‘어떻게 사용해야 하는지’를 다룬 정보가 없다면 매우 혼란스러울 것입니다. 이에 따라 프로젝트에 관심이 떨어질 수 있고, 심지어 유용한 프로젝트라도 널리 알려지지 못할 가능성이 높습니다.

또한 README가 없으면 개발자가 프로젝트를 유지보수하거나 개선하는 데에도 어려움을 겪을 수 있습니다. 예를 들어, 새로운 개발자가 팀에 합류했을 때 README가 없다면, 기존의 코드 구조나 사용 방법을 파악하는 데 상당한 시간이 소요될 것입니다.

결론적으로, README는 프로젝트의 '얼굴'이자 '사용 설명서'입니다. README로 프로젝트의 가치를 높이고, 더 많은 사람이 프로젝트를 이해하고 사용할 수 있습니다. 따라서 README의 중요성은 결코 무시할 수 없습니다.

README 특성과 위치

  • 마크다운 문법: README는 주로 마크다운 문법으로 작성됩니다. 마크다운은 간단한 문법으로 텍스트를 꾸밀 수 있는 언어이며, README를 작성하는 데 적합합니다.
  • 최상위 폴더: README는 일반적으로 코드 저장소의 최상위 폴더에 위치합니다. 이 위치는 프로젝트를 처음 방문하는 사람들이 가장 먼저 보는 위치입니다.
  • 하위 폴더: 하위 폴더에도 별도의 README를 작성할 수 있습니다. 이는 특정 폴더의 세부 내용을 설명하기 위해 사용됩니다. 예를 들어, 아래 이미지와 같이 examples/quickstart에 대한 README를 작성할 수 있습니다.
photo | 인포그랩 GitLab | 인포그랩 GitLab
README가 ‘examples’, ‘quickstart’ 하위 폴더 ‘prometheus’에 위치한 모습. 출처=mvisonneau의 gitlab-ci-pipelines-exporter README

README 작성 요건

  • README는 항상 최신 정보를 담고 있어야 합니다. 프로젝트에 변경 사항이 생기면 README도 함께 업데이트해야 합니다.
  • README는 간결하되, 필요한 모든 정보를 제공해야 합니다. 너무 길면 독자의 관심을 잃을 수 있으므로, 중요한 정보만을 간단하고 깔끔하게 전달하는 것이 중요합니다.
  • 내용이 길어진다면 목적별로 새로운 경로를 생성하여 파일을 저장합니다. 그리고 README에 하이퍼링크를 추가해 사용자에게 알려줍니다.

README에 담을 내용

1. 프로젝트의 주요 기능과 목적

photo | 인포그랩 GitLab | 인포그랩 GitLab
README에 담은 ‘프로젝트의 주요 기능과 목적’. 출처=Kubernetes의 README

README에는 프로젝트의 주요 기능과 목적을 명확하게 설명해야 합니다. 이 부분은 독자가 프로젝트를 처음 접했을 때 받는 첫인상을 결정짓습니다.

예를 들어, 프로젝트가 데이터 분석에 관한 것이라면 ‘어떤 종류의 데이터를 분석하는지’, ‘그로 인해 어떤 문제를 해결하거나 어떤 인사이트를 제공하는지’를 명시해야 합니다. 이 정보는 프로젝트의 가치를 명확히 하고, 독자가 프로젝트를 빨리 이해하고, 관심을 갖도록 도와줍니다. 또한 이러한 정보는 프로젝트를 선택하거나 사용할 때, 중요한 판단 기준이 될 수 있습니다.

2. 설치 방법

photo | 인포그랩 GitLab | 인포그랩 GitLab
README에 담은 ‘설치 방법’. 출처=Maxime VISONNEAU의 gitlab-ci-pipelines-exporter README

README에는 코드를 로컬 환경에서 실행하는 단계별 설치 가이드를 담아야 합니다. 여기서 설치 과정에 필요한 도구, 라이브러리, 환경 설정 등을 상세하게 안내해야 합니다. 특히 사용자 환경을 고려해서 다양한 환경의 설치 방법을 적어줘야 합니다. 예를 들어, Windows와 MacOS, Linux 등 다양한 운영체제의 설치 방법을 구분하여 안내할 수 있습니다. 이렇게 하면 사용자가 자신의 환경에 맞는 설치 방법을 쉽게 찾을 수 있습니다.

3. 문제 해결 방법

photo | 인포그랩 GitLab | 인포그랩 GitLab
README에 제시한 ‘문제 해결 방법’. 출처=Linus Torvalds의 linux README

README에는 자주 발생할 수 있는 문제와 해결 방법을 안내해야 합니다. 이 내용은 사용자가 문제에 부딪혔을 때 빠르게 해결하도록 도와줍니다.

4. 지원창구

photo | 인포그랩 GitLab | 인포그랩 GitLab
README에 명시한 ‘지원 안내’. 출처=Kubernetes의 README

README에는 프로젝트의 주요 유지 관리자 또는 커뮤니케이션 담당자와의 소통 방법도 명시해야 합니다. 이 부분은 사용자가 추가 질문이나 제안할 때 연락할 수 있는 경로를 제공합니다.

5. 라이선스 정보

photo | 인포그랩 GitLab | 인포그랩 GitLab
README에 명시한 ‘라이선스 정보’. 출처=Kakao의 DaumEditor README

README에는 프로젝트의 라이선스를 명시해야 합니다. 라이선스는 코드 사용, 수정, 배포 관련 권리와 제한을 명시합니다.

6. 변경 로그

photo | 인포그랩 GitLab | 인포그랩 GitLab
‘변경 로그’ 담은 md 파일 목록. 출처=Kubernetes의 GitHub 페이지

README에는 프로젝트의 주요 업데이트 내역을 기록해야 합니다. 변경 로그는 프로젝트의 내력과 발전 과정을 파악하는 데 도움을 줍니다.

7. 사용 예시

photo | 인포그랩 GitLab | 인포그랩 GitLab
README에 담은 ‘사용 예시’ 화면. 출처=mvisonneau의 gitlab-ci-pipelines-exporter README

README에는 실제 예시를 제시해 ‘사용자가 어떻게 프로젝트를 사용할 수 있는지’ 안내해야 합니다. 이 부분은 사용자가 프로젝트를 실제로 사용하기 시작하는 데 큰 도움을 줍니다.

8. 심화 자료와 문서 링크

photo | 인포그랩 GitLab | 인포그랩 GitLab
README에 담은 ‘심화 자료’ 링크. 출처=mvisonneau의 gitlab-ci-pipelines-exporter README

README에는 추가 학습 자료나 문서 링크도 제공해야 합니다. 이때 사용자가 프로젝트를 더 깊게 이해하고 싶을 때 참고할 수 있는 자료를 제공합니다.

9. 사전 요구사항

photo | 인포그랩 GitLab | 인포그랩 GitLab
README에 담은 ‘사전 요구사항’. 출처=mvisonneau의 gitlab-ci-pipelines-exporter README

README에는 사용자가 프로젝트를 설치 또는 실행시킬 수 있는 환경을 쉽게 구성하도록 사전 요구사항을 제공해야 합니다.

그러면 사용자는 불필요한 설치 시간을 줄이고 더 효율적으로 프로젝트를 시작할 수 있습니다.

맺음말

지금까지 README의 중요성과 기능, 위치, 포함해야 할 내용 등을 살펴봤습니다. 아울러 README를 작성할 때 지켜야 할 기본 원칙과 요건도 알아봤습니다. 이 글이 훌륭한 README를 작성하는 데 도움이 되면 좋겠습니다. 완성도 높은 README로 프로젝트의 가치를 높여보세요!

인포그랩은 GitLab 및 DevOps에 대한 맞춤 기술 지원을 제공합니다. GitLab(Omnibus/Cloud Native Hybrid) 구축 관련한 지원이 필요하시면 문의하기 로 연락 주십시오.

<참고 자료>

1.mvisonneau의 GitHub gitlab-ci-pipelines-exporter

2.Kubernetes의 README

3.Kakao의 GitHub DaumEditor

4.torvalds의 GitHub linux