뒤로
김세훈
김세훈 ·

요즘 사이드 프로젝트로 만들고 있는 프로그램을 소개해보려고 합니다.


어떤 프로그램을 만드는지

  • '텍스트 파일에 적은 코드를 원하는 키로 전조해주는 프로그램'을 만들고 있습니다. 부연설명을 좀 더 해보자면..
  • 기타치는 걸 좋아해서 가끔씩 괜찮은 노래를 커버합니다. 타브나 종이 악보도 있지만, 텍스트 파일에 적는 걸 선호합니다. 빠르게 만들 수 있어서요. 코드를 따고, 텍스트 파일에 가사와 함께 적습니다.

하지만 번거로울 때도 있습니다. 카피한 곡의 음역이 부르기에 너무 높거나 낮으면 저한테 맞도록 전조해주는 작업이 필요한데, 그러려면 적었던 모든 코드를 일일이 바꿔야 하거든요.

만들고 있는 프로그램은 이런 작업을 편하게 해줍니다.


만드는 이유, 그리고 프로젝트를 통해 얻고자 하는 것

  • 그간 경험했던 프로젝트에서 짰던 코드를 되돌아보면 정말 만족스러웠던 적은 없었던 것 같습니다. 프로젝트를 진행할수록 점점 손댈 수 없이 코드가 복잡해지는 경험을 몇 번 하면서, 어떻게 하면 더 괜찮은 코드를 짤 수 있을지를 고민했습니다. 생각해본 개선 방안 중 하나는 객체지향을 더 잘 이해하는 것이었습니다.
  • 이런 노력의 일환으로 객체지향의 사실과 오해라는 조영호 님의 책을 읽었습니다.

책에서 이야기하는 바, 즉 프로그램과 연관된 도메인을 잘 이해하고, 역할, 책임, 협력 관계가 잘 드러난 객체 관계를 잘 만드는 데 익숙해지려면, 실제로 어떤 도메인에 대한 프로그램을 만들어보면서 책에 나온 내용을 적용하는 것이 좋을 것 같았습니다. 직접 만드는 경험을 통해 얻을 수 있는 것이 크다고 생각하거든요. 그래서 만들어보기로 했습니다.


주제 선정 기준

  • 실제로 쓸 프로그램인가?

전에도 실제로 필요해서 프로그램을 만든 적이 있었는데, 여러 장점이 있었습니다. 프로그램을 어떻게 만들지 기준이 명확해졌고, 만들고 나서도 자주 쓰면서 불편한 점을 개선하게 되어 자연스럽게 프로그램 구조를 다듬을 수 있었거든요.

  • 내가 잘 아는 도메인인가?

도메인을 잘 알면 그 도메인을 코드로 바꾸는 것도 수월할 거라고 생각했습니다. 제가 잘 알고있는 도메인과 관련된 프로그램을 만들면, 그 도메인을 이해하는 데 드는 노력을 줄여서 구현하는 데 더 집중할 수 있을 것 같았습니다. 만들고 있는 프로그램은 음악 도메인과 연관되어 있는데요, 음악 이론을 알고 있기도 해서 프로젝트 진행이 수월할 것으로 예상했습니다.


진행 상황

  • 첫 목표는 코드 하나를 주어진 키에 맞게 전조하는 핵심 로직을 구현하는 것이었고, 미진하나마 완료한 상태입니다.
  • 다음 목표는 CLI 기반으로 텍스트 포맷 악보 파일을 가져와서 코드를 전조할 수 있도록 만드는 겁니다.
  • 혼자서 하다 보니 막힐 때가 많아서 더디게 진행하고 있지만, 그만큼 배우는 것도 많은 것 같습니다. 더 진척되면 또 공유해보겠습니다ㅎㅎ





1

댓글

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.