Skip to content

Windows 動作検証環境 ​

UZU モバイルアプリを Windows 環境で動作検証するための共通 VM。Mac 開発機しか持っていないメンバーでも、Flutter アプリの Windows ビルド / 動作確認ができる。

インスタンス情報 ​

項目値
GCP プロジェクトuzu-lab
インスタンス名flutter-windows-dev
ゾーンasia-northeast1-c
OSWindows Server 2025 Datacenter
マシンタイプc3-standard-4
GCP コンソールVM 詳細ページ

起動・接続 ​

1. VM を起動 ​

停止中は vCPU / メモリ課金なし。気軽に起動していい。

bash
gcloud compute instances start flutter-windows-dev \
  --zone=asia-northeast1-c --project=uzu-lab

起動には 1〜2 分かかる。

2. 外部 IP を確認 ​

外部 IP は ephemeral 割り当てのため、停止→起動のたびに変わる。起動後に以下で確認する。

bash
gcloud compute instances describe flutter-windows-dev \
  --zone=asia-northeast1-c --project=uzu-lab \
  --format="value(networkInterfaces[0].accessConfigs[0].natIP)"

表示された IP(例: 34.85.11.219)が RDP 接続先。

3. Mac から RDP 接続 ​

  1. Windows App(旧 Microsoft Remote Desktop)を App Store からインストール
  2. アプリ起動 → + → Add PC
  3. 以下を入力:
項目値
PC name2. で取得した外部 IP
Usernamechaya
Password0;PKIZ]^u/^,eX)
  1. 保存してダブルクリックで接続

共通アカウント。個別ユーザー作成は不要。

4. PowerShell で Flutter アプリを起動 ​

RDP で VM に入ったあと、以下の手順で動作確認を開始する。

  1. スタートメニュー → powershell を検索 → Windows PowerShell を起動(Win + X → Terminal でも可)

  2. モバイルアプリのディレクトリに移動 & 最新取得:

    powershell
    cd C:\Users\chaya\works\app\dart\apps\mobile
    git pull
  3. 依存関係を解決してアプリを起動:

    powershell
    dart pub get
    flutter run -d windows

初回は Visual Studio の C++ ワークロードを使って Windows 版ビルドが走るため、数分かかる。起動すると Flutter アプリの Windows ウィンドウが立ち上がる。

プリインストール済みの開発環境 ​

  • Visual Studio Code
  • Visual Studio 2022(Desktop development with C++ ワークロード + ATL コンポーネント。ATL が無いと atlstr.h を使うプラグインのビルドが失敗する)
  • Dart SDK / Flutter SDK(インストール箇所は ~/development/flutter、必要に応じて flutter upgrade を行って良い)
  • Git / GitHub CLI (gh)
  • NuGet CLI

リポジトリは以下に clone 済み:

C:\Users\chaya\works\app

自動シャットダウン ​

誰も RDP 接続していない状態が1時間続くと、自動的にシャットダウンされる(課金停止)。タイムゾーン非依存で、グローバルチームでも不公平なく動作。

項目値
最低 uptime30分(起動直後は落ちない)
アイドル判定1時間(アクティブ RDP セッションなし + 直近1時間に RDP ログオン/切断イベントなし)
チェック間隔15分(シャットダウン発動は最大15分の遅延)

手動で停止:

bash
gcloud compute instances stop flutter-windows-dev \
  --zone=asia-northeast1-c --project=uzu-lab

長時間のビルド・検証をする場合 ​

自動シャットダウンは「アクティブな RDP セッション」を見ているため、RDP を disconnect すると1時間後に VM ごと落ちる(= ビルドも中断)。長時間作業するときは:

  • RDP 接続を維持したままにする、または
  • 30分〜1時間以内に再接続してアイドルタイマーをリセットする

使う上での注意事項 ​

共通アカウントである ​

  • 個人の Google / GitHub ログインは残したまま放置しない
  • API キーや秘密情報をファイルに置かない
  • 終了時は uncommitted changes を push して残さない(次の人の作業と衝突するため)

GPU が無いため動画再生は検証できない ​

マシンタイプ c3-standard-4 は GPU を持たない。video_player_win(Windows は本家 video_player が非対応のため使用)が使う Media Foundation の DXGI ハードウェアデコード経路が常に失敗するため、ムービー演出は黒画面・無音になる。

クラッシュしないことは確認できるが、動画が正しく再生されるかはこの VM では判定できない。その確認には GPU 搭載の物理 Windows マシンが要る(PR #23216 のレビュー依頼欄に実例)。

Google Play Games on PC は起動できない ​

Android 版 UZU を Google Play Games on PC 上で動かす検証は、この VM ではできない。インストーラは通るが起動に失敗する。

Google Play Games on PC は Windows Hypervisor Platform(Hyper-V ベース)を要求する(PC 版 Google Play Games のインストールと設定「Windows Hypervisor Platform が無効になっている場合は、インストール時に有効にするようメッセージが表示されます」)。一方 Compute Engine のネストされた仮想化は L1 VM 上で Linux KVM しか通さない(Nested virtualization overview の Restrictions 節「The only hypervisor supported in an L1 VM is Linux KVM; Microsoft Hyper-V isn't supported.」)。VM の設定変更やマシンタイプ変更では解消しない。

Play Games on PC 固有の挙動(外部ブラウザ intent の扱い、Cuttlefish VM 上の Android としての振る舞い等)を確認するには物理 Windows マシンが必要。

トラブルシュート ​

RDP 接続がタイムアウトする ​

  1. VM が起動しているか確認(gcloud compute instances list --project=uzu-lab)
  2. 外部 IP が変わっていないか確認(上記 describe コマンドで再取得)
  3. ファイアウォールルール default-allow-rdp が有効か確認

自動シャットダウンが動かない / 動きすぎる ​

  • 実行履歴: VM 内 C:\ops\Auto-Shutdown.log
  • タスクスケジューラ: AutoShutdownIfIdle(SYSTEM 実行、15分おき)
  • 起動スクリプト本体: VM メタデータ windows-startup-script-ps1 に格納されている
  • 閾値変更: メタデータのスクリプト内 $IdleHours / $MinUptimeMinutes を編集 → gcloud compute instances add-metadata ... で再投入 → 次回起動時に反映

設定の詳細を見るコマンド:

bash
gcloud compute instances describe flutter-windows-dev \
  --zone=asia-northeast1-c --project=uzu-lab \
  --format="value(metadata.items[windows-startup-script-ps1])"