Newer
Older
PixelPaintWar / docs / ENV_04_スマホ実機デバッグ手順.txt
========================================================================
スマホ実機デバッグ手順 (Smartphone Debugging Guide)
========================================================================


1. 概要 (Overview)
------------------------------------------------------------------------

1-0. 目的
    本ドキュメントは,開発中のWebゲーム「Pixel Paint War」をスマホ実機で動作
    確認するための手順書である.
    学校や組織のネットワーク(Fortinet等)による制限や,WSL2特有のネットワー
    クの壁を回避するため,トンネリングツール「ngrok」を使用した外部公開手順
    を採用する.

1-1. 前提条件
    ・WSL2 (Ubuntu等) 上で開発環境が構築済みであること.
    ・ngrok の公式サイトでアカウント作成済みであること.
    ・Authtoken (認証トークン) が取得済みであること.


2. ngrokのインストール (Installation)
------------------------------------------------------------------------
Linux (WSL2) 環境へのインストール手順を記述する.
※ apt パッケージマネージャ経由ではエラーが発生しやすいため,バイナリ直接
インストール方式を採用する.

2-1. ダウンロードと配置
    1. 圧縮ファイルのダウンロード
        ターミナルで以下のコマンドを実行し,Linux版バイナリを取得する.
        $ wget https://bin.equinox.io/c/bNyj1mQVY4c/ngrok-v3-stable-linux-amd64.tgz

    2. 解凍とインストール
        ダウンロードしたファイルを解凍し,実行パスの通ったディレクトリに移動する.
        $ sudo tar xvzf ngrok-v3-stable-linux-amd64.tgz -C /usr/local/bin

    3. 動作確認
        バージョン情報が表示されるか確認する.
        $ ngrok --version
        ※ "ngrok version 3.x.x" 等と表示されれば成功である.

2-2. アカウント認証 (Authentication)
    ngrok のダッシュボード (https://dashboard.ngrok.com/get-started/your-authtoken)
    からトークンを確認し,以下のコマンドで設定する.

    ■ トークンの登録
        $ ngrok config add-authtoken [あなたのAuthtoken]
        ※ "[あなたのAuthtoken]" の部分は実際の文字列に置き換える.


3. デバッグ実行手順 (Execution Steps)
------------------------------------------------------------------------

3-1. Client設定の修正 (Update Configuration)
    開発サーバーが外部 (ngrok) からの接続を受け付けるよう,設定を変更する.

    ■ package.json の編集
        `apps/client/package.json` を開き,`scripts` ブロックの `dev` コマンドに `--host` オプションを追加する.

        [修正前]
        "dev": "vite"

        [修正後]
        "dev": "vite --host"

3-2. 開発サーバーの起動 (Launch Dev Server)
    まず,ローカル環境でアプリケーションを起動する.

    ■ Clientアプリの起動
        プロジェクトルートで以下のコマンドを実行する.
        $ pnpm --filter client dev
        ※ ターミナルに `Network: http://x.x.x.x:5173/` と表示されれば設定成功である.

3-3. ngrokによる公開 (Expose via ngrok)
    新しいターミナルウィンドウを開き,以下の手順でトンネルを作成する.

    1. ngrokの起動
        Vite の Host ヘッダーチェックを回避するため,オプションを付与して実行する.
        $ ngrok http 5173 --host-header="localhost"

    2. 公開URLの確認
        起動後に表示されるステータス画面から,"Forwarding" の行を確認する.
        
        Session Status                online
        Account                       User Name (Plan: Free)
        Forwarding                    https://xxxx-xxxx.ngrok-free.app -> http://localhost:5173
        
        上記の "https://xxxx-xxxx.ngrok-free.app" が公開URLとなる.

3-4. スマホからのアクセス (Access from Smartphone)
    1. URLの共有
        発行された URL をスマホに送信する(QRコード作成ツールやチャット等を使用).

    2. ブラウザでの確認
        スマホのブラウザ(Chrome,Safari等)で URL にアクセスする.
        タイトル画面が表示されれば接続成功である.


4. 注意事項とトラブルシューティング (Notes & Troubleshooting)
------------------------------------------------------------------------

4-1. Freeプランの制限
    ・同時接続数: Freeプランでは同時に1つのポートしか公開できない.
    ・Client/Server構成の注意: 
        本手順ではフロントエンド (Port 5173) のみ公開している.
        バックエンド (Port 3000) への WebSocket 通信が必要な場合,ゲーム開始時
        に接続エラーとなる可能性がある.
        - 対策: UIレイアウトや描画負荷の確認を主目的として使用する.

4-2. エラー対応
    ■ "ERR_NGROK_3200" (Tunnel already open)
        ・既に別のターミナルで ngrok が起動している場合に発生する.
        - 対策: 起動中の ngrok を終了 (Ctrl + C) してから再実行する.

    ■ "Invalid Host Header" (画面が真っ白になる)
        ・Vite が不正なドメインからのアクセスを拒否している.
        - 対策: 起動コマンドに `--host-header="localhost"` が含まれているか再確認する.

    ■ "ERR_CERT_AUTHORITY_INVALID" (Fortinet等の警告)
        ・ngrok を使用せずローカルIPで接続しようとした場合に,組織内ネットワーク
          のセキュリティ機器にブロックされる現象である.
        - 対策: 必ず本手順の ngrok 経由 (https) で接続する.