Copilot 사용 후기

GitHub Copilot을 간단히 사용해 보고 후기를 남긴다.

AI-based 코딩 자동화 툴

코드 에디터나 IDE에서 지원하는 것 이상의 코딩 자동화 툴에는 아래와 같은 것들이 있다.

Kite나 Tabnine을 사용해 봤을 때는 큰 감흥은 없었는데, 이번 Copilot은 큰 파급력과 잠재력이 있다고 느꼈고, 다른 개발자들도 사용해 볼 것을 권장하려고 블로그에 포스팅해 본다.

Copilot 소개

Copilot은 GitHub이 OpenAI의 Codex AI system인 GPT-3 모델을 이용하여 GitHub의 방대한 저장소 소스 코드들을 학습시킨 코드 자동 완성 툴로 2021년 7월에 preview 버전으로 출시되었다.
Kite나 Tabnine이 AI-based 코딩 자동화 툴이라고 선전하고는 있지만, 기존 IDE 기능에서 약간의 +$\alpha$ 기능을 제공함에 비하여, Copilot은 사용자의 요구 사항을 AI로 분석하여 관련 소스 코드를 제시해 준다는 차이점이 있다.


그런데 Copilot은 현재까지도 preview 버전 상태이고, 사용을 신청하면 waitlist에 올라간 후 순차적으로 사용 허가를 내 준다. 나도 오래 전에 신청을 했던 것 같은데 드디어 이번에 아래와 같은 허가 메일이 와서, 궁금한 마음에 간단히 사용해 보았다. 🙄

설치

GitHub Copilot 페이지에 나와 있듯이 Copilot은 현재 Visual Studio Code, JetBrains(IntelliJ, PyCharm), Neovim 개발 환경을 지원한다.
나는 주력으로 VS Code를 사용하므로 먼저 여기서 테스트해 보았다 (IntelliJ IDEA에서도 테스트해 보았는데, VS Code에서의 완성도가 더 높았고, Neovim에서도 정상적으로 동작하였음). VS Code에서는 GitHub Copilot 익스텐션을 설치하면 된다.
참고로 Copilot 익스텐션(플러그인)이 동작되려면 본인 GitHub 계정으로 로그인하여 access를 허가해줘야 하고, telemetry 데이터 제출도 (요건 아직 preview 단계라서 그런 듯) 동의해야 한다.

사용법

VS Code에서는 현재 언어에 대하여 Copilot이 enable 된 상태이면 상태바의 오른쪽에 와 같이 표시된다.


Copilot은 언어별로 동작을 enable/disable 시킬 수 있는데 (Copilot 아이콘을 누르면 현재 언어에 대해 토글됨), disable 된 상태이면 상태바에서 위와 동일한 모양에 바탕색만 빨간색으로 바뀌어서 표시된다.


Copilot이 enable 되어 있고, Copilot이 해당 언어를 지원한다면 (Bash script, C, C++, Go, Java, JavaScript, Python, Ruby, TypeScript 등 지원) 코딩 중에 자동으로 제안하는 코드가 표시된다.
또는 원하는 기능을 주석으로 작성해도 해당 기능을 구현하는 코드를 제안해 준다. (영어 대신에 한글로 작성해도 어느 정도 되는 듯함)


Copilot이 제안해 준 코드가 맘에 들면 tab 키를 누르면 해당 코드를 가져온다. 만약 제안된 코드가 맘에 들지 않아서 다른 제안 코드를 보고 싶으면 Alt + ] 키 또는 Alt + [ 키를 누르면 다음 제안 코드가 표시된다. (] 키는 next를 보여주고, [ 키는 previous를 보여줌) 제안된 코드를 가져오지 않으려면 ESC 키를 누르면 된다.


참고로 Copilot은 GitHub로 학습한 내용에서 제안할 코드를 찾지 못하면 (이 경우에는 제안하는 시간이 좀 더 걸림) 현재 사용 중인 프로젝트에서의 소스를 이용하여 제안하기도 한다.

사용 예

아래는 C 파일에서 // 디렉토리 안의 모든 파일들을 순회하는 함수 주석을 달았때, 첫 번째로 제안된 코드를 캡쳐한 것이다.


이 제안된 코드를 사용하기 위하여 Tab 키를 누르면 아래 캡쳐와 같이 해당 코드가 적용된다.

GitHub Copilot Labs

참고로 얼마 전에 GitHub Copilot Labs 익스텐션도 나왔는데, 역시 preview 단계로 GitHub Copilot의 실험적인 기능들을 제공하고 있다.

느낀점

일단 속도는 보통 1~2초에 제안 코드가 표시되어 상당히 만족스러웠다. 그래서 아무 소스 코드도 없는 상태에서 코딩할 때나 참조할 만한 소스를 찾을 때 상당히 편리할 것 같다.
일반적인 코딩 작성시에도 Kite나 Tabnine보다 뛰어나게 내가 작성하려는 의도에 맞추어서 제안을 해 주어서 (디버그 출력 코드 제안 등은 꽤나 만족스러운 수준) 코딩 시간을 줄일 수 있었다.
또 변수 타입을 틀리게 사용한 경우에도 올바른 제안을 보여주었으며, 내가 작성하려고 의도했던 코드와 꽤나 유사하게 주석과 코드를 제안해 주었다.


물론 Copilot이 제시해 준 코드는 정확히 원하는 내용이 아닐 수 있고, 버그가 내포되어 있을 수도 있고, 아직 라이선스 관련 이슈가 정리된 것 같지도 않다. 따라서 Copilot이 제시한 코드는 참조 용도로만 사용하고, 실제 코드에 적용시에는 프로그래머가 직접 검토 및 수정해야 할 것이다.


한편 프로그래밍은 아키텍쳐 설계가 먼저이고 이것이 중요한데, Copilot은 이런 것은 전혀 할 수 없다. 따라서 기존과 마찬가지로 프로그래머의 역할이 여전히 중요하다. (Copilot은 프로그래머의 코딩 보조 역할을 할 수 있을 뿐, 프로그래머를 대체하여 설계 및 코딩을 할 수는 없음)
다만 실제 코딩시에 Copilot으로 단순 코딩 도움을 받으면 조금 더 개발을 편하게 할 수는 있을 것 같고, 심심풀이로 다른 사람들은 어떻게 구현했는지 쉽게 구경할 수 있겠다.


어쩌면 Copilot은 preview 버전만 무료이고 추후 릴리즈 버전으로 변경되면 유료로 변경될 수도 있겠는데, 그렇다면 차라리 계속 preview 버전이라도 무료도 사용할 수 있었으면 좋겠다. 🙏

🚩 Copilot이 2022년 6월 22일에 정식 출시되면서 (preview 종료) 구독형 유료 서비스로 바뀌었다. (다만 유명 오픈 소스에 참여하는 maintainer 등에게는 무료로 제공할 듯함)
정식 서비스인 경우에도 두 달 동안은 무료 평가판으로 사용할 수 있으므로 앞으로도 두 달 동안은 무료로 사용할 수 있긴 한데, 이 기간이 끝나고 Copilot을 무료로 못 쓰게 되는 경우에는 아쉽지만 Kite, Tabnine, Codeium 등의 다른 대안을 사용해야겠다. 😰

GitHub Copilot을 로컬 서버에 운용하여 사용할 수 있게 해 주는 오픈 소스를 발견하였다. 상세 내용은 FauxPilot (GitHub Copilot 대체) 소개 페이지를 참조한다.

아마존에서 Copilot을 견제하기 위하여 AWS toolkit에 AI 보조 코딩 툴인 CodeWhisperer를 포함하였다. (개인 사용은 무료)

2023년 1월에 마치 포토샵에서 이미지를 브러시로 수정하는 것처럼 Copilot에서 코드를 편집할 수 있는 Code Brushes 기능이 추가되었다. (단, 아직 preview 단계로 GitHub Copilot Labs 익스텐션에서 지원함)

Copilot이 유료로 전환된 관계로, 대신에 2023년부터는 주로 ChatGPT를 사용해서 코딩 관련 도움을 받고 있다. 참고로 ChatGPT를 이용할 때, 웹브라우저 이외에도 VS Code에서는 ChatGPT를 지원하는 많은 익스텐션이 있으므로 이를 이용하면 훨씬 편리하다.
나는 최근에는 주로 Cody AI 익스텐션을 사용하고 있는데, 웹브라우저로 이동하지 않고 VS Code 내에서 AI의 도움을 얻을 수 있어서 편리하다.

카테고리:

업데이트: