본문 바로가기

소프트웨어

인공지능을 활용한 안드로이드 앱 개발 (with ChatGPT)

반응형

1. 시작계기

 
아주 오래전부터 스스로 만든 안드로이드 앱이나 게임을 출시해보고 싶은 생각을 갖고 있었습니다.
근데 뭐 이미 유용한 앱들은 차고 넘치기 때문에 누군가 만들어줬으면 좋겠지만 결코 아무도 만들지 않을 저에게만 필요한 그런 앱을 내손으로 만들어 보면 어떨까 하는 생각이 예전부터 있었고 그렇게 만들고 싶은 앱도 생각해 놨었습니다.

 

평소에 FlashCardsDeluxe라는 단어 암기장 앱을 사용해서 영어 단어를 외우고 있는데요.
카드의 앞면에는 영어단어를 적어두고 뒷면에는 그 단어의 뜻을 적어둔뒤, 앞면의 단어를 보고 뒷면을 확인하면서 단어를 외울수 있게 도와주는 흔한 플래시카드 앱입니다.

 

이 FlashCardsDeluxe 앱은 HTML 태그를 사용해서 카드 앞뒷면을 꾸미기가 가능합니다.
저는 뭔가를 정리할 때 저만의 방식으로 정리해야 직성이 풀리는 병적인 성향이 있습니다.
단어장 정리의 경우 그냥 단어 뜻만 덩그러니 작성하기보단 단어 뜻을 요약하여 정리한 것과 같이 보여져야 마음이 편합니다.
 
아래는 그 예시로 rational 이라는 단어를 정리한 결과입니다.
 

왼쪽은 카드 앞면, 오른쪽은 카드 뒷면.


간단한 듯 보이는 구조이지만 생각보다 복잡한 기준이 적용된 결과입니다.


간단하게 정리하면 아래와 같습니다.
1. 제목은 핑크색으로 하되, 앞에는 단어의 활용도에 따라 *을 1개에서 3개로 표현한다.
2. 단어의 음절 단위를 중점을 이용하여 표시한다.
3. 품사는 하이픈을 앞에 붙여 표시하고, 연두색 색상으로 나타낸다.
4. 줄번호는 빨간색 숫자로 표시하고 유사한 뜻은 한줄안에서 나열한다.
5. 단어의 뜻은 자주 사용되는 3~4가지만 요약하여 정리한다.
6. 단어의 뜻 중에서 대표적으로 사용되는 뜻에는 노란색으로 강조표시를 한다. 
(이 외에도 정리에 일관성을 주기 위해 여러가지 세부 규칙이 있습니다.)
 
기본 구조를 위와 같이 한 다음에는 단어마다 태그를 사용하여 정리해서 작성해 왔으나 그 작업은 무척 괴로운 작업입니다.
왜냐하면 위 스크린샷과 같이 표시하기 위해서는 아래와 같이 작성해야 되거든요.
 

노가다...

 

2. 좌절과 포기

 
다시 말씀드리지만 규칙에 맞게 정리하는 것은 상당한 고통스러운 과정이었습니다.
기본적으로는 이지윅에디터를 이용해서 작성하곤 있지만 데스크탑이 있어야만 작업이 가능한데다가  FlashCardsDeluxe는 데스크탑 전용 프로그램이 없기 때문에 데스크탑에서 작업한 결과물을 다시 스마트폰으로 옮겨담는 과정도 굉장히 번거롭습니다.
스마트폰만 사용 가능한 야외에서는 급하게 정리하고픈 단어가 있어도 정리할 수 없었습니다.
 
그래서 제가 정한 규칙대로 HTML코드를 생성하는 것을 앱으로 한번 만들어볼까..하는 생각을 했던겁니다.
네이버나 다음사이트 등 포털사이트의 사전서비스에서 단어를 표시하는 규칙을 찾아내서 웹크롤링/파싱 이란 것들을 공부하면 어찌어찌 할 수 있는 것 같기도??이런 생각이었습니다.
 
그런데 공부를 하면 할수록 웹크롤링 같은건 초보자인 제게 넘사벽 영역인걸 알게 됩니다..
그리고 가만 생각해보니 단순히 웹에 있는 ‘정보를 가져 와서 표현’을 하는게 아니라 ‘정보를 요약하여 HTML코드로 생성’ 해야 하는것이었습니다.
즉 웹크롤링으로 웹사전에서 정보들을 가져온다고 해도 그 정보들을 제가 원하는 형태로 요약 할 수 있는 알고리즘을 만들어야 하는 문제가 있었고, 또한 그것을 HTML코드로 변환하는것도 문제였던 것입니다.
가능한 일인지만 알 수 있다면 얼마든지 시간을 투자할 수는 있습니다.

문제는 시간을 아무리 투자한다고해도 초보자인 제가 과연 그런 걸 구현 수나 있는것인지 감조차 들지 않아 좌절하고 있던 그때..

 

3. 희망과 재도전

 
세상에는 갑자기 ChatGPT라는 인공지능이 등장하더니 비슷한 인공지능들이 연이어 등장하더군요.
처음에는 인공지능과 대화를 해보거나, 이것저것 재미있는 것들을 시켜보면서 단순히 가지고 노는 장난감쯤으로 생각했습니다.
그러다가 ChatGPT에서 API를 제공한다는 소식을 듣게 됩니다.
API라는것은 데이터를 지닌곳에서 본인들의 데이터를 활용하라고 규칙을 정해준 것입니다.
 
생각해보니 이것은 아주 굉장한 소식이었습니다.

일반적인 API에서는 데이터베이스의 '지식'을 활용하는 형태로 이루어 지지만 ChatGPT API에서는 컴퓨터의 '지능'을 활용하는 형태로 이루어 집니다.
그러니까 ChatGPT에서는 단순히 다른곳에서 제공하는 API처럼 데이터베이스의 자료를 받아오고 정리하는게 아니고 스스로 생각을 해서 시킨것에 대한 결과를 돌려준다는 것입니다.
이것을 앱 개발에 사용한다면 앱의 핵심이라고 할 수 있는 알고리즘 구현 과정을 인공지능에게 떠넘길 수 있게 된다는 겁니다.
제가 만들고 싶었던 앱에 대입해 본다면 단어를 영어사전 웹사이트에서 어렵게 크롤링/파싱하고 그것을 요약하고 HTML로 만드는 알고리즘을 구현할게 아니라, 단어를 어떻게 정리할지에 대한 규칙만 ChatGPT에게 전달 하면 되는것입니다.

 

4. 완료

 
그렇게 ChatGPT를 사용하기로 결정하니 앱만들기는 수월했습니다.
가장 중요한 연산과정은 ChatGPT가 해주고 앱에서는 단순히 요청하고, 받아온 내용을 출력하는게 전부였으니까요.
 
최종 목표로 한 영어단어 코드생성기를 도전하기 전에 ChatGPT API 사용법을 공부하기 위해 간단한 앱을 먼저 만들고 최종적으로 영어단어 코드생성기를 만들다보니 앱이 2개가 되었네요.

⒧ 아래는 공부하는 과정에서 부산물로 만들어진 앱으로 인공지능 소설 생성기입니다.

 

https://youtu.be/vTQE139cvxQ

 
간단한 정보를 입력한뒤 소설 작성하기 버튼을 누르면 인공지능이 지맘대로 소설을 써줍니다.
소설의 설정에 약간 개입하는게 가능하여..답정너 소설을 만들어도 됩니다.(아래와 같이 말이죠..)
 

뒷 이야기는 어마어마해서 생략...

 
 

⑵ 아래는 인공지능 영어단어 HTML코드 생성기입니다.

https://youtu.be/AqfWZnuLNzg

 
안드로이드 앱개발을 시작하게 된 계기가 된 앱입니다.
인공지능에 의해 얻어진 코드를 하단의 미리보기를 통해 즉시 확인도 가능하고, 미리보기 화면을 보면서 코드편집창에서 직접 수정하는것도 가능합니다.
주요 태그들을 단축키로 만들어 놔서 코드를 수정하기 편리합니다.
 

왼쪽과 같이 입력한뒤 '인공지능 코드작성' 버튼을 누르면 오른쪽과 같이 코드를 만들어 줍니다.

 

위 2가지 어플 모두 플러터와 DART언어를 사용해서 개발했습니다.

플러터에서 화면등을 꾸미고 안에서 사용하는 여러가지 버튼들과 대강의 기능을 만들어 놓은뒤, 결과를 생성하는 버튼을 누를경우 미리 설정해둔 스크립트 명령을 OpenAI로 보내고 그 결과를 받아오도록 만들어 두었습니다.

 

예를 들어 위의 소설생성기의 경우 소설생성 버튼을 누르면 입력창에 입력한 '주인공이름'이나 '장르' 같은 것을 변수로 받아서 [이름이 '주인공이름'인 '장르'장르인 짧은 소설을 하나 만들어줘'] 라는 식의 스크립트를 OpenAI에 전달하고 그 결과를 받아와서 다시 화면에 출력하는 식입니다.

단어생성기의 경우엔 내용 수정기능이라던지 화면 하단에 미리보기 출력 기능 같은 좀더 복잡한 기능을 많이 사용했지만기본적으로는 같은 방식으로 제작했습니다.

 

5. 구글플레이 링크

 
 1) 인공지능 소설 작성기
https://play.google.com/store/apps/details?id=com.heony.heonynovel 

 

HeonyNovel - 인공지능 소설 생성기 - Google Play 앱

인공지능을 이용하여 여러 장르의 소설을 생성해 주는 어플리케이션입니다.

play.google.com

 
 2) 영어단어 HTML 코드 작성기
https://play.google.com/store/apps/details?id=com.heony.EngKorHtml 

 

EngKorHtml - 인공지능 단어장 코드 생성기 - Google Play 앱

이 앱은 단어뜻을 HTML 코드로 표시하는게 가능한 단어장 앱에서 단어의 뜻을 이쁘게 정리하는 것을 쉽게 하기 위한 앱입니다.

play.google.com

 
* 설치전 유의사항이 있습니다.
영어단어 코드 작성기는 제가 쓰기 위해 만든 앱으로.. 다른 사람들에겐 완전 무쓸모 앱일겁니다..;;
그나마 인공지능 소설 작성기는 재미로 해보실만하지 않나 싶긴한데..
사실 이 앱들은..그냥 다운로드 받아서는 사용할 수 없습니다..;;
앱 자체에 하드코딩으로 api키를 넣는것도 권장할만한 일도 아니기 때문에 설정화면에서 api키를 입력하도록 하였습니다.
즉 openai에서 api키를 발급받고 앱설정화면에서 입력한뒤에 정상적으로 사용이 가능합니다.

openai에서 api키를 발급받으려면 아래의 주소에서 가능합니다.
https://platform.openai.com/docs/overview

 
이상입니다.
긴 글 읽어주셔서 감사합니다.

 
댓글