[00:00]
2025년 2월 Visual Studio Code 업데이트로
[00:02]
Copilot이 더욱 강력한
[00:05]
AI 페어 프로그래머로 거듭났습니다.
[00:08]
지금까지 VS Code의 GitHub Copilot은
[00:11]
커서 위치에서만 작동했지만
[00:14]
'다음 편집 제안' 기능을 통해
[00:16]
사용자가 수행한 변경 사항을 기반으로
[00:19]
다음에 필요한 편집을 제안할 수 있게 되었습니다.
[00:21]
Runner 클래스를 만들기 시작했는데
[00:23]
생성자를 만든 후
[00:26]
필드 설정을 잊어서 오류가 발생했습니다.
[00:27]
다음 편집 제안이 필요한 필드를 감지하고
[00:30]
그에 대한 제안을 합니다.
[00:32]
왼쪽의 아이콘을 사용하거나
[00:35]
탭을 선택하여 수동으로 수락하거나 거부할 수 있습니다.
[00:38]
탭을 눌러 작업을 완료할 수 있죠.
[00:41]
다음 편집 제안은
[00:43]
Runner 데이터에 대한 읽기 액세스를 제공하는
[00:46]
getInfo 메서드를 제안합니다.
[00:48]
탭을 선택하여 편집으로 이동하고
[00:51]
다시 탭을 눌러 수락해보겠습니다.
[00:53]
이제 신발 선호도를 추가할 차례입니다.
[00:56]
Copilot이 브랜드와 사이즈를 제안하고
[00:59]
인터페이스를 생성한 후
[01:02]
다음 편집 제안이 Runner에
[01:04]
이를 추가하길 원한다고 판단합니다.
[01:07]
필드를 추가하고 생성자를 업데이트한 다음
[01:10]
마지막으로 getInfo 메서드까지 추가하여
[01:12]
모든 제안을 탭으로 이동하면서
[01:15]
더 빠르게 코딩할 수 있게 되었습니다.
[01:18]
더 큰 작업을 살펴보면
[01:20]
RunnerTracks라는 웹사이트가 있는데
[01:22]
경주 결과를 보여주는 페이지가 있습니다.
[01:24]
테이블의 페이징을 개선하고 싶은데
[01:27]
참가자가 많을 수 있기 때문입니다.
[01:29]
Copilot 채팅을 사용하여
[01:31]
현재 열려있는 스타일 파일을 변경할 수 있습니다.
[01:34]
모델 선택기를 사용하여
[01:37]
최신 옵션 중 하나인
[01:39]
OpenAI O3-mini를 선택하겠습니다.
[01:41]
Copilot 채팅에 버튼을 더 예쁘게 만들어달라고 요청하고
[01:46]
제안된 변경사항을 적용해보겠습니다.
[01:48]
확인해보니 파란색 버튼이
[01:50]
훨씬 더 보기 좋아졌네요.
[01:53]
변경사항을 수락하고
[01:55]
계속 진행해보겠습니다.
[01:57]
사용자가 각 페이지에 표시할
[02:00]
행의 수를 선택할 수 있게 하고 싶습니다.
[02:03]
이를 위해서는 여러 파일을 수정해야 합니다.
[02:07]
Copilot Edit이 여러 파일에 대한
[02:09]
제안을 할 수 있습니다.
[02:11]
Copilot이 변경할 파일을 찾도록 할 수 있지만
[02:14]
작업 세트에 몇 개의 파일을 추가하고
[02:17]
변경을 요청해보겠습니다.
[02:19]
이번에는 Claude 3.5 Sonnet을 사용하여
[02:21]
다양한 모델을 선택할 수 있는
[02:24]
기능을 보여드리겠습니다.
[02:27]
Copilot Edit이 세 개의 파일 모두에 대한
[02:29]
변경 사항을 한 번에 제안했습니다.
[02:33]
변경 사항에 대한 요약도 제공합니다.
[02:36]
저장하고 사이트를 확인해보면
[02:38]
테이블에 표시할 행 수를 선택할 수 있는
[02:41]
드롭다운이 잘 작동하고 있습니다.
[02:43]
하지만 우리 팀은 UI에 대해
[02:46]
더 많은 제안을 가지고 있고
[02:49]
원하는 것을 설명하는 가장 일반적인 방법으로
[02:51]
손으로 그린 마크업이 있는 스크린샷을 사용합니다.
[02:53]
지금까지 Copilot 채팅은 텍스트로만 작업할 수 있었지만
[02:57]
이제 Copilot은 비전 기능을 갖추게 되었습니다.
[03:00]
이미지를 붙여넣어 첨부하고
[03:03]
이미지에 표시된 변경사항을 구현하도록 요청할 수 있습니다.
[03:06]
변경사항을 적용하고 파일을 저장한 뒤
[03:09]
웹사이트를 확인해보면
[03:12]
열 정렬이
[03:14]
제대로 수정되었음을 확인할 수 있습니다.
[03:16]
스크린샷만으로 수정이 완료되었네요. 이제
[03:19]
더 복잡한 작업에 집중해보겠습니다.
[03:20]
우리의 러너 트랙스 웹사이트에는 경주 목록 페이지가 있는데
[03:23]
경주 이름으로 검색할 수 있는 기능을
[03:26]
추가하고 싶습니다.
[03:28]
이를 위해서는 프로젝트의 여러 파일을
[03:31]
수정해야 합니다. 서비스, 서버 사이드 코드,
[03:34]
UI, 그리고 테스트까지요. 코파일럿은 이제
[03:39]
에이전트 모드를 지원하여 복잡한 작업을 수행할 때
[03:42]
전체 프로젝트를 분석하고 반복적으로
[03:45]
작업을 수행할 수 있습니다.
[03:48]
코파일럿은 먼저 우리 프로젝트를 탐색하여
[03:51]
어떤 업데이트가 필요한지 파악합니다.
[03:53]
백엔드 서비스부터 시작해서
[03:56]
UI까지 필요한 변경사항을
[03:59]
적용합니다.
[04:00]
이러한 작업이 완료되면
[04:02]
테스트에 주목합니다. 서비스와 페이지의 단위 테스트,
[04:05]
그리고 엔드투엔드 테스트까지 업데이트하고
[04:08]
테스트가 업데이트되면 단위 테스트를 실행하라는
[04:12]
메시지가 표시됩니다. 단위 테스트는 실패하는데,
[04:14]
기존 테스트가 새로운 기능과
[04:17]
맞지 않기 때문입니다.
[04:20]
코파일럿이 이 문제를 감지하고
[04:22]
수정사항을 적용한 뒤 테스트를
[04:25]
다시 실행하도록 안내합니다. 테스트가 성공하면
[04:27]
엔드투엔드 테스트를 실행하라는
[04:30]
메시지가 표시됩니다. 제가 포트를 사용 중인
[04:32]
다른 테스트 프로세스를 중지하는 것을
[04:35]
잊었네요. 다행히 코파일럿이
[04:37]
프로세스를 중지하고 테스트를 실행하는
[04:40]
명령어를 생성해 도와줍니다.
[04:43]
모든 테스트가 통과되고 웹사이트를
[04:45]
다시 확인해보면 새로운 기능이 잘 작동하는 것을
[04:47]
볼 수 있습니다. 이제 마지막으로
[04:50]
백엔드 서비스를 만들어보겠습니다. 러너 트랙스 웹사이트에
[04:52]
경주와 모금 활동을 연결할 수 있는
[04:55]
기능을 추가하고 싶습니다. 앱의 다른
[04:57]
서비스와 같은 모금 활동 서비스 모델이
[05:00]
필요합니다. 이를 위해서는
[05:02]
구조와 스키마를 이해해야 하는데,
[05:04]
우리가 코드베이스에서 사용하고 있는
[05:06]
스키마를 이해해야 합니다. 단순히 코파일럿에게
[05:10]
서비스를 만들어달라고 하면, 기본 스키마와
[05:12]
우리가 원하는 서비스 구조를 이해하는 데
[05:15]
필요한 컨텍스트가 부족합니다.
[05:17]
AI와 작업할 때는 컨텍스트가 핵심입니다.
[05:20]
처음부터 다시 시작하되, 이번에는
[05:24]
프롬프트 파일을 참조하여
[05:26]
구현하고자 하는 방식에 대해 더 구체적인
[05:29]
정보를 제공하겠습니다. 프롬프트 파일은
[05:31]
GitHub의 prompts 폴더에 저장된
[05:33]
마크다운 파일입니다.
[05:37]
다른 파일도 참조할 수 있는데, 이 경우에는
[05:39]
데이터베이스 구조를 설명하는
[05:42]
Prisma 스키마를 참조합니다. 우리의 코드
[05:44]
선호도에 대한 노트도 있고,
[05:47]
서비스를 어떻게 구성하고 싶은지에 대한
[05:50]
템플릿도 포함되어 있습니다.
[05:52]
프롬프트를 다시 보내면, 이러한 추가 컨텍스트 덕분에
[05:55]
코파일럿이 훨씬 더 나은 결과를
[05:58]
제공하는 것을 볼 수 있습니다.
[06:00]
이것이 바로 우리가 원하는 것처럼 보입니다.
[06:03]
코파일럿과 프롬프트 파일 덕분에
[06:05]
Visual Studio Code와 GitHub 코파일럿의
[06:08]
새로운 업데이트를 통해
[06:11]
더 많은 기능을 사용할 수 있게 되어
[06:12]
생산성을 훨씬 더 높일 수
[06:14]
있게 되었습니다.
[06:17]
[음악]