JavaScript
Chrome
ServiceWorker
PWA

Chromeを使うなら、必ずServiceWorkersを無効化しよう

ServiceWorkersというAPIが存在します。
ブラウザをフルスクリーン表示したり、デスクトップにアイコンを作成したり、PUSH通知を行ったり、バックグラウンドでJavaScriptを動作させたりといった機能を提供します。1

見てのとおりユーザには何一つ利のない機能なので、必ず無効化しましょう。

なに、動かなくなるサイトがあって困る?
大丈夫。
ServiceWorkersがないと動かないサイトは、存在そのものが不要なサイトです。

手順

PC版Chrome

無効化

URLにchrome://flags/と入力すると、全面英語の設定画面のようなものが出てきます。
最上部の検索欄に「Worker」および「PWA」「Progressive」と入力し、出てきた項目を全てDisabledに変更します。
右下あたりに「RELAUNCH NOW」というボタンが出てくるので、それを押してChromeを再起動したら無効化の完了です。

01.png
02.png
03.png

侵入者の排除

せっかく無効化はしたのですが、それより前にインストールされてしまってたServiceWorkersは、なんと今後も変わらず動き続けてしまいます。
そのため、既存のServiceWorkersを削除しなければなりません。
まずF12なりなんなりを押して開発者ツールを起動します。
「Application」→「Service Workers」→「Service Workers from other domains」を選択します。
死ぬほど大量のService Workersに汚染されているので、ひたすら「Unregister」を連打して全てを消去しましょう。
一括削除する手段は用意されていません。

04.png

Youtubeが残る件

Google関連サイトのServiceWorkersは、無効化することができません。
たぶんハードコードされてる。
汚いなさすがGoogleきたない。

Android版Chrome

最近のPCは処理能力に余裕があるので、こっそり裏でマイニングされてでもないかぎりServiceWorkersが動いてること自体気付かないかもしれません。
直接的にバッテリーとギガが減る被害の出るAndroidのほうが、より削除の重要性は高いです。

無効化

PC版とだいたい同じです。
chrome://flags/にアクセスし、「Worker」「PWA」の全項目をDisabledにしましょう。
「Progiressive」は現在のAndroid用Chromeには無いようです。

11.jpg
12.jpg

侵入者の排除

なんとAndroid版Chromeは、それ単体では開発者ツールを開くことができません。
PCから作業する必要があります。
AndroidのChromeで開発者ツールを使う方法などを参考に、操作を行いましょう。

・PCにUSBドライバをインストールする。
・Androidで、「設定」→「開発者向けオプション」→「USBデバッグ」をオンにする。
・スマホをUSBケーブルでPCに繋ぐ。アクセス許可アラートが出るので許可する。
13.jpg
・PCでchrome://inspect/#devicesにアクセスする。
・すると接続されたAndroid版Chromeが表示され、そこから開発者ツールにアクセスすることができる。
・あとはPC同様に不要なServiceWorkersを削除する。

21.png

…あれ?Android版Chromeが出てこないんだけど?
なしてだべさ。

その他

本当に効いてるのか?

数日たって開発者ツールを開いてみたら、削除したはずのServiceWorkers共がしれっと再侵入していた。

31.png

いったいどういうこと?
chrome://flags/の設定、本当に効いてるの???

おわりに

俺のChrome - クソうざい通知と購読を葬るという投稿で知ったのですが、タイトルがわかりにくかったのと、スマホでののやり方が書いてなかったのを追加してリライトしたものです。

ただ、追加したと言いつつスマホ版は結局できてなかったり、PC版も再侵入されてるので結局有効なのかどうかわからないとかいう残念な結果に。
誰か原因と理由を教えてください。


  1. ServiceWorkers以外の話も混ざっているが、まあ同じようなものだ。