[Cursor] Cursor AI IDE를 사용한 Android 개발 - rules 사용.
필자가 회사에서 Cursor를 사용한 개발을 진행하면서
같은 팀 동료와 어떻게 Cursor를 사용해야 더 효율성 높은 개발을 할 수 있고, 어떻게 해야 우리가 원하는 결과를 얻을 수 있는지에 대해 이야기를 자주 진행한다.
이야기를 할 때 가장 먼저 나왔던 내용은
어떻게 설정을 미리 해두면 우리가 나중에 사용할 때 최소한의 입력으로 원하는 결과를 얻을 수 있는 것인가?
에 대한 내용이다.
되게 긴 문장이지만, 간단하게 한번 세팅하고 편하게 높은 정확성의 결과를 계속해서 받고 싶다는 것으로 cursor IDE를 사용하는 사람이라면 누구든 이러한 목표를 가지고 접근을 했을 것이라고 생각한다.
이야기를 하다보면 다양한 실험할 수 있는 방법에 대해 이야기가 나왔는데,
그것들 중 Cursor IDE를 사용할 때 가장 기본적으로 적용이 되는 rules for ai와 cursorrules 파일에 대하여 설명하고자 한다.
우선,
Rules for AI에 대하여 설명하도록 하겠다.
이것이 무엇인가? 하면, 가장 기본적으로 Cursor Settings에 들어가면 보이는 ai의 기본 세팅이라고 볼 수 있다.
해당 위치로 들어가보면,
이런 부분을 확인할 수 있을 것이다.
Rules for AI와 더불어 하단에는 .cursorrules file이라는 다음에 설명할 파일에 대해 나와있다.
이것은 다음에 설명하도록 하고, Rules for AI에 대해 확인해 보자.
작은 글씨로 설명이 되어있다시피,
해당 영역에 작성한 규칙은 모든 채팅과 cmd + K 세션에서 적용된다고 나와있다.
즉, 2가지로 작성되어 있지만 우리가 기본적으로 cursor를 사용하여 코드를 작성할 때 사용하는 모든 공간에서 해당 규칙이 기본적으로 적용이 된다는 것이다.
그러면 어떤 것을 작성해야 할까?
코드를 작성할 때 고려해야 할 것들이 이것저것 상당히 많긴 하지만, 우선 제대로 해당 부분이 적용되는지 확인하기 위해서 필자는 다음과 같이 작성했다.
간단하다.
모든 응답은 한국어로 해달라는 룰을 작성했다.
여기서 해당 룰은 한글로 작성해도 상관없다.
하지만, 필자가 다른 자료들과 LLM을 사용하면서 확인한 결과 한글보다는 영어로 작성하는 것이 우리가 원하고자 하는 부분을 보다 명확하게 전달할 수 있기 때문에 원하는 결과가 나올 확률이 높아진다.
당연하다시피 Cursor IDE에서 사용하는 LLM들은 외국에서 만들어졌으며, 영어가 베이스로 된 데이터를 읽고 학습해 왔기 때문에 영어로 표현해 주는 것이 더 정확하게 이해할 수 있다고 한다.
또한, 한국어에서 영어로 번역하는 과정에서 표현이 모호한 것들이 생기게 되면, 우리가 의도한 바와 다르게 해석하여 단어를 검색하기 때문에 결과에서 오답률이 높아진다고 한다.
그렇기 때문에 한글이 아닌 영어로 작성하였지만, 한글로도 테스트해봤을 때 정상적으로 동작하는 것은 확인했었다.
하지만 약간의 정확도라도 높이고자 이후에도 영어로 작성하도록 하겠다.
이와 같이 룰을 입력해 주고, 아주 간단하게 예제를 만들어달라고 요청하였다.
간단하게 SingleLine의 텍스트를 입력받아 글자의 길이를 보여주는 예제를 만들어달라고 하였으며, 파일을 저장할 위치도 넣어줬더니
결과가 위와 같이 나왔다.
아주 간단한 UI이기 때문에 대충 입력해도 잘 나오는 것으로 보이며, 프로젝트 내부 코드를 어느 정도 읽고 대답하기 때문인지 다른 example을 만들 때 선언한 방식과 아주 동일하게 example 함수를 만들어 주었다.
일단 간단한 것들은 이렇게까지 잘 나온다는 사실에 감탄스러웠다.
그렇다면, 이제 Rules for AI에 데이터를 넣어보도록 하자.
어떠한 데이터를 넣어야 하나 고민하던 와중,
X에 올라온 하나의 게시글을 동료가 공유해 주었다.
게시글에는 Rules for AI에 작성할 기본적인 룰에 대하여 작성해 둔 것이었다.
이것저것 많이 쓰여있지만, 어떠한 형식으로 답해줬으면 좋겠다.라는 내용을 풀어서 작성한 것이다.
이 룰을 작성한 다음, 맨 처음에 질문했던 것과 완전히 같은 질문을 해보자.
코드 내용은 동일해 보이지만, 설명 부분이 좀 달라진 것을 확인할 수 있다.
간단한 코드였기 때문에 그런지는 모르지만 다이나믹한 결과의 차이는 확인할 수 없었지만 설명의 경우 확실히 간단하게 잘 설명을 해주고 있었고, 반복해서 질문을 해보았을 때 어느 정도 차이는 보일지라도 코드 내용은 거의 똑같게 나왔다.
rules for ai을 추가했을 때 결과의 차이를 확인해 보았으니,
다음으로는 cursorrules에 대한 추가를 해보도록 하자.
cursorrules의 경우, rules for ai를 입력하는 곳 아래로 내려가보면 항상 포함할 것인가에 대한 토글 버튼이 있는 것을 볼 수 있다.
따라서, 해당 토글을 on으로 해둔 상태에서 cursorrules 파일을 만들어둔다면 질문할 때 자동으로 cursorrules파일을 참조해서 해당 파일에 저장된 조건들을 적용하여 답변을 해줄 것이다.
우선, 다른 설명에 앞서 필자가 작성한 cursorrules 파일은 다음과 같다.
ROLE: Android Development Expert라는 형태로 이 cursor IDE에게 질문할 때의 persona를 주입해 주도록 한다.
해당 파일을 작성하기 위해 cursor IDE에서 채팅으로 물어보기도 하고, claude를 통해 물어보기도 하고, 다양한 cursor setting에 대한 게시글을 찾아본 결과 이와 같은 답변의 persona를 지정해서 적어두는 경우, 훨씬 더 원하는 답변을 얻을 확률이 높아진다는 것을 알 수 있었다.
필자는 Android 개발에 사용할 것이기 때문에 위와 같은 조건을 넣어주었지만, 다른 개발이라면 조건을 바꿔주는 것이 좋을 것이다.
작성한 내용은 다른 setting글에서 가져온 것은 아니고, claude를 사용하여 cursor IDE의 cursorrules에 지정할 조건을 만들어달라고 질문하여 얻은 답변을 토대로 작성하였다.
해당 파일은
왼편에 있는 프로젝트 파일을 볼 수 있는 위치에서 오른쪽 버튼을 눌러 New File을 클릭하고
.cursorrules 라고 확장자 없이 .으로 시작하는 파일을 생성한 후, 위의 조건을 추가해서 저장하면 된다.
이와 같이 파일을 저장한 후에 처음 했던 것처럼 다시 한번 질문을 해보도록 하자.
다른 부분은 Single에서 Multi로 변경한 것 외에는 동일하게 질문을 했다.
결과를 보면 기존에는 example 코드 하나만 만들어주던 것을 이번에는 코드 베이스로 읽고 exampleObject에 추가하고, constValue에 추가하는 등 완전하게 예제 코드와 그것을 실행하기 위한 모든 코드가 추가되게 된다.
기존의 코드는 예제만 추가되어 바로 빌드하여 볼 수는 없지만, 위와 같이 코드를 작성하고 나면 바로 빌드를 할 수 있게 된다.
빌드를 하게 되면
이와 같이 예제 카드가 나오고,
이처럼 MultiLine으로 텍스트를 입력받고, 그 텍스트의 길이를 뿌려주는 예제가 완성되게 된다.
이것으로 간단하게 rules for ai와 cursorrules 파일을 적용했을 때와 하지 않았을 때의 차이를 확인해 보았는데
간단하게 정리하자면,
rules for ai에는 응답에 대한 가장 기본적인 조건을 추가해 준다.
cursorrules에는 우리가 원하는 persona를 입력하고 개발 측면에서 필요한 기본적인 조건을 추가해 준다.
라고 생각하면 될 것이다.
물론. cursorrules에 작성한 내용은 rules for ai에 포함시킨다.라는 조건을 on 시켜야지 위와 같은 효과를 볼 수 있고,
해당 설정을 보면 알 수 있듯이 cursorrules에 대한 내용을 rules for ai에, rules for ai에 대한 내용을 cursorrules에 넣어서 하나만 사용해도 문제는 없다.
하지만, 파일별로 역할을 나누어서 작성함으로써 해당 규칙들을 관리하기가 편하고 고도화 작업을 할 때 보다 간단하게 작업을 할 수 있기 때문에 필자는 이와 같은 방식을 통하여 기본적인 규칙을 지정해 주었다.
이번에 규칙 파일들을 만들고, 안에 persona를 넣거나 개발에 대한 다양한 규칙을 넣어보고 사용해 보면서 생각보다 진짜 코드를 잘 뽑아준다고 생각을 하였다.
물론, 복잡한 것들이라던지 UI와 같은 디테일을 필요로 하는 것들은 간단한 키워드로 코드를 뽑아냈을 때 보다 많은 조건들을 추가하지 않으면 만족하는 결과가 나오지는 않았지만 이 정도의 퀄리티라도 상당히 만족스러웠다.
만족스럽지 않은 결과가 나온 것들은 다양한 규칙을 추가하거나, 질문하는 방식을 변경함으로써 보다 높은 퀄리티의 결과를 뽑아낼 수 있을 것이라고 생각이 들었다.
cursor IDE를 통해서 100% 간단하게 개발을 하는 것 자체는 아직까지는 무리가 있을 것 같지만,
세팅을 디테일하게 해 주고 잘만 사용한다면 정말 높은 효율성을 보여줄 수 있는 도구가 될 것이라고 생각한다.