2024.12.06
웹 디자인을 전공한 친구와 사이드 프로젝트를 같이 하기로 한 약속이 생각나 전부터 고민했던 주제들을 만들어보려고 하였다.
시작하게 된 계기는 약간의 불만, 그리고 순전히 호기심, 사용자에게 주고 싶은 재미 이 3가지를 바탕으로 생각하였다.
1. 약간의 불만
몇년 전부터 가지고 있던 불만이었다. 웹 사이트에서 로또 복권 번호를 추천해주고 그걸 사람들에게 구독시켜 문자나 카톡으로 전송해 돈으로 지불 받는 서비스가 종종 보였으며, 그걸 자신들이 얼마나 맞추었는지 광고하는 것을 보았다.
솔직히 로또 복권은 독립시행이기 때문에, 한 번의 시행 시 대략 810만 분의 1 (약 0.000012%) 로 솔직히 이걸 돈 받고 판다는게 어이가 없을 정도로 불만이었다.
그렇기 때문에 그런 웹 사이트들에게 불만을 가지고 내가 무료로 만들어서 제공해야겠다 라는 생각을 가지게 되었다.
또한 6개의 무작위 번호를 추출하는 것이 어려운 것도 아니다.
내가 처음 코딩을 접한 언어인 R에서는 단 1줄, 그것도 많은 분량을 차지하지도 않는 단 한 줄로 6개의 번호를 추출할 수 있다.
sample(1:45, 6, replace=F)
위는 R에서 기본으로 제공하는 sample 함수로 무작위로 번호를 추출할 수 있도록 해주는 내장함수이다.
1:45 이는 1부터 45까지 번호를 뜻하며, 6은 몇 개의 번호를 추출할 것인지를 정해주는 것이다.
replace 는 복원 추출에 대한 여부를 뜻하며 한번 뽑은 번호를 다시 집어넣어서 뽑을 것인지 아니면 집어넣지 않고 뽑을 것인지를 말해주는 것으로 일종의 옵션이다 FALSE (R에서는 줄여서 F 하나로 줄일 수 있음) 옵션으로 비복원 추출로 뽑았다 (중복되지 않는 값을 추출하기 위함)
이러니 이런걸 돈 주고 판다는게 어이가 없을 뿐이다. 이용고객이 800명이고 100개씩 보내주면 8만개의 랜덤 번호를 추출해서 보낼 수 있고 모두 번호가 다르다면 맞을 확률은 10%가 되니 소가 뒷걸음 치다 쥐잡는 꼴로 맞출 수 있을 것이다.
즉 운영사들도 결국 운으로 저걸 운영하는 것이다. 8000명이면 100개 모두 번호가 다르다는 가정하면 거의 1주일에 한번 꼴로 자신들은 1등의 번호를 추출해냈다 라는 식으로 우길 수 있을 것이다.
2. 순전히 호기심
그럼에도 일주일에 로또 복권 당첨자 수는 엄청 많기도, 그것도 말도 안되는 확률로 수동인 경우가 왕왕 있어왔다.
또한 로또 복권 추첨 방송은 라이브가 아닌 녹화 방송으로 진행되기 때문에 많은 사람들이 로또 복권에 대해서 불만을 가져왔다.
그러면 우리가 한 번 번호를 유추할 수 있도록 사람들에게 제공해주면 어떨까? 라는 생각을 가지게 되었다.
말도 안되는 거지만 여기에 확률을 넣어보기로 하였다.
1. 모든 번호들은 추출된 횟수가 다를 것이기 때문에, 그 빈도 수를 확률로 조정하면 가중치를 줄 수 있을 것이라고 생각하였다.
마침 sample함수는 prob로 값이 출력될 수 있는 확률에 대해서 조정치를 줄 수 있는 함수를 제공할 수 있다.
2. 데이터의 확보가 쉬웠다.
로또 복권에 대해서 데이터를 얻기가 쉬웠다. 이를 이용하면 굳이 웹 페이지로 만들지 않더라도, 사람들이 엑셀로도 사용할 수 있을 것이다.

동행복권에서 회차의 범위를 지정해서 엑셀로 다운로드 받을 수 있게 제공하고 있기 때문에 1회차부터 1149회차까지 모든 데이터를 받을 수 있었다. 그렇기 때문에 로또 복권에 대한 데이터를 받는 거 자체는 어렵지 않았다.
무엇보다 내가 재미있어 보였다.
취업도 되지 않는 와중 친구와 사이드 프로젝트를 기획하면서 이렇게 재밌게 이야기를 해본게 얼마만인지 모르겠다.
확실히 프로젝트는 재미있는 것을 하는게 좋다고 생각하였다.
3. 사용자에게 주고 싶은 재미
그런데 나만 재미있으면, 프로젝트에는 의미가 없을 것이다.
그렇기 때문에 친구와 사이드 프로젝트로 웹 페이지로 제공하여 만들기로 하였다.
R로 백엔드 코드를 작성할 수 도 있지만, 그래도 요즘 가장 많이 사용된다고 생각되는 Python을 채택하였다.
Python을 백엔드 코드로 채택한 이유에는 다음과 같은 이유가 있다.
1. R에 비해 대중성을 가지고 있어 R로 작성한 코드를 제공해서 보여주면 R을 사용하는 유저가 아니면 알아보기 어려울 수 있을 것이다 (물론 주석을 전부 달아 놓을 것이지만)
2. 개발의 효율성을 생각하면, 자바나 다른 언어에 비해 빠르게 개발을 진행할 수 있을 것이다. 사이드 프로젝트로 진행하는 것이기 때문에 많은 시간을 사이드 프로젝트에 사용하지 않을 것이고 나와 친구 둘 다 취준생이기 때문에 취업 준비를 하며 다양한 라이브러리 다양한 툴을 경험하는 목적이 컸다. (배포 방식이라던지 개발 모델의 선택이라던지 등등)
그렇기 때문에 개발언어는 어려운 언어보다 쉬운 언어로 개발해야 면접을 다녀오던, 이력서를 수정하던, 혹은 취업 준비를 하며 생활비를 잠시 버는 시간에 효율적인 투자를 할 수 있을 것이다.
3. 확장성을 고려하면 파이썬으로 개발 하였을 때 추후 웹 페이지가 혹시나 주목받았을 경우 (약간의 행복회로) 추후 기능을 추가하거나 했을 때 파이썬이 좀 더 편할 것이고, 다른 이에게 만약 웹 페이지를 넘기게 된다면, 파이썬이 가독성이 있어 좀 더 알아보기 쉬울 것이다.
'사이드프로젝트' 카테고리의 다른 글
| [lottery] 추첨치 추첨 애니메이션 추가 및 git 연동 (0) | 2024.12.17 |
|---|---|
| [lottery] 1차 코드 리뷰 및 개발 환경 조정 (0) | 2024.12.13 |
| [lottery] 애니메이션 개발 (0) | 2024.12.13 |
| [lottery] 사이드 프로젝트 2차 회의 (0) | 2024.12.10 |
| [lottery] 사이드 프로젝트 1차 회의 (0) | 2024.12.10 |