사내애 copilot 전파를 위해 작성한 가이드 문서입니다. 아주 기초적인 내용이 작성되어 있습니다. 후속편으로는 제가 코파일럿을 1년 정도 사용하면서 느꼈던 점, 더 나은 copilot 사용을 위해 도입해볼 포인트를 정리한 후속편은 여기서 확인할 수 있습니다.
copilot
항목이 보이지 않다면 최소 30분 정도 기다린 후 github의 settings 확인하면 copilot 항목이 추가된 것을 확인할 수 있습니다.아래의 이미지와 경로는 copliot plugin 설치 안내 입니다. plugin이 설치되어야 copliot을 사용할 수 있습니다.
(copilot plugin 설치 화면)
(JetBrain Toolbox 사진, IntelliJ 버전 관리)
(intelliJ 우측 tool box 아이콘 확인, 위에서 3번째, 위에서 5번째 아이콘이 copilot)
자동 완성 기능은 visual studio code의 사용 방법을 참고하시면 됩니다.
해당 파트에서는 copliot suggestions, copilot chat을 다룹니다.
예시로 사용할 Height.java
라는 enum 코드를 통해 진행합니다.
@Getter
public enum Height {
//... 175cm 이하 enum 생략
CM_175("175", "5'9''"),
CM_178("178", "5'10''"),
//... 180cm 이상 enum 생략
CM_241("241", "7'11''"),;
private final String centimeter;
private final String feet;
Height(String centimeter, String feet) {
this.centimeter = centimeter;
this.feet = feet;
}
}
해당 enum은 키에 해당하는 cm와 feet의 메타 정보를 가지고 있는 enum입니다.
먼저, 아래의 이미지와 같이 IDE 우측의 tool box에서 copilot 아이콘을 클릭합니다. 클릭하면 Refesh to get completions for the caret position.
라는 문구와 함께 refresh 버튼이 활성화 되어 있습니다. refresh 버튼을 클릭하면 코파일럿이 제가 원하는 코드를 여러 개의 후보군으로 작성해 표시합니다.
(IDE 우측의 tool box에서 copilot 아이콘 클릭하기)
그런데, 활성화된 Refresh 버튼을 클릭할 경우 코파일럿이 코드 후보군을 제시해주는 것이 아니라 에러를 응답합니다.
(No completions were found 에러)
위의 케이스는 우리가 주석으로 copilot이 작성할 비즈니스 로직을 명시해주지 않았기 때문에 발생한 에러입니다. 그럼 간단한 비즈니스 로직을 하나만 넣어봅시다. (예시로 제시한 저의 문장은 영어가 짧기 때문에 문법과 문맥 파악이 가능한 문장으로 재작성 하시면 더 좋은 결과를 받을 수 있습니다)
우리가 추가할 주석은 enum 객체에서 centimeter를 파라미터로 받아서 feet에 해당하는 값을 return 하는 함수를 만들 것입니다. 추가한 주석은 간단하게 // return feet by centimeter, return type is string, default is 0
추가해봅시다.
@Getter
public enum Height {
//... 175cm 이하 enum 생략
CM_175("175", "5'9''"),
CM_178("178", "5'10''"),
//... 180cm 이상 enum 생략
CM_241("241", "7'11''"),;
private final String centimeter;
private final String feet;
Height(String centimeter, String feet) {
this.centimeter = centimeter;
this.feet = feet;
}
// return feet by centimeter, return type is string, default is 0
}
위처럼 주석을 추가한 후 Refresh 버튼을 클릭하면 아래와 같이 copilot이 다양한 후보군을 응답합니다.
convertFeetByCentimeter
라는 함수를 작성했기 때문에 copilot이 해당 함수를 추천해주는 것입니다.각 작성된 코드들을 확인한 후 원하는 항목이 있다면 Accept solution
을 클릭해 코드를 실제 적용하기만 하면 됩니다.
vs code 같은 경우에는 copilot 사용자라면 언제든지 사용 가능하지만 intelliJ에서 copilot chat을 사용하려면 대기자 등록을 해야 합니다. 아래 copilot 공식 문서에서 대기자 등록을 신청할 수 있습니다.
대기자 신청 링크 : https://docs.github.com/ko/copilot/github-copilot-chat/about-github-copilot-chat
신청을 완료하고 시간이 지나 순서가 오게 되면 아래와 같이 copilot chat 사용이 가능하다는 이메일을 수신합니다.
copilot chat 신청이 완료되었다면 IDE 우측에서 copilot chat 아이콘을 클릭한 후, 프롬프트에 copilot을 통해 해결할 점을 질문합니다. copilot chat의 경우 한글 지원이 가능하니 부담 없이 한글로 물어보면 됩니다.
그렇다면 위에서 사용한 예제를 chat 기능을 이용해 구현해봅시다. cetemter를 파라미터로 받은 후, 해당하는 feet의 값을 응답하는 함수를 만들 것입니다. 이 때 추가되는 조건은 파라미터 cetemeter가 enum의 범위에 없는 값이라면 RuntimeException을 발생시켜야 합니다.
다만, 개인적인 의견으로는 chat-gpt 수준 이상의 답변을 얻기는 힘들었습니다. copilot suggestion, copilot chat 보다는 copilot의 자동 완성 기능을 통해 제가 원하는 방향으로 코드 작성을 진행했습니다. 이에 대한 상세한 내용은 2편, 코파일럿 사용 후기를 통해 다뤄보겠습니다.