> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PowerShell/API を使用したビルドのデプロイ

> PowerShell および Multiplayer Servers API から PlayFab Multiplayer Servers VM ビルドをデプロイします。アセットのアップロードや Windows OS ビルドの作成を含みます。

この記事では、Windows 10 開発デバイスの PowerShell で Windows OS を使用する VM のビルドをデプロイ/作成する方法の概要を説明します。

PowerShell/API を使用してビルドをデプロイする際、Game Manager と API を組み合わせて使用する可能性があります。そのため、PowerShell/API コマンドは以下に機能別に一覧表示しています。

初めてビルドをデプロイする場合は、実際にサーバーをデプロイするのに必要なすべてのアセットが含まれている [Wrapper サンプル](/services/playfab/multiplayer/servers/wrapper-sample) を使用してビルドをデプロイすることをお勧めします。

<Note>
  PlayFab Multiplayer Servers を使用および表示するには、機能を有効にする必要があります。新規ユーザーの場合、Game Manager 方式を使用してこの機能を有効にすることをお勧めします。手順については、[PlayFab Server 機能を有効化する](/services/playfab/multiplayer/servers/enable-playfab-multiplayer-servers) を参照してください。
</Note>

## タイトル ID と開発者シークレット キーの取得

* PlayFab タイトル ID の取得
  * [PlayFab.com](https://developer.playfab.com) の開発者アカウントにログインします
  * Game Manager で **My Studios and Titles** ページに移動します。ゲーム タイトルを探し、PlayFab ゲーム タイトル ID を取得します

* タイトルの開発者シークレット キーの取得
  * Game Manager で、タイトル > 設定 (歯車アイコン) を選択します
  * **Title settings** を選択し、次に **Secret Keys** タブを選択して開発者シークレット キーを取得します

シークレット キーの詳細については、[シークレット キー管理](/services/playfab/live-service-management/gamemanager/secret-key-management) を参照してください。

## PlayFab MultiplayerAPI PowerShell モジュールのインストール

1. Windows PowerShell を管理者として開きます

2. 以前に [PlayFab Multiplayer PowerShell](https://github.com/PlayFab/MultiplayerPowershell) モジュールをインストールしていた場合は、次のコマンドでアンインストールします。このモジュールは廃止されました。

```powershell theme={null}
Uninstall-Package PlayFabMultiplayer
```

新しいモジュールへの移行を支援するために、新しい同等のコマンドを見つけるには [コマンドのマッピング](#mapping-commands) を参照してください。コマンドと引数の両方が変更されている可能性があることに注意してください。

3. 新しい [PlayFabMultiplayer API モジュール](https://github.com/PlayFab/MpsPowershell) をインストールします

各コマンドの詳細なドキュメントについては、[Cmdlet ドキュメント](https://github.com/PlayFab/MpsPowershell/tree/main/MpsPowershell/docs) を参照してください。

```powershell theme={null}
Install-Module -Name PlayFabMultiplayerApi
```

<Tip>
  モジュールをインストールする前に、まず PowerShell で `Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser` を実行して実行ポリシーを設定する必要がある場合があります。詳細については、[PowerShell 実行ポリシー](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_execution_policies) を参照してください。
</Tip>

4. 次のコマンドを実行して、PlayFab Multiplayer PowerShell モジュール内の cmdlets について詳しく確認してください。または、[PlayFabMultiplayerApi cmdlet リファレンス ドキュメント](https://github.com/PlayFab/MpsPowershell/tree/main/MpsPowershell/docs) を参照できます。

```powershell theme={null}
Get-Command -Module PlayFabMultiplayerApi | Get-Help
```

## タイトルの EntityToken の取得

タイトル ID と関連する開発者キーを使用して、以下のコマンドを実行してください。PlayFabMultiplayerApi PowerShell モジュールを使用するセッションの開始時に必ずこのコマンドを実行する必要があります。

これは [GetEntityToken](xref:titleid.playfabapi.com.authentication.authentication.getentitytoken) API を呼び出して EntityToken を取得し、将来の cmdlets で使用するために環境変数に保存します。

```powershell theme={null}
Set-PfTitle -TitleID "mytitleID" -SecretKey "mysecretkey"
```

## タイトルの multiplayer servers 機能の有効化

Multiplayer Servers 機能を有効にするために、以下の cmdlet を実行します。これは [enable multiplayer servers](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.enablemultiplayerserversfortitle) API を呼び出します。

```powershell theme={null}
Enable-PfMultiplayerServer
```

`Title must have a valid payment instrument associated with it in order to enable Multiplayer Servers` というエラーが表示された場合は、Game Manager を使用して支払い情報を追加するために [PlayFab Multiplayer Servers を有効化する](/services/playfab/multiplayer/servers/enable-playfab-multiplayer-servers) を参照してください。

## アセットのアップロード

Windows サーバー用のビルドをデプロイする際、アセットのアップロードは必須です。これは、アセットがマネージド Windows コンテナー イメージをカスタマイズするためです。

ただし、Linux サーバー用のビルドをデプロイする際は、Linux コンテナー イメージをカスタマイズできるため、オプションです。詳細については、[Linux ビルドの作成とデプロイ](/services/playfab/multiplayer/servers/deploying-linux-based-builds) を参照してください。

アセットをアップロードするには、次のコマンドを実行します。

```powershell theme={null}
New-PfAsset -FilePath C:\MyAsset.zip -AssetName MyAsset.zip
```

パラメーター:

* **Filepath**: アップロードするローカル ファイルへのパス
* **AssetName**: アップロードするアセットの名前

詳細については、[New-PfAsset リファレンス ドキュメント](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/New-PfAsset.md) を参照してください。

## ビルドの作成

* Windows サーバー用のビルドを作成する場合、アセットをアップロードしている必要があります。まだの場合は、[アセットのアップロード](#upload-an-asset) を参照してください。
* Linux サーバー用のビルドを作成する場合、PlayFab コンテナー レジストリにカスタム Linux コンテナー イメージをアップロードしている必要があります。詳細については、[Linux ビルドの作成とデプロイ](/services/playfab/multiplayer/servers/deploying-linux-based-builds) を参照してください。

<Info>
  [無料評価](/services/playfab/multiplayer/servers/billing-for-thunderhead) 用に提供されるリソースを活用する予定がある場合、**$vmSize__ と __$regions** に正しい値を使用するようにしてください。
</Info>

Windows ゲーム サーバー用のビルドをデプロイするためのサンプル コードを以下に示します。

```powershell theme={null}
$vmSize = "Standard_D2as_v4"
$regions = @( @{ StandbyServers = 1; MaxServers = 1; Region = 'EastUS'; ScheduledStandbySettings = $NULL } )
$ports = @( @{ Name = 'tcp_port'; Num = 8080; Protocol = 'TCP' }, @{ Name = 'udp_port'; Num = 8081; Protocol = 'UDP' } )
$gameAssets = @( @{ FileName = 'MyAsset.zip'; MountPath = 'C:\Assets' } )

$buildResponse = New-PfBuild -BuildName ExampleBuild -ContainerFlavor ManagedWindowsServerCore -StartMultiplayerServerCommand 'C:\Assets\MyCustomServer.exe' -GameAssetReferences $gameAssets -VMSize $vmSize -MultiplayerServerCountPerVM 1 -Ports $ports -RegionConfigurations $regions

# All PlayFabMultiplayerApi cmdlets return objects, so we can pass the returned object to ConvertTo-Json for human readability.
$buildResponse | ConvertTo-Json -depth 5
```

Linux ゲーム サーバー用のビルドをデプロイするためのサンプル コードを以下に示します。

```powershell theme={null}
$vmSize = "Standard_D2as_v4"
$ports = @( @{ Name = 'tcp_port'; Num = 8080; Protocol = 'TCP' }, @{ Name = 'udp_port'; Num = 8081; Protocol = 'UDP' } )
$regions = @( @{ 'MaxServers' = 1; 'Region' = 'AustraliaEast'; StandbyServers = 1; 'ScheduledStandbySettings' = $NULL } )
$containerImageReference = @{ ImageName = "MyLinuxContainerImage"; Tag = "0.2" }

$buildResponse = New-PfBuild -BuildName ExampleBuild -ContainerFlavor CustomLinux -ContainerImageReference $containerImageReference -VMSize $vmSize -MultiplayerServerCountPerVM 1 -Ports $ports -RegionConfigurations $regions

# All PlayFabMultiplayerApi cmdlets return objects, so we can pass the returned object to ConvertTo-Json for human readability.
$buildResponse | ConvertTo-Json -depth 5
```

<Tip>
  開発中は、VM コア時間の使用を避けるために、未使用または不健全なリージョンをすべてシャットオフしてください。コア時間の使用は VM の起動時から始まり、VM がシャットオフされるまで続きます。リージョンのターゲット スタンバイ サーバーが 0 になるか、リージョンが削除されない限り、リージョン内の VM は自動的にシャットオフされません。
</Tip>

### VM のシャットダウン

VM をシャットダウンするには 3 つの方法があります。

1. リージョンの **target standby** を 0 に設定します。これによりこのリージョンの VM のみがシャットダウンされます。
2. ビルドから特定のリージョンを削除します。
3. ビルド全体を削除します。これにより、このビルドの **すべてのリージョン** の VM がシャットダウンされます。

## デプロイ済みビルドの一覧表示

タイトルのビルド リストを表示するには、以下のコマンドを実行します。

```powershell theme={null}
Get-PfBuild | ConvertTo-Json -depth 5
```

### マルチプレイヤー サーバーのリクエスト

ビルドを作成すると、.exe ファイルを実行した後に 1 つまたは複数のサーバーが作成されます。これらのサーバーは今 "standing by" 状態です。

このコマンドを使用してビルドを実行しているすべてのサーバーをリストすると、それらを見ることができます。

```powershell theme={null}
Get-PFMultiplayerServer -BuildId $buildResponse.data.BuildId -Region "EastUS"
```

スタンバイ サーバーがいくつか見えたら、ゲームプレイ用に 1 つリクエストしてみましょう...

```powershell theme={null}
$sessionId = New-Guid
$serverResponse = Request-PfMultiplayerServer -BuildId $buildResponse.data.BuildId -PreferredRegions @('EastUS') -SessionId $sessionId
```

その呼び出しへのレスポンスには、クライアントが接続できる IPv4 アドレスとポート番号が含まれます。WindowsRunnerCSharp.exe の場合、シンプルな Web サーバーをホストしているため、IPv4 アドレスとポート番号にブラウズしてレスポンスを取得できます。

```powershell theme={null}
curl "http://$($serverResponse.data.Ipv4Address):$($serverResponse.data.Ports[0].Num)"
```

これが PlayFab マルチプレイヤー サーバーの中核です。マッチメイキング サービスが [RequestMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.requestmultiplayerserver) を呼び出してから 3 秒以内に、PlayFab は新しいサーバーを割り当てます。

これらのサーバーは、リージョンごと、ビルドごとに構成する、継続的に補充されるスタンバイ サーバー プールから提供されます。

## コマンドのマッピング

以下の表は、旧コマンドと新しい同等のコマンドを示しています。これは、PowerShell モジュールの以前のバージョンを使用していて、既存のコマンドを変換する必要がある人向けの簡単なマッピングです。

一部の引数も変更されているため、変更の完全な詳細を確認するために各コマンドの定義を読むようにしてください。

| MultiplayerPowershell コマンド (旧)        | MpsPowershell API モジュール (新)                                                                                                           |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Add-PFMultiplayerAsset                | New-PfAsset                                                                                                                           |
| Add-PFMultiplayerCertificate          | Invoke-PfUploadCertificate                                                                                                            |
| Enable-PFMultiplayerServer            | [Enable-PfMultiplayerServer](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Enable-PfMultiplayerServer.md)     |
| Get-PFMultiplayerAsset                | [Get-PfAssetSummary](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfAssetSummary.md)                     |
| Get-PFMultiplayerBuild                | [Get-PfBuild](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfBuild.md)                                   |
| Get-PFMultiplayerCertificate          | [Get-PfCertificateSummary](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfCertificateSummary.md)         |
| Get-PFMultiplayerContainerImages      | [Get-PfContainerImage](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfContainerImage.md)                 |
| Get-PFMultiplayerImageTags            | [Get-PfContainerImageTag](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfContainerImageTag.md)           |
| Get-PFMultiplayerQosServer            | [Get-PfQosServer](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfPartyQosServer.md)                      |
| Get-PFMultiplayerServer               | [Get-PfMultiplayerServer](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Get-PfMultiplayerServer.md)           |
| Get-PFTitleEntityToken                | deprecated                                                                                                                            |
| New-PFMultiplayerBuild                | [New-PfBuild](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/New-PfBuild.md)                                   |
| New-PFMultiplayerServer               | [Request-PfMultiplayerServer](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Request-PfMultiplayerServer.md)   |
| Remove-PFMultiplayerAsset             | [Remove-PfAsset](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Remove-PfAsset.md)                             |
| Remove-PFMultiplayerBuild             | [Remove-PfBuild](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Remove-PfBuild.md)                             |
| Remove-PFMultiplayerCertificate       | [Remove-PfCertificate](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Remove-PfCertificate.md)                 |
| Remove-PFMultiplayerContainerImageTag | [Invoke-PfImageUntagContainer](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Invoke-PfImageUntagContainer.md) |
| Set-PFTitle                           | [Set-PfTitle](https://github.com/PlayFab/MpsPowershell/blob/main/MpsPowershell/docs/Set-PfTitle.md)                                   |

## 関連項目

* [チュートリアル: PowerShell/API を使用したビルドのデプロイ](/services/playfab/multiplayer/servers/quickstart-for-multiplayer-servers-api-powershell)
* [Game Manager を使用したビルドのデプロイ](/services/playfab/multiplayer/servers/deploy-using-game-manager)
* [最初のサーバーを作成する](/services/playfab/multiplayer/servers/create-your-first-server)
* [Wrapper サンプル](/services/playfab/multiplayer/servers/wrapper-sample)
* [サンプルとリソース](/services/playfab/multiplayer/servers/server-samples-resources)


## Related topics

- [ウォークスルー: PowerShell/API を使用したビルドのデプロイ](/ja-jp/services/playfab/multiplayer/servers/quickstart-for-multiplayer-servers-api-powershell.md)
- [PlayFab マルチプレイヤー サーバー ビルドのデプロイ](/ja-jp/services/playfab/multiplayer/servers/deploying-playfab-multiplayer-server-builds.md)
- [シークレットの管理 (プレビュー)](/ja-jp/services/playfab/multiplayer/servers/manage-secrets.md)
- [プロファイラーのアタッチ](/ja-jp/services/playfab/multiplayer/servers/attaching-a-profiler.md)
- [Linux ビルドの作成とデプロイ](/ja-jp/services/playfab/multiplayer/servers/deploying-linux-based-builds.md)
