スマホで開いているWebページをデバッグするお話

# はじめに
皆さん初めまして。
株式会社トラストバンクの[地域通貨プラットフォーム chiica(チーカ)](https://chiica.jp/)でリードエンジニアをしています清野です。

[トラストバンク Advent Calendar 2024](https://qiita.com/advent-calendar/2024/trustbank) 2日目です。

今日は、Android, iOS のブラウザで開いている Web ページのデバッグ方法についてお話しようと思います。

普段 Web ページの開発している際、PC ブラウザのデベロッパーツール(Safari だと Web インスペクタ)はよく使うと思います。
通常、Android, iOS のブラウザでは使えない機能なんですが、PC と連携することでスマホでもデベロッパーツールが使えるようになるよってお話です。

# 前提
スマホブラウザでデベロッパーツールを使うための前提条件をまとめました。

|OS|スマホブラウザ|PCブラウザ|条件|
|---|---|---|---|
|Android|Chrome|Chrome|・開発者向けオプションが有効になっていること<br>・USB デバッグまたはワイヤレスデバッグが有効になっていること<br>・ワイヤレスデバッグを使う場合は、adb が PC にインストールされていること|
|iOS|Safari|Safari|・PC が macOS であること<br>・PC 側の Safari で開発メニューが有効になっていること<br>・USB ケーブルで PC と iPhone が接続されていること<br>・iOS 側の Safari の設定で Web インスペクタが有効になっていること|
|iOS|Chrome|Safari|・PC が macOS であること<br>・PC 側の Safari で開発メニューが有効になっていること<br>・USB ケーブルで PC と iPhone が接続されていること<br>・iOS 側の Chrome の設定でウェブインスペクタが有効になっていること|

# セットアップ手順
それでは早速、セットアップ手順に入りたいと思います。
お手元の環境に合わせてセットアップの手順をご確認ください。

[Android のセットアップ手順](#android-のセットアップ手順)
[iOS のセットアップ手順](#ios-のセットアップ手順)

## Android のセットアップ手順
※Android 13 で検証した手順となります。お手元の端末の OS バージョンによっては手順に若干の差異が生まれる可能性がございます。あらかじめご了承ください <(_ _)>

### 開発者向けオプションを有効化する
Android 端末側で開発者向けオプションを有効化します。

1. 設定アプリを開く
1. デバイス情報の項目をタップ
1. ビルド番号の項目を連打
1. 「開発者向けオプションが有効になりました」のトーストが表示されたら完了

<img width="180" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3940889/948e25d7-12c3-2bc3-cde6-1efac0d9cee8.png"/>

### USB デバッグまたはワイヤレスデバッグを有効化する
両方有効化しても問題ありませんが、どちらかが有効化されていればデベロッパーツールは使えるようになりますので、ご自身の環境に合わせて選択してください。

#### USB デバッグを有効化する
USB ケーブルで Android 端末と PC を接続する場合のセットアップ手順です。

1. 設定アプリを開く
1. システムの項目をタップ
1. 開発者向けオプションの項目をタップ
1. USB デバッグのトグルボタンをタップして有効化する
1. Android 端末と PC を USB ケーブルで接続する
1. Android 端末側で PC に USB デバッグを許可するかの確認ダイアログが表示されるので許可をタップ
1. 完了
<img width="180" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3940889/e9e3a28e-71be-4abd-c627-f9c69ec296ac.png"/>

※Android OS のバージョンによっては、さらに USB の設定を変更する必要があります。開発者向けオプションの画面で「USB 設定」という項目がありますので、こちらをタップして「ファイル」や「ファイル転送」を選択してください。

#### ワイヤレスデバッグを有効化する
スマホと PC が同じ WiFi(LAN) に接続している場合のセットアップ手順です。
この手順では、adb(Android Debug Bridge) という CLI ツールを使います。
[こちら](https://developer.android.com/tools/releases/platform-tools?hl=ja#downloads)の公式ページより adb の実行ファイルを含む SDK Platform Tools の zip ファイルをダウンロードして解凍したディレクトリの PATH を通してください。

1. 設定アプリを開く
1. システムの項目をタップ
1. 開発者向けオプションの項目をタップ
1. ワイヤレスデバッグのトグルボタンをタップして有効化する
1. Android 端末側で接続中の WiFi ネットワークでワイヤレスデバッグを許可するかの確認ダイアログが表示されるので許可をタップ<br><img width="180" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3940889/43dc2957-98fa-5020-fe02-5986aadfa77c.png"/>
1. ワイヤレスデバッグの項目をタップ
1. ペア設定コードによるデバイスのペア設定の項目をタップ
1. 表示されたダイアログの内容を確認
1. PC でターミナルを起動して次のコマンドを実行<br>`adb pair <上記で確認した IP アドレス>:<上記で確認した port 番号> <上記で確認したペア設定コード>`
1. Successfully paired to ~~~ の出力を確認
1. 完了

### Android のセットアップ完了
ここまで来れば Android のセットアップは完了です。お疲れ様でした。
Android のみの方は[デベロッパーツールの利用方法](#デベロッパーツールの利用方法)に進んでください。
iOS もやりたいよって方は、このまま進んでください。

## iOS のセットアップ手順
### 共通セットアップ手順
#### PC(macOS) の Safari で開発メニューを有効化する
Web エンジニアならすでに有効になってると思いますが、有効になってない人は以下の手順で設定してください。

1. Safari を立ち上げる
1. 設定を開く
1. 詳細タブを開く
1. Webデベロッパ用の機能を表示にチェックをつける
1. ステータスバーを確認して開発メニューが表示されていることを確認
1. 完了
<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3940889/da8f2d9e-7c9c-4500-4194-457172a6010e.png"/>

#### PC(macOS) と iPhone を USB ケーブルで接続する
iOS の場合、WiFi 経由でのデバッグはできないはずなので、USB ケーブルで接続してください。

### iOS(Safari) のセットアップ手順

1. 設定アプリを開く
1. Safari の項目をタップ
1. 詳細の項目をタップ
1. Web インスペクタのトグルボタンをタップ
1. 完了

### iOS(Chrome) のセットアップ手順

1. Chrome アプリを開く
1. 右下の 3 点リーダをタップ
1. アイコン一覧の一番右にある設定をタップ<br><img width="180" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3940889/adb8c9e2-91ef-3ea1-1165-349f731a9f7c.jpeg">
1. コンテンツの設定をタップ
1. ウェブインスペクタの項目をタップ
1. ウェブインスペクタのトグルボタンをタップ
1. Chrome アプリをタスクから削除して再度開く
1. 完了

### iOS のセットアップ完了
ここまで来れば iOS のセットアップは完了です。お疲れ様でした。
[デベロッパーツールの利用方法](#デベロッパーツールの利用方法)に進んでください。

# デベロッパーツールの利用方法
## Android
Android 端末で Chrome を立ち上げてデバッグしたい Web ページを開いておき、PC の Chrome で `chrome://inspect/#devices` を URL バーに入力して開くと、以下の画像のように接続中の Android 端末と Android 端末の Chrome アプリで開いている Web ページの一覧が出ます。
![スクリーンショット 2024-11-22 4.49.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3940889/11662912-e0d3-4a24-2a20-7f8f9141f1a8.png)

この状態で、デバッグしたい Web ページの inspect のリンクをクリックすると以下の画像のようにいつも皆さんが見ているデベロッパーツールが表示されます！:clap::clap::clap:
![スクリーンショット 2024-11-22 4.56.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3940889/2688cf58-20c6-6056-2ae4-94f0e7451576.png)

## iOS
Safari もしくは Chrome を立ち上げてデバッグしたい Web ページを開いておき、PC(macOS) の Safari で「開発」→「接続している iPhone 名」→「デバッグしたい Web ページ」の順に進んで貰えば
![スクリーンショット 2024-11-22 5.27.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3940889/18138e1b-eee7-eecd-7e6f-cd1f2c7c6df9.png)
はい！こちらも以下の画像のようにいつも皆さんが見ている Web インスペクタが表示されます:clap::clap::clap:
![スクリーンショット 2024-11-22 5.28.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3940889/2e51d1fc-085c-f284-762f-82c8584954e0.png)

# WebView 絡みのおまけ
## 今回はブラウザアプリにフォーカスしたけど...
実は、同じ手順でセットアップを完了させてしまえば、WebView で開いている Web ページも同じようにデバッグできます！
ただ、注意事項があります。
- Android
    - 使えるのは Android 4.4 以上の端末
    - Debug ビルドのアプリであること
    - WebView 側の設定でデベロッパーツールでのデバッグを有効化するコードを仕込む必要がある
        ```
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            WebView.setWebContentsDebuggingEnabled(true);
        }
        ```
- iOS
    - Debug ビルドのアプリであること

アプリでも開く Web ページとか開発している人は、是非アプリを開発している人に共有して準備してもらってください！

## ハイブリッドアプリの開発とかやってると...
WebView に独自の User-Agent を設定していることがほとんどです。
Web ページ側で User-Agent 見てブラウザからのアクセスなのかアプリからのアクセスなのかの判定に使ってたりしますよね？
これ、PC ブラウザでも User-Agent を書き換えることで再現できるんですよ。
Chrome ならデベロッパーツールの Network Conditions から、Safari なら Web インスペクタの左上の四角いアイコンから利用できる設定の中に User-Agent を書き換える項目があって、両方とも「その他」を選択すると自由入力の入力欄が出るはずなので、そこに WebView で設定している User-Agent を入れてリロードすれば、アプリで開いている時のみ表示しているボタンとか文言とか、逆にアプリでは表示しないヘッダー等の UI とかを PC ブラウザ上で反映させられます。
知らなかった人は、こちらもぜひ試してみてください。

# 最後に
久しぶりに記事書いたので、疲れました〜。
内容的には、いろんなところで書かれているものになりますが、改めて自分で検証しながらって言うのも大事ですね。
正直、iOS の Chrome も Safari で Web インスペクタを見ることができるっていうのは今回調べてみて初めて知りました。

[トラストバンク Advent Calendar 2024](https://qiita.com/advent-calendar/2024/trustbank)では、まだまだ記事を公開予定ですので、お楽しみに。

また、弊社トラストバンクでは様々な職種で絶賛採用中です！ 気になった方、是非お気軽に[Wantedly](https://www.wantedly.com/companies/trustbank/projects)からご連絡ください！

それでは、長文読んでくださりありがとうございました！またどこかでお会いしましょう:wave: