변수명..변수명이 떠오르지 않아! - "너의 변수명은." 챗봇 개발 일지

변수명..변수명이 떠오르지 않아! - "너의 변수명은." 챗봇 개발 일지

시작하며

안녕하세요 저희는 Android 개발팀의 세리, 머니클라이언트파티 Android 개발자 해로, 홈앱파티 Android 개발자 브레드입니다. 저희는 지난 2022년 하반기 ㅋㅍㄱㅍ(카카오페이 개발자 페스티벌) 카페톤에 참가하여 슬랙에서 사용되는 챗봇을 개발하였는데요. 카페톤에 참가하게 된 계기부터 무엇을 만들었는지, 그리고 영예의 1등 수상까지의 천방지축 여정을 공유하고자 합니다. 더불어 카카오페이에서는 슬랙을 어떻게 십분 활용하고 있는지도 주목 포인트!

참가 계기

2022년의 어느날 Android 개발팀 채널에 이런 슬랙이 올라오고 말았습니다. (전설의 서막)

전설의 서막
전설의 서막

카페톤 공지
카페톤 공지

이 공지를 보고 도저히 참가를 참지 못한 개발자 3인방은 페이딱깔센(페이롭게 딱 깔끔하게 센스있게) 이라는 팀명으로 카페톤에 참여 하게 됩니다. 영광의 1등을 노리고자 했죠! 상금 100만원이 목표였던건 절대 아니구요. 그리하여 모인 셋은 머리를 모아 아이디어 기획을 시작했습니다.

기획 배경

많은 크루들에게 도움되는 무언가 만들어보자

카카오페이 슬랙 도입에 맞춰 참신한 아이디어를 기반으로 업무 생산성을 높일 수 있는 슬랙봇 만들기’ 라는 주제로 개최된 ‘카페톤’의 명색에 맞게, 많은 크루들에게 영향력을 끼칠 수 있는 챗봇을 만들어보고 싶었습니다. 따라서 저희 팀원들은 머리를 한 데 모아 크루들의 생산성에 조금이라도 보탤 수 있는 아이디어를 떠올려보았습니다.

간편한 미팅 관리를 도와주는 봇은 어떨까?

카카오페이 내에선 하루에 수도 없이 많은 회의가 일어나곤 합니다. 카카오페이는 현재 사무실 출근과 재택근무를 혼합한 ‘하이브리드형 근무제’를 실시 중입니다. 주로 Google Meet을 사용하여 회의를 하곤 하는데요! 따라서 저희가 가장 먼저 떠올린 아이디어는 Google Meet 회의를 쉽게 생성하고, 관리할 수 있는 챗봇이었습니다.

실제로 해당 아이디어로 확정을 지은 채 상세 기능들을 기획하고 기술검토까지 하였으나 상황이 여의치 않았습니다. 리서치한 기술을 토대로 개발을 하려고 보니 하필이면 저를 포함한 저희 팀원들이 업무량이 많았던 시기였습니다. 도무지 챗봇을 개발할 엄두가 안 났었습니다. 그렇다고 카페톤을 참가하지 않는 건 또 더욱이 아쉬웠고요. 따라서 상세 기능까지 기획했던 회의봇을 개발하지 못한 데에 아쉬움을 남긴 채, 방향성을 조금 틀어보기로 했습니다.

적은 리소스대비 최대의 영향력을 펼쳐보자!

업무량이 많았던 만큼, 최대한 기술적인 난이도를 낮추고자 하였습니다. 카페톤 공지에 아래와 같이 적혀있는 것을 보고 새로운 전략을 세워보았습니다.

‘카카오페이 크루 대상 투표 결과 및 기술 리더 심사로 우수 슬랙봇 선정 (전체 크루(60%), 기술 리더(40%))’

저희는 적은 리소스를 투입하여, 리소스 대비 최대의 영향력을 미칠 수 있는 챗봇 아이디어를 떠올려보게 되었습니다. 해당 전략에 부합하여 크루 중 많은 비율을 차지하는 직군, 즉 특정 직군의 공감대를 파고들어보고자 했습니다. 평가 기준에서 기술 리더보다는 카카오페이 전체 크루 투표 비율이 높았기 때문입니다. 또한 얼마나 신박한 아이디어인지도 빼놓을 수 없는 중요한 요소로 다가왔고요!

그렇게 생각해 보니, 카카오페이라는 회사는 IT 회사라서 개발 직군의 비율이 꽤 높은 회사였습니다. 애당초 저희도 개발자이기 때문에 개발 직군의 입장에서 아이디어를 생각하게 되었습니다. 개발 직군 입장에서 아이디어를 떠올려보니 저희 팀원들 모두가 ‘이거다!’ 했던, 단 번에 떠오른 아이디어가 있었습니다.

이거다, “변수명 지어주는 챗봇”

개발자들은 수많은 변수를 생성하고 활용함에 있어, 매번 새로운 변수 이름을 짓는 행위 자체가 고통의 연속입니다. 괜히 실제 개발 시간보다 변수 이름 생각하는 시간이 더 많다는 밈이 등장한게 아니죠!

따라서 개발자라면, 누구나 언젠가 ‘아 누가 변수명 좀 대신 지어줬으면 좋겠다’ 하는 순간이 있기 마련인데요. 저희는 그 니즈를 파고들어 변수명을 추천해주는 봇을 개발하기로 굳게 결심하였습니다. 그리하여 ‘너의 변수명은.’ 챗봇이 탄생하게 되었죠.

“너의변수명은.” 챗봇의 주요 기능!

저희 챗봇은 간단하게 3가지 기능으로 동작합니다. 슬랙 채널에서 명령어를 호출하여 간편하게 사용할 수 있는데요.

  • 변수명 추천 기능
  • 추천 결과 유저 피드백 기능
  • 낱말 뜻 풀이 기능

그럼, 하나씩 해당 기능들을 소개해드리겠습니다!

변수명 추천 기능

.변수명’ 명령어 한 마디를 통해 변수명 고민을 해결해줍니다. 해당 변수가 하는 역할을 한글로 적어주면, 챗봇이 알잘딱으로 멋진 변수명을 추천해줍니다!

여기서 끝이 아닙니다. 그 어떤 고급 어휘에도 ‘너의 변수명은.’ 챗봇은 무너지지 않습니다!

유저 피드백 기능

변수명 추천 결과 아래에 ‘좋아요’ 버튼과 ‘별로예요’ 버튼이 제공됩니다. 사용자들은 해당 버튼을 통해 추천 결과를 피드백할 수 있는데요, 좋아요와 별로예요 카운트가 데이터베이스에 저장됩니다. 향후 해당 데이터를 기반으로 질 좋은 품질의 추천 시스템을 제공하기 위한 기틀을 마련하기 위한 기능입니다!

뜻풀이(낱말 사전) 확인 기능

저희는 변수명 추천이라는 주요 기능을 두고, 이를 더 활용할 수 있는 방안을 떠올려보았습니다. 개발자 특성상 영어를 많이 사용하게 되고, 변수명도 결국 영어이다 보니 낱말 뜻풀이 기능이 있으면 좋을 것 같아 해당 기능을 추가하게 되었습니다. 유저 피드백 버튼 오른쪽 부분에 위치해있는 ‘뜻풀이’ 버튼을 클릭하면 다음과 같이 Papago 서비스로 이동하게 됩니다.

파파고에서 변수명을 이루고 있는 단어들에 대한 뜻풀이를 제공해 주고, 개발자들은 혼란을 틈타(?) 영어 공부를 할 수 있습니다! 개발 직군으로 근무하다 보면 생소한 도메인을 개발해야 할 때가 있는데, 그럴 때 더욱이 ‘뜻풀이’ 기능이 빛을 발하는 것 같습니다. 변수명 추천도 받고, 영어 실력도 늘고 그야말로 두 마리 토끼를 잡는 챗봇!

“너의변수명은 폼 미쳤다”

그럼 이어서 해당 챗봇을 어떻게 개발했는지, 어떤 이슈들이 있었는지에 대해 이야기해 보겠습니다.

개발 과정

쉽지 않은 여정

기획을 겨우 마치고 막상 개발을 시작하려고 보니, 크다면 큰 난관에 봉착했습니다. 챗봇 개발 플랫폼은 자바스크립트 언어 기반인데, 팀원 모두 코틀린 언어를 사용하는 안드로이드 개발자라는 것. 그리고 모두 소속팀에서 한창 신규 기능 개발로 분주해서 챗봇 개발에 투자할 수 있는 시간이 적다는 점. 그리고 무엇보다 가장 큰 문제는 제출 마감 기한이었습니다. 회사 업무를 소화하다 보니, 챗봇 개발 시작 시점으로부터 마감 기한이 3일 정도 남았던 겁니다.

익숙하지 않은 언어와 개발 환경, 그리고 촉박한 일정 속에서 학습과 개발을 병행해야 하는 것이 저희에게 굉장히 도전적인 과제로 다가왔습니다. 발등에 불이 떨어진 저희 팀은 끝까지 참가를 포기하지 않고 어떻게든 뭐라도 만들어 내자는 목표로 전략을 세우곤 했죠.

“기능별로 분담하여 개발하고, 온전히 각자가 맡은 핵심 기능에 집중하자! 부가기능은 핵심 기능 개발 이후 남은 일정 안에 개발하자. 만약 남은 일정이 없더라도 시원하게 포기하자!”

변수명 추천봇은 아래 과정을 거쳐 주요한 변수명 추천 기능을 제공하기로 했습니다.

  1. 파파고 번역 API 를 활용하여 사용자의 Input 을 영어로 번역
  2. 번역 결과를 각 언어에서 사용하는 형태(Camel Case, Snake Case 등)로 변환
  3. 명령어를 호출한 채널에 메시지 형태로 결과 전송

따라서 API 개발, 번역 결과 정제, 메시지 형태 및 UI 개발을 세 명이서 분담하여 개발하였습니다.

끝까지 갔기 때문이에요

우선 도무지 업무 시간을 할애하여 챗봇을 개발할 수 없었기 때문에, 어쩔 수 없이 업무가 모두 끝난 밤에 잠시 모여 작업하곤 했습니다. 각자 맡은 분야에 대한 개발과 학습을 병행하며 차근차근 진행해나갔고, 점차 개발 환경에 익숙해지면서 진행 속도가 가속되기 시작했습니다.

그 결과 핵심 기능은 이틀 만에 완성할 수 있었고, 제출 마지막 날에 부가기능으로 좋아요 별로예요 등 유저 피드백을 받는 기능과, 낱말 뜻풀이 기능도 추가할 수 있었습니다. 결국 제출 마감 기한에 거의 딱 맞춰 제출하였는데, 이렇게 일정에 쫓기면서도 포기하지 않았던 저희 스스로가 대견하고, 뿌듯하기도 했습니다. 그리고 이 글을 작성하고 있는 시점에서 다시 돌이켜봐도, 더욱이 포기하지 않길 잘했다는 생각이 듭니다.

마치며

⬆️ 1등 수상 소감과 개발 과정을 발표하는 세리의 모습
⬆️ 1등 수상 소감과 개발 과정을 발표하는 세리의 모습

개발한 챗봇을 출품하고 보니, 다른 팀들의 출품작들이 모두 뛰어나서 결과는 크게 기대하지 않았습니다. 다들 워낙 신박하고, 분명 많은 크루들이 유용하게 사용할 수 있는 챗봇들이어서 정말 쟁쟁했습니다. 그런데 정말 감사하게도 저희 팀이 여러 크루들의 공감을 산 덕인지, 기대했던 것보다 훨씬 좋은 결과를 얻을 수 있었는데요. 다시 돌이켜보아도 상상도 못한 결과에 온몸이 짜릿했던 순간이었던 것 같습니다!

실제로 아래와 같이 많은 분들이 저희가 만든 챗봇을 다방면에서 활용하고 있는 것 같아 뿌듯했습니다! 아무래도 크루 투표 비중이 큰 심사였다보니, 조금 신박하면서도 많은 비율을 차지하는 직군의 공감대를 사로잡는 아이디어를 기획해보자는 저희의 전략이 조금이라도 통했던 것 같아 기뻤습니다.

주변 크루 반응
주변 크루 반응

카카오페이에서는 기술 직군들을 위한 다양한 행사가 열리곤 하는데요. 이번에는 크루들의 업무 생산성을 높일 수 있는 슬랙 챗봇을 개발하는 해커톤이 개최되어 많은 크루들이 흥미와 관심을 가졌던 것 같습니다! 저희 팀도 마찬가지였는데요. 자칫 지루해질 수 있었던 일상 속에 이렇게 재밌는 행사에 참여할 수 있어 즐거웠고, 다수 크루들의 공감대를 공략하여 누군가에게 조금이라도 도움되는 챗봇을 개발할 수 있어 뿌듯한 경험이었습니다. 카카오페이 개발자 페스티벌 진행을 위해 힘써주신 모든 분들께 감사의 말씀 전하며, 앞으로도 사내에 이런 재밌는 행사가 많이 개최되길 응원합니다. 🙏

참고 자료

변수명 고민 이미지

haero.ro
haero.ro

카카오페이의 송금, 머니 서비스를 개발하는 머니클라이언트파티 Android 개발자 해로라고 합니다!

sery.270
sery.270

카카오페이 Android 앱 서비스를 개발하는 Android 개발팀의 세리입니다 :)

bread.sik
bread.sik

카카오페이의 얼굴! 페이홈을 개발하는 홈앱파티 Android 개발자 브레드입니다!