본문 바로가기
생각정리

ChatGPT를 사용해 iOS 개발해본 후기

by iOS_woo 2023. 2. 11.

결국 월 $20 요금제 구매!

Chat GPT가 요즘 핫하다. 
어떤 제품이길래 이렇게 이슈가 되는지 너무나 궁금했다. 

처음 사용은 무료였기 때문에 과감하게 이것저것 실험해보았다. 

결론부터 말하면 너무 좋아서 월 $20 요금제를 구매했다. 😍

1.  훌륭한 선배 개발자를 옆에 모시고 개발하는 느낌이다. 

 

 혼자 개발 공부하면서 내가 짠 코드가 좋은 코드인지, 더 좋은 방법은 없는지 궁금한 경우가 많았다. 

누군가에게 코드 리뷰를 받고 싶지만.. 그 누군가를 찾는 것도 쉽지 않은 것이 현실이다. 


GPT에게 내가 짠 코드를 보여주고 "위의 코드를 개선해줘" 라고 하면 바로 개선해준다. 
한발 더 나아가서 개선사항을 글로 설명도 해준다. 

 

말 그대로 프로 개발자에게 과외를 받는 기분.. 


내가 쓴 코드가 더 효율적으로 변하는 모습을 보는 것만으로도 의미있는 공부가 된다. 

만약 GPT가 설명해준 개념이 어려웠다면 "일반인도 이해할 수 있게 풀어서 설명해줘" 라고 요청하면 된다. 
정말로 쉽게 풀어서 설명을 해준다. 😀

2. 개발의 피로감이 줄어들고 생산성이 향상된다. 

 

 종이에 적어서 계산하던 시대에 계산기가 처음 등장했을 때 이런 기분이었을까?

개발을 하다보면 전에 만들어봤던 기능인데 막상 기억이 가물가물해서 검색을 해야하는 때가 많다. 

"텍스트에 테두리를 입히는 걸 어떻게 하는게 효율적이더라..?" 
이런 질문들이 쌓이고 구글링하며 여러 블로그를 해집고 다니면 피로감이 누적되기 마련이다. 🥲


그런데 GPT와 함께 개발을 하니 이런 피곤한 구글링으로부터 벗어날 수 있었다. 
마치 이렇게..

물론 내가 원하던 것은 아니었기 때문에  HStack으로 따로 작업했지만,
GPT가 제안해준 테두리를 그리는 방법을 활용하니 시간이 무척 단축되었다. 

에러를 처리하는 것도 깔끔하다. 
평소 같았으면 이걸 어떻게 처리하더라.. 하면서 구글링을 했을텐데 GPT는 즉시 해결해주었다. 🥰

이러니.. GPT에 빠지지 않을 수가 있을까?! 

3. 단, 질문을 어떻게 하는지가 중요하다. 

 SwiftSoup를 사용해 웹크롤링하는 코드가 있다. 

지금은 GPT를 사용해 깔끔하게 리팩토링을 하여 매우 보기 좋은 모습인데, 
여기까지 오는데 꽤나 많은 수고가 있었다. 

다음은 리팩토링한 크롤링 코드.. 

class InvestingScraper {
    
    func scrapeInvesting(from data:Data) -> Future<[GlobalModel], Never> {
        Future { promise in
            let html = String(data: data, encoding: .utf8) ?? ""
            do {
                let elements = try SwiftSoup.parse(html)
                let documents = try elements.getElementById("quotesBoxChartWrp")?
                    .select("table > tbody > tr")
                    .compactMap { document -> GlobalModel in
                        let name = try document.select("td:nth-child(2) > a").text()
                        let price = try document.select("td:nth-child(3)").text()
                        let priceChange = try document.select("td:nth-child(4)").text()
                        let priceChangePercentage = try document.select("td:nth-child(5)").text()
                        
                        return GlobalModel(name: name, price: price, priceChange: priceChange, priceChangePercentage: priceChangePercentage)
                }
                promise(.success(documents ?? []))
            } catch let error {
                debugPrint(error)
                promise(.success([]))
            }
        }
    }
}

GPT를 사용해서 이것저것 해보고 느낀 점 중에 하나는 생각보다 최선의 결과만을 내놓지는 못한다는 것이다. 


예를 들어 위의 코드를 "개선해줘"라고 GPT에게 보여줬을 때, 처음에는 썩 만족할만한 결과를 내놓지 못했다. 


생각보다 코드를 이상하게 짤 때도 있었고, css selector를 이상하게 정리한 경우도 있었다. 
3~4개의 다른 버전을 요구했을 때 겨우겨우 좋은 버전을 건지는 정도였다. 

그러다가 을 하나 발견했는데 질문이 매우 중요하다는 것이다. 


여러 버전을 검토하면서 위의 코드는 compactMap을 사용해 정리하는 것이 매우 효율적인 방법이라는 것을 깨달았다. 
이후에는 단순히 "개선해줘"가 아니라 구체적으로 요청하니 결과가 더욱 좋아졌다. 

"위의 코드를 compactMap을 사용해서 개선해주고, 복잡한 css selector를 정리해줘"


이렇게 질문하니 위의 코드와 같이 좋은 퀄리티의 코드를 일관성있게 얻을 수 있었다. 

이렇듯 질문이 무척 중요하고, 사용자의 수준에 따라서 천차만별로 달라질 수 있는 도구로 보인다. 


 4. 그렇게 결국.. 월 $20를 결제했다.. ㅎ

 
프리미엄 서비스가 오픈되자마자 결제했다. 😍


그 이유는.. 블록와이드에 새로운 기능을 추가할 때 GPT를 적극 활용했더니 시간이 거의 2~3배 단축되었기 때문이다..!
피로감도 매우 줄어서 스트레스도 줄어들고 삶이 무척 쾌적해졌다. 


월 $20는 전혀 아깝지 않을 것 같고, 앞으로도 나의 개발자 선생님으로 훌륭히 역할을 수행할 것으로 기대한다.


싸랑해요 GPT~!🥰

댓글