Unity 게임에 친구 목록을 추가하는 방법
Published: 2024-05-15 14:37:15

Unity 게임에 친구 목록을 통합하는 것은 플레이어 참여를 촉진하는 데 있어 핵심적인 요소입니다. 이를 통해 플레이어는 게임 외부의 친구이든, 치열한 대전 중에 친분을 쌓은 플레이어이든 게임 내에서 다른 플레이어와 더 긴밀한 관계를 형성할 수 있습니다.

친구 목록은 매력적인 커뮤니티를 만드는 데 필수적인 기능이지만, Unity 프로젝트에 이러한 기능을 통합하는 것은 말처럼 쉬운 일이 아닙니다. 처음부터 시작하려면 플레이어가 늘어날 때 이를 구축하고, 유지 관리하고, 확장하는 데 많은 리소스가 필요합니다. 다행히도 PubNub에서는 지연 시간이 짧은 실시간 API 플랫폼을 통해 그 어느 때보다 쉽게 Unity 게임에 실시간 기능을 추가할 수 있습니다. 유니티는 앱의 인프라 계층을 관리하므로 개발자는 애플리케이션에만 집중할 수 있습니다. Windows, Mac, iOS, Android, Oculus 및 Meta Quest와 같은 가상 현실 시스템 또는 크로스 플랫폼용 개발이든, 유니티 [SDK는](https://www.pubnub.com/docs/sdks/unity?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 모든 것을 지원합니다.

이 가이드를 따라할 때 참고할 수 있도록 Unity 게임에서 친구 목록을 구현하는 방법의 예시를 보고 싶다면 [Unity 쇼케이스 게임을](https://github.com/PubNubDevelopers/unity-multiplayer-shooter) 확인해 보세요.

계속 읽으면서 Unity 게임에 친구 목록을 추가하여 친구를 추가, 삭제하고 친구의 온라인 상태를 실시간으로 확인하는 방법을 단계별로 알아보세요. 이 가이드에서는 친구 목록 추가에 대해 설명하지만, 동일한 아키텍처를 길드, 클랜, 동맹 목록에도 쉽게 적용할 수 있습니다. 먼저 PubNub 게임 오브젝트를 구성하는 방법과 채널 그룹이 친구 목록을 설계하는 방법을 이해하고, 마지막으로 친구 시스템 구현에 대해 알아볼 것입니다.

PubNub 시작하기
-----------

Unity 게임의 스코어보드와 리더보드를 설정하는 방법을 이해하려면 먼저 PubNub에 대해 이해하고 플랫폼의 기능을 활용하도록 애플리케이션을 구성하는 방법을 알아야 합니다.

### 개요

PubNub는 Pub/Sub(게시/구독) 모델을 기반으로 합니다. 사용자는 기본적으로 모든 관련 정보가 포함된 페이로드인 메시지를 PubNub 네트워크에 [게시합니다](https://www.pubnub.com/docs/general/messages/publish?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko). 메시지 및 기타 생성된 이벤트를 수신하거나 듣고자 하는 사용자는 PubNub 네트워크에 [가입하고](https://www.pubnub.com/docs/general/messages/receive?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 메시지를 파싱합니다. [이벤트 리스너는](https://www.pubnub.com/docs/general/messages/receive#add-a-listener?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) PubNub 네트워크에서 생성된 메시지와 이벤트를 포착하고 발생한 동작에 따라 트리거하는 데 사용됩니다.

메시지가 올바른 수신자에게 전달되도록 하기 위해 [채널은](https://www.pubnub.com/docs/general/channels/overview?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 데이터가 한 장치에서 다른 장치로 전송되는 메커니즘으로 사용됩니다. 채널은 디바이스가 PubNub 네트워크에 메시지를 게시하고 구독하고자 할 때마다 필요합니다. 사용자는 한 번에 하나의 메시지만 게시할 수 있지만, 한 번에 여러 개의 채널을 구독할 수 있습니다.

### PubNub Unity SDK 설치 및 구성하기

시작하려면 PubNub 종속 요소를 설치하고 애플리케이션을 PubNub 네트워크에 연결하도록 PubNub Unity SDK를 구성해야 합니다. 이 가이드에서는 Unity 게임 엔진, Unity 에셋, Visual Studio와 같은 코드 에디터가 이미 설치되어 있다고 가정합니다. 자세한 내용은 [Unity SDK 설명서를](https://www.pubnub.com/docs/sdks/unity?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 참조하시기 바라며, 개략적인 내용은 다음과 같습니다:

1.  [패키지 관리자를](https://www.pubnub.com/docs/sdks/unity#install-via-package-manager?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 통해 Unity 패키지를 추가합니다.
2.  [무료 PubNub 계정을](https://admin.pubnub.com/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 생성하고 PubNub 키를 받습니다. 키 세트에서 애플리케이션에 필요한 기능을 활성화해야 합니다. 이 가이드에서는 프레즌스 및 스트림 컨트롤러를 기본 설정으로 활성화해야 합니다. 키 세트의 다양한 기능에 대한 자세한 내용은 [가이드를](https://www.pubnub.com/how-to/?sortBy=Most%20recent&categories=PubNub%20portal&utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 참조하세요.
3.  새 Unity 프로젝트를 생성하거나 기존 게임을 열고 이전 단계에서 얻은 퍼블리시 및 구독 키를 Unity에 제공하여 Unity 에디터에서 PubNub 게임 오브젝트를 [구성합니다](https://www.pubnub.com/docs/sdks/unity#configure-pubnub?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko). 또한 모든 PubNub 오브젝트에 고유 식별자가 있어야 PubNub에 연결할 수 있으므로 UserId를 제공해야 합니다. 이 작업을 완료했으면 PubNub 오브젝트를 초기화합니다:

```js
using PubnubApi;
using PubnubApi.Unity;
…
PubNub pubnub = new Pubnub(pnConfiguration);
```

4.  게임이 메시지에 반응하도록 [이벤트 리스너를](https://www.pubnub.com/docs/sdks/unity#add-event-listeners?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 추가하면 백엔드에서 기본적으로 새 메시지가 수신될 때 알림을 받게 됩니다. 각 유형의 메시지 또는 이벤트에 응답하는 사용자 지정 로직을 구현할 수 있는 다양한 이벤트 리스너가 있지만, 이 가이드에서는 프레즌스 및 메시지 이벤트 리스너가 필요합니다:

```js
var listener = new SubscribeCallbackListener();
pubnub.AddListener(listener);
listener.onPresence += OnPnPresence;
listener.onMessage += OnPnMessage;
…
// Handle Presence Events generated by the PubNub Network
private void OnPnPresence(Pubnub pn, PNPresenceEventResult result) {
    Debug.Log(result.Event);
}

// Handle Message Events generated by the PubNub Network.
private void OnPnMessage(Pubnub pn, PNMessageResult<object> result) {
    Debug.Log($"Message received: {result.Message}");
}
```

[프레즌스는](https://www.pubnub.com/docs/general/presence/overview?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 게임 내 플레이어의 온라인 및 사용자 지정 상태를 확인하는 데 사용되며, PubNub는 이벤트를 생성하여 실시간으로 플레이어의 상태에 대한 정보를 전달합니다. Unity 게임에 프레즌스 기능을 구현하는 [방법에](https://www.pubnub.com/how-to/add-presence-to-your-unity-game/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 대한 자세한 내용은 [방법 가이드를](https://www.pubnub.com/how-to/add-presence-to-your-unity-game/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 참조하세요.

친구 목록 설계
--------

플레이어의 친구가 온라인 상태가 될 때마다 게임에서 알 수 있는 알림인 프레즌스 이벤트를 수신하려면 채널을 구독하는 것부터 시작해야 합니다. 하지만 플레이어는 어떤 플레이어가 자신의 친구인지 어떻게 알 수 있을까요? 채널 그룹은 이 문제에 대한 완벽한 솔루션입니다.

### 채널 그룹

[채널 그룹](https://www.pubnub.com/docs/general/channels/subscribe#channel-groups?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 을 사용하면 한 번에 많은 수의 채널을 지속적으로 관리할 수 있습니다. 채널 그룹은 기본적으로 채널 목록에 대한 포인터로, 채널 그룹당 최대 2,000개의 채널에 대해 한 번의 구독 요청을 보낼 수 있습니다. 채널 그룹은 네트워크에 연결된 사용자 아이디에 고유하므로 채널 그룹에 고유한 이름을 지정하고 해당 플레이어와 연결할 수 있습니다.

즉, 사용자별로 고유한 채널을 구독할 필요 없이 채널 그룹을 구독하고 플레이어의 온라인 상태나 사용자 지정 상태가 변경될 때마다 프레즌스 및 기타 이벤트를 수신할 수 있습니다. 따라서 채널 그룹과 채널은 내가 관리하고 업데이트를 받을 수 있는 친구 및 회원(채널)의 목록(채널 그룹)이라고 생각하면 됩니다.

### 채널 그룹 설정하기

게임의 필요에 따라 각 플레이어의 친구 목록을 구현하려면 최소 두 개의 채널 그룹이 필요하며, 각 채널 그룹은 플레이어의 사용자 ID로 연결하여 고유하게 식별할 수 있습니다. 이름은 서로 다를 수 있으므로 [채널 이름 지정 규칙 문서를](https://www.pubnub.com/docs/general/channels/channel-naming?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 참조하세요:

```js
//receive presence updates, so you know when a player’s friends online or custom status changes.
string chanGroupFriendsStatus = $“friends_status_” + {UserID} ;

// receive chat messages from friends
string chanGroupFriendsChat = $”friends_chat_” + {UserID};
```

채팅 메시지와 같은 다른 이벤트에서 프레즌스 이벤트를 분리하려면 두 개의 채널 그룹이 필요합니다. 동일한 채널 그룹이 메시지와 채널을 모두 나타내면 불필요한 트래픽이 많이 발생할 수 있습니다. 이벤트를 최대한 분리하여 향후 더 많은 기능으로 게임을 유연하게 확장할 수 있도록 하려는 것입니다.

친구 채팅 구현에 관심이 없는 경우 상태 채널 그룹만 있으면 됩니다. 친구 채팅을 구현하려는 경우, 이 가이드는 게임의 채팅 시스템 설정이 아닌 친구 목록의 아키텍처를 따르고 있다는 점에 유의하시기 바랍니다. Unity에서 채팅 시스템을 구현하는 방법에 대한 자세한 내용은 [실시간 채팅 가이드를](https://www.pubnub.com/how-to/add-real-time-chat-to-your-unity-game/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 참조하세요.

모든 채널 그룹에는 연결된 채널이 하나 이상 필요합니다. 모든 플레이어에 대한 채널 패턴을 생성하고 플레이어의 사용자 ID를 채널 이름에 연결하는 방식으로 이 문제를 해결할 수 있습니다:

```js
string chanFriendStatus = $”friends.presence.” + {UserID};
string chanFriendChat = $”friends.chat.” + {UserID};
```

그런 다음 [채널 그룹 API를](https://www.pubnub.com/docs/sdks/unity/api-reference/channel-groups?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 사용하여 이 두 채널을 적절한 채널 그룹에 추가합니다. 처음 로그인하는 각 플레이어에 대해 이 작업을 수행합니다:

```js
PNResult<PNChannelGroupsAddChannelResult> statusFriendsResponse= await pubnub.AddChannelsToChannelGroup()
  .ChannelGroup(chanGroupFriendsStatus )
  .Channels(new string[] {
    chanFriendStatus
  })
  .ExecuteAsync();
//Handle response
…
PNResult<PNChannelGroupsAddChannelResult> chatFriendsResponse= await pubnub.AddChannelsToChannelGroup()
  .ChannelGroup(chanGroupFriendsChat)
  .Channels(new string[] {
    chanFriendChat 
  })
  .ExecuteAsync();
//Handle response
```

이렇게 이름이 지정된 채널을 해당 채널 그룹에 추가하는 방법은 플레이어의 친구 목록에서 친구를 추가하고 삭제하는 방법과 동일하지만, 이에 대해서는 나중에 자세히 설명합니다.

### 현재 상태 및 메시지 이벤트 듣기: 구독하기

채널과 채널 그룹 시스템이 준비되었으면 이제 플레이어의 상태가 변경되어 온라인 상태가 될 때마다 프레즌스 이벤트를 생성하는 PubNub 네트워크를 구독할 수 있습니다.

채널 구독과 마찬가지로 채널 그룹을 직접 구독하고 해당 채널 그룹과 연결된 모든 채널에서 프레즌스 이벤트와 메시지 이벤트를 모두 받을 수 있습니다. 일반적으로 구독할 때 withPresence 파라미터를 포함하면 SDK가 프레즌스 채널과 비프레즌스 채널을 모두 관리하도록 처리할 수 있습니다(자세한 내용은 [Unity의 프레즌스 사용법 가이드에서](https://www.pubnub.com/how-to/add-presence-to-your-unity-game/#h-5?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 확인할 수 있습니다). 하지만 채널에 대한 메시지, 메타데이터 업데이트 등의 다른 이벤트가 아닌 프레즌스 이벤트만 포착하기를 원하기 때문에 chanGroupFriendsStatus 채널 그룹에 대해서는 그렇게 하고 싶지 않습니다.

이 문제를 해결하려면 chanGroupFriendsStatus에 -pnpres를 추가하면 됩니다. 이렇게 하면 이 채널 그룹에 대한 모든 이벤트, 특히 프레즌스 이벤트가 앞서 설정한 프레즌스 이벤트 리스너에 의해 포착됩니다. 또한, 챈그룹프렌즈챗은 어떤 프레즌스 이벤트도 수신하지 않고 오직 메시지에만 집중하게 됩니다:

```js
pubnub.Subscribe<string>()
  .ChannelGroups(new string[] {
    chanGroupFriendsStatus + “-pnpres”,
    chanGroupFriendsChat
  })
  .Execute();
```

### 메시지 보내기에만 집중합니다: 게시

채널 그룹 chanGroupFriendsStatus를 사용할 준비가 되었으면, 친구가 메시지를 보낼 수 있도록 게시 호출을 설정하고 친구 채팅 채널 그룹에 연결된 모든 친구가 메시지를 받을 수 있도록 해야 합니다.

채널 그룹에 가입할 수는 있지만 채널 그룹에 게시할 수는 없습니다. 대신, 앞서 설정한 채널 그룹과 연결된 채널에 메시지를 게시해야 합니다:

```js
PNResult<PNPublishResult> publishResponse = await pubnub.Publish()
  .Message(“Hey friends, let’s game?”)
  .Channel(chanFriendChat)
  .ExecuteAsync();
  PNPublishResult publishResult = publishResponse.Result;
//Handle result
```

채널 그룹에 직접 게시할 수는 없지만, 이 채널 그룹의 모든 채널에 메시지를 게시하면 클라이언트 수신자의 메시지 핸들러가 메시지를 받게 됩니다. 즉, 채널 그룹에 연결된 모든 친구가 메시지를 받게 됩니다.

### 초기 게임 로드

플레이어가 처음 로그인할 때 채널 [목록 서비스를](https://www.pubnub.com/docs/sdks/unity/api-reference/channel-groups#list-channels?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 호출하여 채널 그룹의 모든 채널 또는 친구를 나열해야 합니다:

```js
PNResult<PNChannelGroupsAllChannelsResult> friendsListResult= await pubnub.ListChannelsForChannelGroup()
  .ChannelGroup(chanGroupFriendsStatus)
  .ExecuteAsync();
```

이 친구 목록은 채널에서 사용자 ID를 추출할 수 있으므로(직접 패턴을 만들었으므로) 플레이어의 친구 목록 UI를 구성하는 데 사용할 수 있습니다. 이러한 플레이어와 관련된 메타데이터가 있는 경우 [앱 컨텍스트 API와](https://www.pubnub.com/docs/sdks/unity/api-reference/objects?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 함께 사용자 ID를 사용하여 닉네임, 프로필 사진, 플레이어에 대한 메모 등의 프로필 정보에 대한 메타데이터를 얻을 수 있습니다.

현재 온라인 상태를 확인하려면 HereNow를 호출하여 현재 온라인 상태인 모든 사용자를 검색하고 플레이어의 친구 목록과 상호 참조합니다:

```js
pubnub.HereNow()
  .ChannelGroups(new String[]{ chanGroupFriendsStatus })
  .IncludeState(true)
  .IncludeUUIDs(true)
  .ExecuteAsync()
```

그런 다음 친구 목록 UI의 온라인 상태 표시기를 업데이트하여 해당 친구들이 온라인 상태임을 표시할 수 있습니다. 앞서 설정한 프레즌스 이벤트 리스너는 온라인 상태 및 사용자 지정 상태 변경을 감지하며, 이에 따라 플레이어의 친구 목록 UI를 업데이트할 수 있습니다. 앞서 언급했듯이 메시지 이벤트 리스너에서도 메시지를 감지하여 친구 그룹에서 보낸 메시지임을 나타내는 고유한 색상으로 표시할 수 있습니다.

시스템에 친구 목록을 추가하기 위한 거의 모든 것이 구현되었지만 플레이어는 친구 목록을 어떻게 관리할까요?

친구 관리하기: 친구 시스템
---------------

앞서 설명한 것처럼 채널 그룹에 친구를 추가하려면 채널 [추가 기능을](https://www.pubnub.com/docs/sdks/unity/api-reference/channel-groups#add-channels?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 호출하여 채널 그룹에 채널을 추가할 수 있습니다. 이 기능은 플레이어가 버튼을 클릭하여 다른 친구를 추가하거나 다른 플레이어의 초대를 수락할 때 시작할 수 있습니다.

플레이어는 [채널 제거 기능을](https://www.pubnub.com/docs/sdks/unity/api-reference/channel-groups#remove-channels?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 호출하고 채널 그룹과 채널을 지정하여 친구 그룹에서 친구를 제거할 수도 있습니다. 앞서 생성한 상태 및 채팅 채널 그룹 모두에 대해 이 과정을 반복해야 합니다. 이 호출을 시작하는 버튼에 사용자 아이디를 전달하고 앞서 만든 채널 패턴에 해당 아이디를 포함시켜 채널 그룹에서 친구를 제거할 수 있습니다.

게임 자체에서 친구 추가 및 제거를 모두 수행할 수 있지만, 플레이어가 게임 내에서 채널 그룹에 채널을 추가/제거할 수 없도록 하는 것이 좋습니다. 플레이어가 친구를 추가/제거하려면 백엔드 서버(사용자가 계정을 등록할 때와 동일한 서버일 수 있음)에 요청을 보내야 이러한 요청을 처리할 수 있습니다.

이는 게임의 보안을 강화하기 위한 것으로, 서로 친구가 아닌 플레이어가 특정 플레이어의 친구 그룹에 액세스하는 것을 원치 않기 때문입니다. 암호화 토큰 기반 권한 관리자인 [액세스](https://www.pubnub.com/docs/general/security/access-control?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 관리자를 구현하면 클라이언트의 PubNub 리소스에 대한 액세스를 규제할 수 있습니다.

백엔드 서버에서 이 보안 제어 기능을 사용하면 특정 플레이어에 대한 친구 요청 초대를 수신하여 의도한 대상에게 요청을 전달하는 시스템을 구현할 수 있습니다. 플레이어는 요청을 수락하거나 거부하여 백엔드 서버(액세스 관리자를 통해 보호됨)를 통해 초대를 다시 보내고 원래 발신자에게 전달합니다. 이렇게 하면 플레이어의 친구 목록을 안전하게 관리할 수 있습니다.

다음 단계
-----

이 사용법 가이드에서는 Unity 게임에 친구 목록을 추가하는 방법을 배웠습니다. 채널 그룹과 프레즌스를 사용하여 친구의 온라인/오프라인 및 커스텀 상태 변경 사항을 확인할 수 있는 시스템을 구현하고, 액세스 관리자로 권한을 확보하여 친구를 추가 및 제거할 수 있는 기반을 구축했습니다.

게임 개발자는 다음 리소스를 통해 자세히 알아볼 수 있습니다:

-   [설명서를](https://www.pubnub.com/docs/sdks/unity?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 읽어보세요.
-   [Unity에서 실시간 채팅을 추가하는 방법을](https://www.pubnub.com/how-to/add-real-time-chat-to-your-unity-game/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 알아보세요.
-   [사용법 가이드를](https://www.pubnub.com/how-to/add-presence-to-your-unity-game/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 통해 Unity 엔진 프로젝트에 프레즌스를 구현하세요.
-   유니티 [쇼케이스 게임에서](https://github.com/PubNubDevelopers/unity-multiplayer-shooter) 실시간으로 스코어보드와 리더보드를 구현하는 방법을 알아보세요.
-   [Unity SDK 소스 코드를](https://github.com/pubnub/unity) 살펴보세요.

궁금한 점이 있으면 언제든지 개발자 지원팀( [devrel@pubnub.com](mailto:devrel@pubnub.com) )으로 문의하세요.

펍넙은 어떤 도움을 드릴 수 있나요?
====================

이 문서는 원래 [PubNub.com에](https://www.pubnub.com/how-to/add-friend-list-to-your-unity-game/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 게시되었습니다.

저희 플랫폼은 개발자가 웹 앱, 모바일 앱 및 IoT 디바이스를 위한 실시간 상호작용을 구축, 제공 및 관리할 수 있도록 지원합니다.

저희 플랫폼의 기반은 업계에서 가장 크고 확장성이 뛰어난 실시간 에지 메시징 네트워크입니다. 전 세계 15개 이상의 PoP가 월간 8억 명의 활성 사용자를 지원하고 99.999%의 안정성을 제공하므로 중단, 동시 접속자 수 제한 또는 트래픽 폭증으로 인한 지연 문제를 걱정할 필요가 없습니다.

PubNub 체험하기
-----------

[라이브 투어를](https://www.pubnub.com/tour/introduction/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 통해 5분 이내에 모든 PubNub 기반 앱의 필수 개념을 이해하세요.

설정하기
----

PubNub [계정에](https://admin.pubnub.com/signup/?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 가입하여 PubNub 키에 무료로 즉시 액세스하세요.

시작하기
----

사용 사례나 [SDK에](https://www.pubnub.com/docs?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 관계없이 [PubNub 문서를](https://www.pubnub.com/docs?utm_source=medium&utm_medium=syndication&utm_campaign=off_domain&utm_content=ko) 통해 바로 시작하고 실행할 수 있습니다.