Github Copilot 을 경험한 내용을 기록해보고자 합니다. 사용경험으로 기본적인 함수 이름으로 기능을 수행할수 있는 코드를 자동 작성이 가능했고 주석, tool 채팅 명령으로도 (ChatGPT 사용성과 매우 유사했습니다.) 개발시 생산성을 높일수 있었습니다.
환경 설정
공식 주소 : https://github.com/features/copilot
우선 copilot 구독형 서비스를 구매를 해야합니다. 개인 사용시 월 $10 년 $100 정도 비용이 듭니다.
구매후 intellij에서 tool을 설치 및 github 연동을 진행합니다.
Github Copilot Chat
사용성은 chatGPT 와 매우 유사했으며 코드이외 내용은 무시합니다.
Github Copilot Hint 기능
주석 혹은 함수명으로 코드를 작성을 진행해 줍니다.
주석에 QuickSort Algorithm Test 작성후 (이것도 힌트로 자동완성이 됩니다.)
copilot이 작성해준 코드 입니다.
@Test
fun quickSortTest() {
val arr = intArrayOf(10, 7, 8, 9, 1, 5)
val n = arr.size
quickSort(arr, 0, n - 1)
println("Sorted array")
printArray(arr)
}
fun quickSort(arr: IntArray, low: Int, high: Int) {
if (low < high) {
val pi = partition(arr, low, high)
quickSort(arr, low, pi - 1)
quickSort(arr, pi + 1, high)
}
}
fun partition(arr: IntArray, low: Int, high: Int): Int {
val pivot = arr[high]
var i = low - 1
for (j in low until high) {
if (arr[j] < pivot) {
i++
val temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}
val temp = arr[i + 1]
arr[i + 1] = arr[high]
arr[high] = temp
return i + 1
}
fun printArray(arr: IntArray) {
for (i in arr.indices) {
print("${arr[i]} ")
}
println()
}
다음은 이진 탐색 알고리즘을 요청해보았는데요
@Test
fun binarySearchTest() {
val arr = intArrayOf(2, 3, 4, 10, 40)
val n = arr.size
val x = 10
val result = binarySearch(arr, 0, n - 1, x)
if (result == -1) {
println("Element not present")
} else {
println("Element found at index $result")
}
}
fun binarySearch(arr: IntArray, l: Int, r: Int, x: Int): Int {
if (r >= l) {
val mid = l + (r - l) / 2
if (arr[mid] == x) {
return mid
}
return if (arr[mid] > x) {
binarySearch(arr, l, mid - 1, x)
} else {
binarySearch(arr, mid + 1, r, x)
}
}
return -1
}
작성된 테스트는 둘다 성공이었습니다.
마지막으로 블록체인 특정 지갑에 대한 잔액 조회 구현을 해볼까 합니다.
메인넷 주소와 wallet address 만 수정해서 간단히 결과는(wei 단위와 eth 단위 출력으로 하였습니다.)
예전 디버깅용으로 balanceOf nodejs로 만들어논 것과 결과는 동일했습니다. (1만개)
결론
개발시 채팅 및 Hint (실재 코딩중에 다양한 힌트가 노출되었고 대부분 문맥에 맞는 내용으로 노출되었습니다.) 맥 기준 "option" + "[" 키를 이용해 다른 선택지를 확인 및 선택도 가능했습니다.
완벽하다라고 볼순 없지만 도움이 된다 라고 저는 개인적으로 생각되어 지는데 개인 프로젝트를 진행하면서 좀더 경험치를 높여 실무에서도 과연 가능할까 라든지등 추후에 포스팅 해보도록 하겠습니다.