Copilot으로 뭘 할 수 있을까?
안녕하세요, SYF 컴퍼니의 서버 개발자 입니다.
이번 글에서는 Copilot을 사용했던 경험을 공유해보고자 합니다.
프로젝트에 정식으로 도입하여 사용한 것이 이나고 개인적으로 몇 가지 테스트 해 보며 느낀 점을 작성한 글로, 정확하지 않은 부분이 있을 수도 있는 점 양해 부탁드립니다😊
시작하기에 앞서 Copilot에 대해 짧막하게 소개 드리겠습니다 🤖
코파일럿은 OpenAI에서 개발한 인공지능 기반의 코드 자동완성 도구입니다. 사전 학습된 모델인 Codex를 사용하여 코드를 추천해줍니다.
Copilot은 개인용인 Copilot for Individuals, 기업용인 Copilot for Business 두 가지 버전으로 제공됩니다.
Copilot for Individuals | Copilot for Business |
---|---|
|
|
개인용 플랜에서 사용자 정보를 서버에 저장 하는 것을 막으려면 Allow GitHub to use my code snippets for product improvements 를 체크 해제하면 됩니다
🤔 사용 방법
copliot을 Copilot for Individuals의 무료 체험판으로 사용했기 때문에, 혹시 모를 보안 이슈를 방지하여 이전에 학습용으로 작성했던 개인 사이드 프로젝트 코드로 테스트를 진행했습니다.
1.1 IntelliJ 에서의 기본적인 사용법
목적에 맞는 주석을 작성하고 기다리면 그에 대한 코드가 완성되어 추천됩니다.
꼭 주석을 작성하지 않더라도, 마찬가지로 코드를 작성 중 기다리면 문맥에 맞게 그 다음 코드를 추천해줍니다.
tab
을 눌러 사용하고alt + [
혹은 alt + ]
으로 변경합니다.alt + [
혹은 alt + ]
으로 변경합니다.1.2 VSCode에서의 Copilot Labs 사용법
VSCode에서의 Copilot 사용법도 기본적으로는 IntelliJ와 크게 다르지 않습니다.
다만 VSCode에서는 추가적인 Extention으로 Copilot Labs
를 지원합니다.
Copilot Labs는 Copilot을 지원하는 IDE 중 VSCode에서만 지원하는 기능으로, Copilot의 차세대 기술을 사용할 수 있는 기능입니다. 완전하지는 않지만 재미있고 다양한 기능들을 제공합니다.
기능 | img | 설명 |
---|---|---|
EXPLAIN | 선택한 코드블록을 분석해주는 기능 | |
LANGUAGE TRANSLATION | 선택한 코드블록을 원하는 프로그래밍 언어로 변환해주는 기능 | |
BRUSHE | 선택한 코드 블록을 읽기 쉽게 리팩토링 해주고(READABLE), 생략된 타입을 추가해주고(ADD TYPES), 간단한 버그를 고쳐주고(FIX BUG), 주석을 추가해주는(LIST STEPS) 등 선택한 블록에 대해 다양한 수정 기능을 제공 | |
TEST GENERATION | 선택한 코드블럭에 대해 테스트코드를 생성해주는 기능. (23.09.13 기준으로 .ts, .js 파일에 대해서만 기능을 지원) |
😀 활용 방법
2.1 변수명, 메서드 추천
2.2 주석 추천
주석으로 코드를 작성하는 것 뿐만 아니라, 역으로 코파일럿을 활용해서 주석을 추가 할수도 있습니다.
메서드 주석 | ||
---|---|---|
|
||
라인 단위 주석 |
Copilot Labs에서는 드래그한 범위에서 더욱 강력한 문서화를 지원합니다.
1. 주석을 추가하고자 하는 범위를 드래그하고, BRUSHES>LIST STEPS를 클릭 | |
---|---|
2. 완료 |
2.3 QnA 기능
Chat GPT와 유사한 QnA 기능을 Copilot에서도 사용할 수 있습니다.
// q :
// a :
위 형식으로 질문을 작성하면 그에 대한 답변을 자동완성으로 제안해줍니다.
간단한 질문에 대해 검색하고 싶은 경우 ChatGPT나 구글링을 할 필요 없이 IDE안에서 해결이 가능합니다.
(이때 좀 무서웠습니다…)
2.4 가능하긴 하지만 활용은 아쉬운 기능들
2.4.1 CopliotLabs::언어 번역(english -> korean)
Custom 기능을 활용하면 언어를 번역할 수 있습니다.
1. 번역하고자 하는 구간을 드래그 | |
---|---|
2. BRUSHES>CUSTOM 에서 원하는 명령을 입력(to korean) | |
3. 완료 |
2.4.2 CopilotLbas::프로그래밍 언어 번역(Java -> Python)
알고리즘과 같이 다른 객체와의 의존관계가 없는 간단한 코드에 대해서는 괜찮은 퀄리티로 프로그래밍 언어 변환이 됩니다.
python → Java | |
---|---|
Java → python |
다만 Spring이나 Django와 같이 다른 객체와 의존관계가 있는 코드에 대해서는 그대로 사용하기 힘든 퀄리티로 변환 되는 것을 확인할 수 있었습니다.
Spring -> Django | |
---|---|
Java → python |
2.4.3 테스트 코드 작성
Typescript와 Javascpipt로 작성된 코드는 Copilot Labs에서 테스트 코드를 작성해주는 기능을 제공합니다.
실무에 도움이 될까 하여 코파일럿으로 SpringBoot 테스트 코드를 작성해보았습니다.
더보기
1. 간단한 CPUD를 작성하고 | |
---|---|
2. 테스트 클래스를 생성 | |
3. 주석 작성 후 코파일럿 추천대로 코드를 작성 | |
4. 어느 정도 코드를 작성하면 코파일럿이 다음 코드를 추천 | |
다만 잘못된 코드를 추천해주기도 합니다. |
=> 결론적으로 테스트 코드를 작성할 때 어느 정도 자동 완성 도움은 받지만, 코파일럿 만으로 테스트코드를 작성하기는 어려운 수준입니다.
코파일럿이 스스로 작성했듯 코파일럿이 테스트코드를 작성하는 것이 아니라 문맥에 맞게 코드를 추천하는 것이기 때문에, 개발자가 어떻게 메소드를 만들것인지 분명한 목적을 가지고 코드를 작성해야 하며 코파일럿은 타이핑 시간을 단축시켜 주는 정도로 활용해야 합니다.
🌈 사용 후기
코파일럿이 저에게 뒤끝 부리는 사진으로 마무리 하겠습니다. 읽어주셔서 감사합니다 🙏