diff --git a/Homework/Homework5.md b/Homework/Homework5.md new file mode 100644 index 0000000..c967d6e --- /dev/null +++ b/Homework/Homework5.md @@ -0,0 +1,146 @@ +# 오픈소스SW개론 과제 5 (협업 실습) + +18011690 이정안 + +하나의 프로젝트 주제를 정해 수행하는데 마치 여러 사람이 협업하듯이 GitHub에 버전관리를 하면서 프로젝트를 완성하고 오픈소스로 공개하는 실습을 진행 + +## 과제 설명 + +- 프로그래밍 언어: C, C++, Python 중 하나를 선택함 + +- 브랜치 전략: Git flow 또는 GitHub flow 브랜치 전략을 사용할 것. 더 이상 필요하지 않더라도 사용한 모든 브랜치를 평가를 위해 삭제하지 말고 유지할 것. + +- 본인 코드: 코드는 본인이 직접 작성한 코드이어야함. 인터넷이나 다른 사람의 코드의 전체 혹은 일부를 사용하는 것은 표절로 간주되며 허용되지 않음. 그러나 과거에 본인이 수행했던 프로젝트의 코드를 사용하는 것은 가능함. 이 과제는 코딩 자체가 아닌 GitHub 협업 및 버전관리 등을 연습하는 것을 목표로 하기 때문. + +- 코드의 정확성: 코드는 오류 없이 실행이 되어야함. 실행이 안 되거나 버그가 발생하는 경우 감점됨Ÿ프로젝트 난이도: 다소 어려운 프로젝트 주제를 선택해야함. 한 사람이 쉽게 끝낼 수 있는 프로젝트는 굳이 여러 사람이 브랜치 전략을 사용하여 GitHub 버전관리를 하면서 협업할 이유가 없기 때문. + +- README.md: README.md 파일에 코드를 컴파일하고 실행하기 위한 자세한 지침을 포함해야함. 코드는 Windows 또는 Linux OS 둘 중 하나 이상과는 호환되어야함. 예를 들어, 코드가 MacOS에서 작성된 경우 MacOS 및 Linux 각각에서 실행 가능한 지침을 모두 제공해야할 수 있음. 또한, README.md에는 코드의 용도, 기능, 사용법 등을 작성해야함. + +- 호환성: 다른 컴퓨터에서 코드를 테스트하여 다른 컴퓨터 환경에서 작동하는지 확인할 것. 자신의 코드를 실제 오픈소스로 공개한다고 생각하고 다른 사람들이 쉽게 실행할 수 있도록 노력할 것. 불충분하거나 불분명한 지침으로 인해 평가자가 코드를 실행할 수 없는 경우 감점됨 + +- 코드 공개: 해당 코드는 GitHub 원격저장소에 README.md와 함께 공개할 것. 코드 공개가 불가능한 경우 비공개 원격저장소를 만들고 평가를 위해 조교의 GitHub 계정을 invite할 것. + +- 메시지: Commit 메시지의 경우 수정 내용을 잘 반영한 메시지여야함. 실습 때처럼 “Contents1”와 같은 메시지를 작성하면 안 됨. 파일명, 디렉토리명, pull request 코멘트 등 다른 모든 내용들도 마찬가지로 실제 현장에서 협업할 때 사용할만한 내용으로 되어있어야함. + +- 가독성: 주석 등을 활용하여 코드 가독성에 신경 쓸 것. + +- 코드/버전관리 설명: 코드에 대해 한글/word 등 제출하는 문서에 자세히 설명할 것. 또한, 버전관리 방식에 대해서도 자세히 설명할 것. 각 브랜치의 기능, 브랜치 전략, 협업 시 역할분담 등등. + +## 프로젝트 주제 + +**ReInput-tool** + +진로가 게임 개발자이다 보니 실제로 진행했던 유니티 오픈소스 라이브러리 개발 프로젝트로 선정 + +게임 개발과정에서 효율적인 디버깅을 위해 개발된 툴이다. + +약 2개월전에 진행된 프로젝트로 현재 V0.1.2 버전까지 개발되었다. + +동아리에서 개발되어 동아리 사람들이 실제로 사용하고 있으며 개발 과정에서 Github flow를 참고하여 Issue, Pull Request, Discussion 등을 사용하였다. + +실제로 개발되는 SandBox프로젝트와 릴리즈되는 프로젝트를 분리하여 개발하였으며, 이를 위해 브랜치 전략을 사용하였다. + +## 프로그래밍 언어 + +C# (Unity) + +## 브랜치 전략 + +Github flow + +## 본인 코드 + +개발에서 본인은 데이터 처리, 입력 처리등을 담당하였고 협업자 1은 UI를 제작하였다. + +따라서 본인(fkdl0048)코드만 첨부할 예정 + +## 코드의 정확성 + +실제로 동아리에서 사용되고 있으며, 버그가 발생하지 않는다. + +## 프로젝트 난이도 + +약 2개월간 개발 진행. + +개발 내역, 회의 내용, 협업을 위한 기초 베이스 룰 같은 내용도 레포에 포함되어 있다. + +## README.md + +릴리즈 레포에 사용하기 위한 방법과 영상이 포함되어 있다. + +## 호환성 + +유니티 프로젝트이기 때문에 유니티가 설치되어 있어야 한다. + +UI ToolKit을 사용하였기 때문에 UI Toolkit이 설치되어 있어야 한다. + +## 코드 공개 + +개발 레포, 릴리즈레포 모두 공개되어 있다. + +## 메시지 + +수정 요구 사항과 직접적인 코드 리뷰또한 포함되어 있음 + +## 가독성 + +리뷰를 통해 올바른 가독성을 가지고자 함 + +## 코드/버전관리 설명 + +- [릴리즈 레포](https://github.com/BRIDGE-DEV/ReInput-tool) +- [개발 레포](https://github.com/BRIDGE-DEV/Unity_Custom_Editor_Study) + +### 버전관리 방식 + +기본적으로 유니티에서 직접 사용하기 위해서는 릴리즈 레포와 개발레포(SandBox)레포를 구분하여 관리하였다. + +개발레포는 github flow를 사용하여 Main을 기준으로 Feature 브랜치를 생성하여 개발하였다.(각 개발 기능을 중심으로) + +즉, 작업하기 이전에 작업 해야하는 내용을 직접 파악하고 이를 이슈로 세분화 한다. + +![image](https://github.com/fkdl0048/ToDo/assets/84510455/72e1bce5-a1ed-4461-bbb9-d961cdb51667) + +- [기능 개발 Issue](https://github.com/BRIDGE-DEV/Unity_Custom_Editor_Study/issues/6) + +![image](https://github.com/BRIDGE-DEV/Unity_Custom_Editor_Study/assets/84510455/c8cc0df7-1299-4d1b-a893-bffcc94a00b0) + +작업을 Task로 만들어서 목적, 내용, 참고사항으로 분리하고 해당 이슈를 기준으로 브랜치를 생성하여 작업한다. + +작업을 실시간으로 협업자에게 공유가 가능해지고 이슈와 PR을 바인딩하여 PR이 병합되면 이슈또한 닫히게 된다. + +- [기능 개발 PR](https://github.com/BRIDGE-DEV/Unity_Custom_Editor_Study/pull/8) + +![image](https://github.com/BRIDGE-DEV/Unity_Custom_Editor_Study/assets/84510455/154fe070-3f1e-486e-b05d-dcb58313a863) + +![image](https://github.com/BRIDGE-DEV/Unity_Custom_Editor_Study/assets/84510455/bfa996da-83fb-45e0-944f-975e7af63059) + +이런식으로 각 브랜치 전략을 가져가며 개발을 진행했다. + +**코드리뷰** + +![image](https://github.com/fkdl0048/ToDo/assets/84510455/4256bd5c-03eb-4f1d-be51-8ec29464bff2) + +### 협업시 역할분담 + +사전에 이런 내용은 Discussion을 통해 협의하였으며, 이를 통해 각자의 역할을 분담하였다. + +![image](https://github.com/BRIDGE-DEV/Unity_Custom_Editor_Study/assets/84510455/f878001e-dcc0-4320-a0d0-0f9675e4acb6) + +실제 개발에 대한 기획과 역할 분담 프로세스 + +- [역할 분담 및 기획](https://github.com/BRIDGE-DEV/Unity_Custom_Editor_Study/discussions/3) + +*모든 코드에 대한 내용을 작성할 수 없어서 해당 레포를 참고* + +### 릴리즈 레포 + +*위에 레포 링크 첨부* + +![image](https://github.com/fkdl0048/ToDo/assets/84510455/a847034e-c48e-4ee0-94fc-8dc9b317049d) + +![image](https://github.com/fkdl0048/ToDo/assets/84510455/2883dde7-0818-411d-9c15-fef341815fba) + +어떤 라이브러리인지, 설치 방법, 사용 방법, 라이센스, 릴리즈 노트 등이 작성되어 있다. + +실제 사용되는 GIF도 같이 첨부되어 있다. diff --git a/Homework/Homework5.pdf b/Homework/Homework5.pdf new file mode 100644 index 0000000..c5dffcf Binary files /dev/null and b/Homework/Homework5.pdf differ