AI/ML
AI 툴 활용기 : Github Copilot & JetBrains AI Assistant
Jr여기어때
2024년 12월 5일
원문에서 보기 ↗안녕하세요, 여기어때컴퍼니 파트너혜택개발팀 제이알입니다.
AI 툴을 사용하게 된 계기
최근의 개발자 분들은 AI 툴을 많이 사용하고 계실텐데요. 저는 사실 이러한 AI 툴이라는 것에 대해 처음에는 ‘그래봤자 어설픈 AI툴이지.. 이게 해봤자 얼마나 도움이 되겠어?’ 라는 생각이 컸었습니다. 그래서 처음에 챗 GPT가 나와서 화두가 되고 한참이 되도록 AI 툴이라는 것은 사용해 볼 생각도 갖지 않았었습니다. 그러던 중 주변 동료들이 한 번씩 AI 툴을 사용해보고 ‘정말 좋다' 라는 내용의 추천을 많이 받게 되어서 ‘그럼 나도 한번 사용해볼까?’ 라는 생각이 들게 되었습니다. 마침 주문결제개발팀 월터가 작성해주신 Github Copilot 사용기 도 읽고나니 관심이 확 생겼습니다.
AI 툴이 바꿔준 작업방식
그렇게 처음 관심을 갖게 되고 AI 툴을 사용하게 되었을 때만 해도 긴가민가한 생각이 드는 건 사실이었습니다. 지금 생각해보면 그때는 프롬프트(AI 툴로부터 원하는 응답을 생성하기 위한 명령어[입력값]) 를 잘 입력하지 못했던 것 같습니다. (이 부분에 대해서는 또 챗 GPT, 정말 잘 쓰고 있나요? 를 보면 참고가 될 거 같습니다.😄) 아무튼 본론으로 돌아와서, 저는 과거에는 어설펐지만 현재는 개발할 때 AI 툴을 나름 잘(?) 사용하고 있다고 생각합니다.
제가 AI 툴을 개발에 사용하는 범위는
개발하기 난해한 알고리즘이나 테이블 구조를 잡아야 할 때 괜찮은 로직 혹은 구조가 있는지를 확인
클린코드를 위한 리팩토링
코드 리뷰시 내가 보지 못한 부분(예외 발생 가능성 등)이 있는지 확인
이렇게 세 가지 입니다.

챗 GPT로 리팩토링하는 예시
이러면 개발자가 필요가 없네? 라고 하실 수 있는데요. 네 그렇습니다. 저는 이제 AI 에게 제 자리를…ㅈㅜ 줄 순 없죠.😅 결국 질문하는 사람은 저고 답변에 대한 확인도 제가 합니다. 그리고 AI 가 생각보다 지금 많이 발전해와서 코드로 답변을 주거나 했을 때 해당 코드가 틀리는 경우는 많이 없어지긴 했지만, AI 툴별로 예스맨인 경우가 있어서 질문이 잘못되었는데도 그에 맞는 답변을 하기 위해 말도 안되는 코드를 답으로 줄 때도 있습니다.
결국 판단은 개발자 개인이 하는 셈이죠. 또한 책임도 AI 툴이 지는 것은 아니기 때문에 사용하는 개발자가 제대로 된 질문을 하고 답변받은 내용에 대해서도 검증하는 작업이 꼭 필요합니다.
검증까지 해야되면 굳이 왜 그거 쓰냐? 그냥 검색해서 찾는 게 낫겠다 하실 수도 있는데요. 검색하는 것보다 작게는 몇 초, 크게는 몇 시간 이상 빠르게 원하는 답을 찾을 수 있고 단순 검색으로 찾은 내용도 검증 되었다고 100% 신뢰할 수 있는 것은 아니기에(공식 사이트는 제외하구요😅) 저는 더더욱 시간절약을 위해서라도 AI 툴을 사용하는 게 좋다는 입장입니다.
AI 툴에 부정적이던 제가 이렇게 바뀌었습니다. 관심이 가신다면 한 번쯤 사용해 보시는 것도 좋지 않을까요?
Copilot & AI assistant
두 가지 AI 툴이 있습니다. GitHub에서 출시한 Copilot과 (여기에서는) JetBrains사에서 만든 AI Assistant 입니다.

Bing Image Creator 로 만듦
앞 문단에서 나온 예시로나 실제 현재 제가 사용하고 있는 건 주로 챗 GPT 입니다만, 실제 개발용으로 쓰이는 것들은 대표적으로 바로 위의 두 가지가 유명합니다. 제가 속한 부서에서도 현재 흐름이기도 한 이 AI 개발도구들을 실제로 도입하기 위해 검토 중 입니다. 운이 좋게도 마침 저도 이 검토를 위한 파일럿 테스트에 참여할 수 있었습니다. 이 파일럿 테스트를 진행하면서 제가 “주관적으로" 느꼈던 각각의 프로그램의 장/단점들을 공유해보고자 합니다.
Copilot
Copilot에 대해 우선 제가 직접 사용해보면서 느낀 장점부터 살펴보겠습니다.
장점
- 자동완성 기능이 꽤 좋다

아직 다 입력하기 전인데 미리 입력할 만한 내용을 자동완성해준다.
위 그림 예시처럼 코딩 흐름상 어떤 값을 입력할지 Copilot이 예상해서 자동완성을 해주려고 합니다. 기본 IDE에서도 자동완성은 제공하나, 자체 자동완성은 단순히 기존에 있던 메소드명을 처음 몇 글자 입력하면 뒤의 문자들을 완성시켜주는 수준인 반면에 Copilot이 제공하는 자동완성은 코드의 흐름을 보고 예측해서 제시해주는 수준입니다. 이 기능을 통해 불필요한 타이핑 시간이 상당히 줄어드는 것을 체감할 수 있었습니다.
- 한글지원
한글 지원도 이러한 AI 툴을 사용하는데에 있어 작지 않은 부분이라고 생각합니다. 근래에 나온 생성형 AI라고 하는 것들은 대부분 한글로 물어봐도 잘 대답해 주긴 합니다만, 영어로 질문하는 것에 비해 답변 수준이 좋지 않거나 한글로 질문해도 영어로 답변을 주는 경우도 없지는 않습니다. 그런데 Copilot은 한글로 질문하면 한글로 잘 대답해 주었습니다.

Copilot 코드 예시
- 코드 및 테스트 코드 작성시, 리팩토링시 활용도도 좋음
Copilot은 IDE 에디터 상에서 주석을 사용해서 프롬프트를 입력하여 바로 코드를 뽑아내게 할 수도 있습니다. 그리고 원하는 코드 부분을 드래그하여 블럭화한 후 명령어를 통해 설명이나 테스트 코드작성 요청을 간편하게 할 수 있습니다. 리팩토링도 이와 비슷한 방법으로 쉽게 질문하고 답변 받을 수 있습니다.

앞서 자동완성 부분에서 작성했던 코드(writeSomething)의 테스트 코드
다만 단점들도 조금 확인할 수 있었습니다.
단점
(제가 초안을 작성한 시점(24년 7월)에 발견한 것들이라 현재는 개선이 되었을 수도 있습니다.)
- 한글지원이지만 한글지원이 아니다(?)

한글로 대답하면서 한글로 답변 제공이 불가하다는 Copilot…

한글로 질문했지만 영어로 대답하는 Copilot
- 질문이 불명확하거나 개발 관련된 내용이 아닐 경우 답변을 받기 힘들다

무한 로딩 상태에 빠진 Copilot…
Copilot 정리
이처럼 자동완성과 코드 작성에 있어서 확실한 강점을 가진 Copilot이었는데요. 물론 아직까진 예시 코드를 답변에서 긁어서 작성해야 한다든지 한글지원이 완벽하지 않다든지 하는 등의 몇 가지 단점들이 보이긴 합니다만, 차츰 개선해 나간다면 개발하기 정말 편해지겠다는 생각이 들었습니다.
AI assistant
장점
- 수정한 코드를 diff 뷰어로 보기 좋게 보여준다

리팩토링 요청한 코드에 대해 적용 전/후를 diff로 비교해준다
처음 사용했을 때 Copilot하고 가장 큰 차이를 느꼈던 부분이기도 합니다. IntelliJ를 개발한 회사에서 만든 AI 툴이라 그런지 IntelliJ의 diff 뷰어 기능을 이용해서 변경할 부분을 파악하기 용이하게 보여주고, Accept all 버튼을 누르면 코드상에 바로 적용하게 해두었습니다. IntelliJ를 사용한다면 이런 부분에 있어서는 AI 툴과의 조화나 사용성에 있어서 이점을 가져갈 수 있을 것 같습니다.
- 테스트 코드도 바로 생성해준다

테스트 코드 생성전 예시로 보여주고 Accept all을 누르면 바로 클래스 파일로 저장된다
Copilot에서는 테스트 코드를 만들어 달라는 명령어를 입력하면 사이드에 있는 대화형 AI에서 예시 코드를 보여주는 형식이었는데, AI assistant는 바로 위에서 말한 장점과 같은 맥락으로 IntelliJ에서 만든 툴이라 그런지 테스트 코드도 직접 클래스 파일로 바로 생성해 줍니다.
- 다국어 지원

답변을 일본어로도 변환해준다
기본은 영어로 질문과 답변이 가능한 것으로 보이고 한글로 질문하면 한글로 답변도 해줍니다. 또한 타 국가의 언어로 답변을 요구하면 번역해서 답변을 주는 것으로 확인했습니다.
단점
- 전체 구조에 대해선 분석이 안된다

구조에 대한 평가를 바라는 질문

구조에 대해 일단 파악해본다고 답변은 줬지만 더 이상의 답변은 없었다.
프로젝트 전체 구조에 대해서 설계 변경이나 평가를 바라는 질문을 하면 현재 IDE 상에서 열려있는 파일들에 대해서는 파악을 하는 거 같은데, 열려있지 않은 파일들에 대해서는 파악해보겠다고 답변만 하고 한참을 기다려도 더 이상의 답변은 없었습니다.
- 불필요한(?) 리팩토링도 있다

굳이 상수화 필요 없는 부분까지 리팩토링 하는 것처럼 보인다.
Entity 클래스 하나를 리팩토링하게 해봤는데, Id 생성에 대해 선언하는 부분인 GeneratedValue 어노테이션의 전략 부분을 굳이 상수화해서 리팩토링 해야된다는 답변을 주는 부분은 ‘굳이?’ 라는 생각이 들게 했습니다.
- 개발 외적인 질문에는 답변하지 않는다

개발 내용 외에는 답변하지 않겠다는 굳은 의지 - T인듯(?)
이건 단점이라고 보기에 애매한 부분이기는 하나, 정말 개발에 국한된 질문만 하라는 것 같아서 정해진 명령어(리팩토링, 테스트 코드 작성, 문제점 도출 등) 외에는 답변할 수 없는 AI로 보여서 아쉬웠습니다.
AI assistant 정리
AI assistant는 파일럿 테스트때 경험해보진 못하고, 별도로 집PC에서 설치하여 사용해 보았는데요. 앞서 Copilot은 IDE인 IntelliJ에서 플러그인을 설치하여 사용할 수 있었는데, AI assistant는 IntelliJ 개발사인 Jetbrains사에서 개발한 제품이라 호환성 측면이나 활용도에서 더 높지 않을까 하는 기대감으로 사용해 봤습니다. 예상대로 AI assistant는 리팩토링시 변환 부분에 대한 내용을 diff 뷰어로도 보여주고 예시 코드나 테스트 코드를 바로 클래스 파일로 생성하여 적용해 주는 부분에서 상당히 편리함을 느낄 수 있었습니다. 다만, 리팩토링이나 코드 예시에 대한 답변이 제가 원하는 방향이 아니어서 아쉬운 점이 있었습니다. (물론 추가 질문을 통해 개선은 가능합니다.)
마무리
제가 경험한 AI 툴 활용에 대한 경험, 그리고 개발 AI 툴의 대표격인 Copilot과 AI-assistant를 사용해본 경험을 공유하고자 시작한 글이었는데 잘 전달이 되었을까요? 어떤 툴이 더 낫다 라고 말씀드리기 보다는 각 AI 툴의 특징을 살펴보고, 이런 부분에 있어서는 이렇게 활용하기 좋겠구나 라는 인사이트를 드리고자 했습니다.
모쪼록 아직까지 AI툴을 사용해본 경험이 없는 개발자 분들도 한 번쯤은 경험해보시고 실제로 활용해 본다면 작업 속도나 코드 퀄리티를 조금 끌어올릴 수 있지 않을까 하여 추천드립니다.