それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

iOS Safari/webkitをWindowsでデバッグするには

iOS Safariをウインドウズでデバッグするには

急ぐ人はパッケージを入れる

急ぐ人は、inspect.dev を体験版で入れるといいです。 https://inspect.dev/

f:id:takuya_1st:20220131212149p:plain:w200

ただし、有効期限はきつい。再登録しまくる羽目になる。

remotedebug-ios-webkit-adapter は同じ作者なのですが、こっちを買えということらしい。タマにしか使わないには高すぎるんだ。

時間がありコマンドが扱えるなら

コマンドが扱えるなら、inspect.dev の元になった remotedebug-ios-webkit-adapter がまだ公開されているので、コマンドからインストールすれば無料で動かせます。

iOS側の準備とWindowsとの接続

どのツールを使うにしても iTunesでデバイスを認証している必要がある。 USBでiPhoneを接続する。

f:id:takuya_1st:20220131212222p:plain

iOS Safariデバッグを有効にする

設定 → Safari → Advanced(最下部)→  Web Inspector → 有効

f:id:takuya_1st:20220131212242p:plain:w200

npm ツールを使う。

ツールを都度都度入れるのは不便

inspect.dev はたしかに便利なツールだけど、無料トライアル期間が短いし、何度も無料体験に登録とか、面倒くさいですよね。

remotedebug-ios-webkit-adapter はまだ動くので、そっちを使う。

remotedebug_ios_webkit_adapter には、ios_webkit_debug_proxyが必要なのでインストールする

npm を使うとまだ動く。動いたので、しばらくそちらを使うことにする。

scoop のインストール

PowerShellで操作します、管理者権限はいりません。

リモート・コードの許可

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

scoop をインストールする

Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')

scoop は User/takuya/scop にインストールしてます。

インストール

nodejs/npm/npx をインストール

scoop をnpm で入れる

scoop install nodejs

f:id:takuya_1st:20220131212314p:plain

scoopを使うメリット

scoopで入れるメリットはPATH設定をやってくれること。

そのままPATH設定をやってくれるので、コマンド関連はscoopを使うと嬉しい。

PS C:\Users\takuya> $env:path.split(";")
C:\Users\takuya\scoop\apps\nodejs\current\bin
C:\Users\takuya\scoop\apps\nodejs\current
C:\Users\takuya\scoop\shims

npm / nodejs / npx などまとめてインストールしてPATH通してくれるので手軽でいい。

ios-webkit-debug-proxyを準備

scoop bucket add extras
scoop install ios-webkit-debug-proxy

これもPATHを通してくれるので考えることは少なくていい。

npm i でパッケージをインストール

scoopのおかげで、npm が使えるので、ぱぱっとインストール

mkdir tmp
cd tmp 
npm install remotedebug-ios-webkit-adapter

起動する

cd tmp 
npx remotedebug-ios-webkit-adapter 

f:id:takuya_1st:20220131212352p:plain

(上記はパワーシェルじゃなくて、cmd.exeでやってみています。PATHちゃんと通してくれるので、インストール後はcmd.exeでもいいですね)

初回起動時は、リッスンに関するパーミッションを確認される。

f:id:takuya_1st:20220131212406p:plain

Chromeで接続する。

chrome://inspect/#devicesを開いて、ポート設定をする。

f:id:takuya_1st:20220131212434p:plain

起動時に指定されたポート設定

起動ログからポートがわかるので、localhost:9000 を指定する。

f:id:takuya_1st:20220131212457p:plain

inspectしたいタブを選ぶ

ターゲットに出てくるので、それを選べばデバッグスタート

f:id:takuya_1st:20220131212529p:plain

inspect画面が出てくる。

見慣れたInspect画面が出てくる。

f:id:takuya_1st:20220131212549p:plain

要素を選択する

右側の「Elements(要素)」から、いつもの通り、要素を選択すると。 f:id:takuya_1st:20220131212636p:plain

注意。要素選択ツールは動かない。

Chromeの要素を選択(f:id:takuya_1st:20220131212730p:plain ) は使えません。

npm のアプリ側が例外を吐いて落ちます。

iOS safari側にレスポンスがある。

iOSSafari側(Webkit系の画面)にレスポンスがあり、どの要素をツリーから選んでいるかひと目で分かるようになる。

f:id:takuya_1st:20220131212753p:plain:w200

便利。これでFormの変数名とかわかります。

後片付け

使い終わったら、後片付けしとく

cd tmp 
del *
cd 
scoop uninstall scoop
del /Users/takuya/scoop

scoop つかうとキレイに消せるので便利ですね。

ios-webkit-debug-proxy はプロセスに残る可能性があるのでChrome終了後にちゃんと終了しているか確認しておく。

inspect課金なら mac買った方が早いのでは

年6000円の、inspect.dev をサブスクリプションして数年間3-4年使うとか考えると、mac mini 買ったほうが楽だよなぁ。

いまは、npm で無料で動くけど、remotedebug-ios-webkit-adapter の開発者は冒頭の有料版にシフトしちゃったので、今後iOSバージョンが上がった後に動くかどうかはわからないので辛いところ。

参考資料