Page ▾
[Electron 데스크톱 앱 개발] #3: 첫 번째 Electron 앱 만들기 (랜덤 룰렛)

✨ 목표

이번 글에서는 앞에서 준비한 Electron 개발환경을 이용해 간단한 랜덤 룰렛 프로그램을 만들어보겠습니다.

단순히 Hello Electron!을 출력하는 것을 넘어, 직접 화면을 구성하고 버튼을 클릭하면 참가자 중 한 명을 랜덤으로 선택하는 프로그램을 만들어봅니다.

이번에는 다음과 같은 기능을 구현해보겠습니다.

  • 랜덤 룰렛 화면 구성
  • 참가자 추가 및 삭제
  • 룰렛 실행
  • 랜덤 당첨자 표시
  • 간단한 설정창 구성

 

처음부터 복잡한 기능을 만들기보다는 Electron에서 HTML, CSS, JavaScript로 데스크톱 앱을 만드는 과정​을 직접 경험해보는 것을 목표로 하겠습니다.


✔️ 1. 프로젝트 파일 구성하기

먼저 #2에서 생성한 Electron 프로젝트를 그대로 사용합니다.

 

현재 프로젝트에는 다음과 같은 파일이 있습니다.

electron-app
├─ node_modules
├─ .gitignore
├─ index.html
├─ main.js
├─ package-lock.json
├─ package.json
└─ README.md

이번에는 룰렛 화면을 구성하기 위해 CSS와 JavaScript 파일을 추가하겠습니다.

최종적으로 다음과 같은 구조를 만들 예정입니다.

electron-app
├─ node_modules
├─ .gitignore
├─ index.html
├─ main.js
├─ package-lock.json
├─ package.json
├─ README.md
├─ script.js
└─ style.css
💡 참고
이번 글에서는 별도의 프레임워크 없이 HTML, CSS, JavaScript를 이용해 기본적인 Electron 앱을 만들어봅니다.

✔️ 2. 룰렛 화면 만들기

먼저 index.html을 수정해 룰렛 프로그램의 기본 화면을 만들어보겠습니다.

여기서는 프로그램 제목과 룰렛 결과, 버튼, 참가자 목록 등을 배치합니다.

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>랜덤 룰렛</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>

  <h1>🎰 Random Roulette</h1>

  <div id="result">
    룰렛을 돌려보세요!
  </div>

  <button id="spinButton">🎲 룰렛 돌리기</button>

  <h2>참가자</h2>

  <ul id="participantList"></ul>

  <input type="text" id="participantInput" placeholder="참가자 이름 입력">
  <button id="addButton">참가자 추가</button>

  <script src="script.js"></script>
</body>
</html>

HTML에서는 프로그램에 필요한 기본적인 요소만 먼저 배치합니다.

이 단계에서는 아직 버튼을 눌러도 실제 기능은 동작하지 않습니다.


✔️ 3. 기본 화면 꾸미기

다음으로 style.css를 생성하고 프로그램의 기본적인 화면을 꾸며보겠습니다.

body {
  font-family: Arial, sans-serif;
  text-align: center;
  padding: 40px;
}

h1 {
  margin-bottom: 40px;
}

#result {
  font-size: 32px;
  font-weight: bold;
  margin-bottom: 30px;
}

button {
  padding: 10px 20px;
  margin: 5px;
  cursor: pointer;
}

input {
  padding: 10px;
  margin-top: 20px;
}

CSS를 적용하면 Electron 창에서 조금 더 프로그램다운 형태로 화면이 표시됩니다.


✔️ 4. 참가자 추가 기능 만들기

이제 JavaScript를 이용해 참가자를 추가하는 기능을 만들어보겠습니다.

script.js 파일을 생성하고 다음 코드를 작성합니다.

const participants = [];

const participantInput = document.getElementById('participantInput');
const participantList = document.getElementById('participantList');
const addButton = document.getElementById('addButton');

addButton.addEventListener('click', () => {
  const name = participantInput.value.trim();

  if (!name) {
    return;
  }

  participants.push(name);
  participantInput.value = '';

  renderParticipants();
});

function renderParticipants() {
  participantList.innerHTML = '';

  participants.forEach((name) => {
    const li = document.createElement('li');
    li.textContent = name;

    participantList.appendChild(li);
  });
}

이제 참가자 이름을 입력하고 참가자 추가 버튼을 누르면 참가자 목록에 이름이 추가됩니다.


✔️ 5. 랜덤 룰렛 기능 만들기

참가자 목록이 준비되었으니 이제 실제 룰렛 기능을 만들어보겠습니다. ( script.js )

const spinButton = document.getElementById('spinButton');
const result = document.getElementById('result');

spinButton.addEventListener('click', () => {
  if (participants.length === 0) {
    result.textContent = '참가자를 먼저 추가해주세요!';
    return;
  }

  const randomIndex = Math.floor(Math.random() * participants.length);
  const winner = participants[randomIndex];

  result.textContent = `🎉 ${winner} 당첨!`;
});

여기서는 참가자 배열에서 랜덤한 위치의 참가자를 선택합니다.

 

예를 들어 참가자가 다음과 같이 있다면,

짱구
철수
훈이
맹구
유리

룰렛 버튼을 클릭할 때마다 참가자 중 한 명이 랜덤으로 선택됩니다.


✔️ 6. Electron에서 실행

이제 지금까지 만든 프로그램을 Electron에서 실행해 보겠습니다.

VS Code 터미널에서 다음 명령어를 실행합니다.

npm start

정상적으로 실행되면 Electron 창에 우리가 만든 랜덤 룰렛 화면이 나타납니다.

참가자 이름을 추가한 후 🎲 룰렛 돌리기 버튼을 클릭하면 참가자 중 한 명이 랜덤으로 선택됩니다.