요구사항 분석 및 간단한 설계

guswls·2024년 7월 29일

플러그인 개발

목록 보기
1/7

1. 계기


커밋메시지 참 어렵다,,

  • 아마 팀 프로젝트에서 Git으로 버전관리를 해본 경험이 있다면 커밋메시지에 대해 한번쯤은 들어본 적이 있을 것이다.

  • 나의 경우엔 커밋메시지의 중요성을 알지 못했다.

  • 그저 빨리 커밋하고 푸쉬하는 것에만 집중하다보니 최악의 경우엔 아래 사진과 같이 글자조차 넣지 않은 적도 있었다.

    글자조차 적히지 않은 커밋 메시지

  • 현재는 여러 경험이 쌓이면서 커밋메시지의 중요성을 깨닫게 되었고, 어느 순간부터는 "기능단위의 커밋"나 "컨벤션을 따르는 커밋메시지 작성"등등에 대해서도 신경을 쓰게 되었다.

    이젠 적어도 글자를 적긴 시작했다.

  • 하지만, 커밋메시지를 잘 적는 것은 쉬운 일만은 아니라고 생각한다.

  • 우리가 많이 따르는 AngularJs의 커밋 컨벤션을 예시로 들자면 'type은 어떻게 정해야될지', 'body는 얼마나 구체적으로 적어야할지'와 같이 모호한 부분이 존재하곤 했다.

  • 이런 모호한 점은 커밋메시지를 작성하기 어렵게 만들었고 간혹 GPT에게 물어보며 자문을 얻곤 하였다.


이걸 플러그인으로 만들면 어떨까?

  • 그러다 문득 이런 생각이 났다

    '커밋메시지 물어보려고 커밋할 코드 복붙하는건 귀찮고, 줄여서 얘기하기엔 애매하고... 차라리 이걸 플러그인으로 만들어볼까?'

  • 위 생각을 하자마자 딱 내가 원하는 동작이 생각났고, 실 사용을 목적으로 플러그인을 개발해보기로 결정했다.


2. 간단한 설계 및 조사


Git Commit Message Helper

  • 커밋 메시지를 작성하는데 어려움을 겪었던 초반에 Git Commit Message Helper라는 플러그인을 애용하곤 했다.

  • 위 플러그인의 동작방식은 다음과 같았다.

    Git Commit Message Helper의 동작방식

    1. 인테릴제이 좌측의 Commit 탭에서 특정 아이콘을 클릭한다.
    2. 위 사진과 같이 커밋메시지를 형식에 맞춰 적을 수 있는 창이 나타난다.
    3. 내용을 적은 후 Ok버튼을 누르면 그 내용이 Commit Message 칸에 삽입된다.
  • 이러한 동작방식에 착안하여, 아래와 같이 매우 간단하게 동작할 수 있는 플러그인을 만들기로 결정하였다.


간단한 동작방식

  • Git Commit Message Helper를 보고 동작방식을 떠올렸다.
  • 정리하자면 다음과 같다.

    간단한 플러그인 동작방식

    1. 인테릴제이 좌측의 Commit 탭에서 커밋할 항목을 선택한다.
    2. 플러그인의 아이콘을 클릭한다.
    3. 플러그인에서 변경내역을 종합하고 ChatGPT로 커밋메시지 제작 요청을 보낸다.
    4. 응답으로 넘어온 메시지는 Commit Message 칸에 자동으로 삽입된다.

시장조사

  • 놀랍게도? 나와 똑같은 생각을 한 개발자가 많았다.

  • 대략 보기에도 3개 이상의 AI를 이용한 커밋메시지 생성 플러그인이 보였다.

  • 제일 다운로드가 많으면서 무료인 AI CommitsCommitGPT라는 두 개의 서비스를 실사용해보았다.


사용후기

  • 놀랍게도 두 플러그인은 완전히 똑같았다. 심지어는 두개를 같이 깔면 충돌이 발생했다.
    (소스코드를 파보니, CommitGPTAI Commits를 그대로 import해서 쓰고 있었다 ㅋㅋ)

  • 그래서 AI Commits만 제대로 써보았는데, "실사용이 가능할 정도로" 동작하였다.

  • 이정도만 해도 쓸만한 정도라고 생각이 되었고, 약간 내가 새로 만들 이유가 사라졌다는 생각이 들 쯤 약간 아쉬운 점을 찾을 수 있었다.


기존 서비스와의 차별점?

  • 이 프로젝트를 단순히 토이프로젝트로 만들거면, 벤치마킹도 할 이유가 없을 것이고, 차별점을 찾을 필요도 없었을 것이다.

  • 하지만, 써보니까 오히려 "GPT API가 유료인 점을 감안하더라도 유용할 것 같다."라는 생각이 들었고 내 입 맛대로 제대로 만들어서 마켓에 출시하고 싶어졌다.

  • 기존의 서비스 역시 내 생각엔 훌륭하게 돌아간다고 생각하지만, 아쉬운 점이 존재했다.

    기존 서비스의 아쉬운 점

    1. 프롬프트 최적화 X
    위 사진은 AI Commits의 실제 프롬프트이다. 변경내역이 잘 들어가는 것은 볼 수 있으나 이에 대한 최적화는 이루어지지 않았다. (객체의 내용을 포맷팅없이 담음)

    2. UI 미흡
    Settings창에서 API 등록 및 프롬프트 선택, 커스텀을 수행할 수 있는데 UI가 잘 와닿지 않는다. 각 항목이 어떤 기능을 하는지 가시성이 약간 떨어진다.

  • 그리고 나는 위의 두 아쉬운 점을 개선한 플러그인을 개발하기로 목표를 세웠다.

    기존 서비스와의 차별점

    1. 프롬프트 최적화
    ChatGPT API를 사용할 때 제일 중요한 요소중 하나가 최소한의 토큰으로 정확한 응답을 얻는 것이라고 생각한다. 따라서 변경내역을 가져올 때 발생하는 불필요한 토큰을 제거하고, 의도가 명확해지도록 최적화를 진행할 것이다.

    2. UI 최적화
    UI에 원래 감각이 없긴 하지만, 기존의 서비스보단 더 직관적인 UI로 만들고 싶다. 특히 "템플릿 기능"과 같이 불필요한 부분은 제거하고 꼭 필요한 기능을 부각할 것이다.



3. UseCase 및 기능목록 작성


  • 분석을 마친 후에, 기본적인 동작에 대해서 UseCase와 기능명세를 작성했다.

  • Setting이나 비기능적인 요구사항은 추후에 "일단은 돌아가는 플러그인"을 개발한 후에 진행할 예정이다.



4. 요약


  • 커밋메시지를 작성할 때 ChatGPT에게 물어보곤 했는데, IDE와 브라우저간 왔다갔다 하기 귀찮다!!

  • 인텔리제이에서 "딸깍"한번으로 커밋메시지를 자동으로 생성해주는 플러그인을 개발하자!!

  • 사실 이미 나와 같은 생각을 갖고 만든 서비스가 존재하고, 실제 사용에도 무리가 없는 것 같다,,

  • 하지만 여러 개선해야될 부분이 포착된다. 1) 프롬프트 최적화, 2) UI 최적화를 차별점으로 내세워보자!

  • 돈(API요금)을 지불하고도 쓸만할 가치가 있는 서비스를 만들자!!



5. 마치며


  • 이 글을 적는 시점은 실제 구현 가능여부를 다 파악하고, 여러 시행착오를 겪고난 후이다.

  • 플러그인 개발은 레퍼런스도 너무 적어서 거의 공식문서(+Claude)에만 의존해서 개발해야하는데 기존과는 다른 새로운 경험일 것이라고 생각한다.

  • 이번 개발에는 Kotlin을 사용해보고자 하는데 이 부분은 약간 걱정이 된다.
    물론 Java도 호환이 되긴 하겠지만, 젯브레인 진영 프로그램이면 Kotlin이 맞는 것 같다.

  • 앞으로 2~3일에 한번씩 트러블 슈팅을 비롯해서 개발 과정에 대해 기술해보고자 한다.

  • 꼭 다 만든 후에 지인들에게 베타테스트도 진행해보고, 1000명이상 다운로드한 플러그인으로 만들고 싶다.

profile
안녕하세요

1개의 댓글

comment-user-thumbnail
2024년 7월 29일

응원해요!

답글 달기