はじめに
こんにちは、KUDs です。
今回は、「最近(2024年下期頃)になって突然 Tampermonkey のスクリプトが動作しなくなった」という事象の原因と対処方法について解説します。
私は Tampermonkey で Twitter (X) 片思い表示 というスクリプトを公開しています。
紹介記事は以下参照。
上記スクリプトをご利用いただいているユーザさんから「最近片思い表示できなくなった」というお声を頂くようになりました。
調べてみたところ、皆様同一の事象でした。
X (旧 Twitter ) 側の仕様変更等ではなく、 Tampermonkey 及びブラウザ側の問題ということが分かりました。
つまり「Twitter(X)片思い表示」だけでなく、他のスクリプトも同じ理由で動作していない状況になるため、影響範囲でかそうだなと思いまとめることにしました。
それでは早速対処方法から始めましょう。
対処方法
結論、「デベロッパーモードを有効にしましょう」です。
事象発生したユーザの共通点
Tampermonkey を利用できなくなったユーザさんに共通していた点は、ブラウザ右上の拡張機能ボタン → Tampermonkey を選択した際に以下のようなポップアップが表示されていた点です。
UserScript の注入を許可するには、開発者モードを有効にしてください。
詳細はこちらをクリックしてください。
上記の案内の通り、開発者モード(デベロッパーモード)が無効になっていることが、スクリプトが動作しない理由です。
デベロッパーモードを有効にする手順
ポップアップの「こちら」にもデベロッパーモードを有効にする手順はありますが、簡単にまとめると以下です。
- ブラウザのアドレスバーに「 chrome://extensions/ 」と入力する
- 画面右上のデベロッパーモードのトグルボタンをオンにする
これでデベロッパーモードが有効になり、Tampermonkey のスクリプトが動作するはずです。
根本的な原因
Tampermonkey でスクリプトが動作しなかった原因は、「デベロッパーモードを有効にしていないから」でした。
では、なぜデベロッパーモードを有効にしなければならないのでしょうか。
デベロッパーモードの有効化が必須な理由
先ほどの Tampermonkey FAQ ページ に記載があります。
A209 ChromeベースのブラウザでTampermonkey拡張機能を使用するユーザーにとって、開発者モードを有効にすることは、Manifest V3のアップデートにより導入された必須条件です。
開発者モードを有効にする理由は?
https://www.tampermonkey.net/faq.php?version=5.1.1&ext=dhdg#Q209
開発者モードは、ユーザースクリプトの二段階のユーザー認証が必要とされるため必須です:userScripts
の権限と開発者モードのオプションです。userScripts
の権限だけでは、インストール時にユーザーに警告は表示されません。したがって、この追加のステップは、Googleがユーザーにより情報に基づいた決定をしてもらうための意図を反映している可能性があります。
Tampermonkey 側の言い分をざっくりまとめると、「Google 側の Manifest V3 ではデベロッパーモードを有効化が必須だからしょうがないでしょ」という感じです。
Google Chrome の Manifest V2 段階的廃止とは
Google では Manifest V2 の段階的廃止を発表、開始してます。
Manifest V2 の段階的廃止を開始
2024年6月21日金曜日2023 年 11 月に Chrome の Manifest V2 拡張機能の段階的廃止についてスケジュールをお知らせしました。コミュニティの進捗状況とフィードバックに基づき、この変更を予定どおりにロールアウトいたします。
Manifest V3 の目標は常に明確で、既存の機能を保護することと、拡張機能エコシステム全体のセキュリティ、プライバシー、パフォーマンス、信頼性を向上させることです。コミュニティの皆さんの協力とフィードバックに感謝いたします。おかげさまで、拡張機能プラットフォームを改善し続けることができています。
…(中略)…
今後に向けて
6 月 3 日以降、Chrome ベータ版、Dev 版、Canary 版チャンネルでは、拡張機能管理ページ(chrome://extensions)にアクセスしたタイミングで、Manifest V2 拡張機能をインストールしたままのユーザーに警告バナーが表示され始めます。これにより、インストールしている拡張機能に、まもなくサポートが終了するもの(Manifest V2)があることをお知らせします。また、おすすめバッジの付いた拡張機能のうち、Manifest V2 を引き続き使っているものはバッジを失います。
その後数か月以内に、これらの拡張機能は徐々に無効になる予定です。ユーザーは Chrome ウェブストアに誘導され、無効になった拡張機能の代替となる Manifest V3 の拡張機能がユーザーに推奨されます。しばらくの間は、Manifest V2 拡張機能が無効になっても、オンに戻すことができますが、将来的にこの切り替え機能も削除されます。
…
https://developers-jp.googleblog.com/2024/06/manifest-v2-phase-out-begins.html
ざっくり言うと「セキュリティ諸々強化のために 2024 年 6 月 3 日以降、 MV2 → MV3へ移行していくよー」ということです。
上記は Google Developers Blog ですが、ドキュメントでも記載がありますね。
2024 年 6 月 3 日: Manifest V2 の段階的廃止が開始されます。
https://developer.chrome.com/docs/extensions/develop/migrate/mv2-deprecation-timeline?hl=ja
Tampermonkey の Manifest V3 対応について
Google Chrome が段階的廃止をするということで、Tampermonkey は Manifest V3 への対応を行いました。
それが Tampermonkey Version 5.2.0 以降です。
以下のリリースノートに記載があります。
5.2.0
2024-06-02Chrome
Switched to Manifest V3…(中略)…
MV3
https://www.tampermonkey.net/changelog.php?more=true&show=dhdg#v5.2.0#v5.2.0
Manifest v3 requires a different workflow when installing a userscript
Note: you can restore the old behavior, by changing Userscript URL detection to Legacy
本当に?と思ったので手元で実際に確認してみました。
[kuds@local-pc ~/AppData/Local/Google/Chrome/User Data]$ grep "version" Profile\ 13/Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo/5.2.0_0/manifest.json
"manifest_version": 3,
"minimum_chrome_version": "120",
"version": "5.2.0"
[kuds@local-pc ~/AppData/Local/Google/Chrome/User Data]$ grep "version" Profile\ 9/Extensions/dhdgffkkebhmkfjojejmpbldmpobfkfo/5.1.1_5/manifest.json
"manifest_version": 2,
"minimum_chrome_version": "71.0.0.0",
"version": "5.1.1"
本当でした。
まとめ
まとめます。
- Google Chrome が 2024/06/03 以降に Manifest V2 を段階的に廃止開始
- Tampermonkey が Version 5.2.0 にて Manifest V3 へスイッチ
- 「デベロッパーモードを有効」が必須要件となり、多くのユーザが困惑
といった感じです。
その他
「デベロッパーモード有効が組織によって禁止されているんですけど」
企業や学校によっては、セキュリティの観点からデベロッパーモードを有効にすることが禁止されていることもあります。
そのような人はどうすればいいのか。
「今は Tampermonkey Legacy を使用してください。」だそうです。
開発者 Jan Biniok 氏は以下のように申しております。
It is very annoying that you need developer mode now since my school chrombook has locked developer mode therefore making me unable to use tampermonkey
(訳)私の学校の Chromebook は開発者モードをロックしているので、tampermonkey を使えません。
Please use Tampermonkey Legacy for now, but keep in mind that Chrome’s support for it will end in 2025.(訳)今は Tampermonkey Legacy をお使いください。ただし、Chromeのサポートは2025年に終了することを覚えておいてください。
https://github.com/Tampermonkey/tampermonkey/issues/2018
「ユーザから問い合わせが殺到してるんですけど」
私から提案できることはないのですが、GitHub Issue で以下の議論が展開されておりましたので参考までに。
問題提起者This definitely is a huge problem.
(訳)
こいつは間違いなく大きな問題だぜ。回答者Do note that Developer Mode is really easy to turn on. It doesn’t mean using Chrome Dev. It just means that, after you install Tampermonkey, you’ll need to open your Extensions page and click the toggle at the top of the screen.
(訳)
開発者モードをオンにするのはとても簡単だということを知っておいてください。これは Chrome の Dev 版を使うという意味ではありません。Tampermonkey をインストールしたら、拡張機能のページを開いて、画面上部のトグルをクリックするだけです。問題提起者
I know how to turn Dev mode on. But I am imagining how much pain would be to explain every user why my scripts aren’t working anymore.There’re older women between them, to make script work for them I organized video-calls in messenger and ordered which buttons must be pressed.
You think only geeks are affected? Ones that can fix everything in a couple of minutes? No, the huge pain is coming because of some Chrome idiots.
(訳)
開発者モードをオンにする方法は知っているさ。でも、スクリプトがなぜ動かなくなったのかをユーザー一人ひとりに説明するのがどれだけ大変か想像してみな。ユーザーの中には年配の女性もいて、スクリプトを動かすためにメッセンジャーでビデオ通話をして、どのボタンを押すべきか逐一指示しなければならなかったんだぜ。
影響を受けるのはすぐに問題を解決できる「ギーク」だけだと思うかい?そんな人ばかりじゃないんだ。Chrome のバカたちのせいで、大きな苦労が待っているんだ。
回答者In that case, I hope that Tampermonkey itself will tell people that they need to turn on Developer mode and how to do so. The extension won’t work without it, so it would make sense to warn the user every time the extension is loaded. I’m actually relieved that the requirement is so small. The MV3 people really wanted to not allow any external scripts to work at all. A simple toggle that you already have to enable to use unsigned extensions is thus a welcome compromise.
(訳)
それなら、Tampermonkey 自身がユーザーに開発者モードをオンにする必要性を通知し、その方法も教えるといいですね。拡張機能はそれがないと動作しないので、毎回の起動時にユーザーに通知するのが理にかなっていると思います。むしろ、この要件がそれほど小さいものであることに安堵しています。MV3 を推進している人たちは、外部スクリプトを一切許可しないことを望んでいたので、未署名の拡張機能を使うためにオンにしなければならない簡単なトグルがあるのは妥協としては歓迎すべきでしょう。
問題提起者OK, I understand your point. Google forcing MV3 with all its totalitaristic claims, removing ad-blockers and all realized that it’s a bit too much and decided to reduce their appetites. And we all must be glad for this compromise. All hail to Google and MV3 for they decided to cook frog slowly to reduce protests and increase probability of success.
(訳)
なるほど、あんたの言いたいことはわかった。Google は MV3 の全体主義的な方針で、広告ブロッカーなども排除しようとしたが、それがやりすぎだと気付いて食欲を少し抑えたんだな。そして私たちはこの妥協をありがたく受け入れなければならないと。万歳、Google と MV3 !彼らは抗議を減らし、成功の確率を上げるためにゆっくりとカエルを煮ることを決めたんだな。https://github.com/Tampermonkey/tampermonkey/issues/2018Jan Biniok 氏
> In that case, I hope that Tampermonkey itself will tell people that they need to turn on Developer mode and how to do so.Yes, there will by a notification when the action menu is open and also at the options page, which provides a link to the FAQ entry that explains how to enable it.
> A simple toggle that you already have to enable to use unsigned extensions is thus a welcome compromise.
Yes, but developer mode doesn’t seem to be the right one here as it also enables other developer features. Userscript manager users, are not necessarily developers. Also developer mode might be forbidden via policy at some companies.
(訳)
> 「それなら、Tampermonkey自身がユーザーに開発者モードをオンにする必要性を通知し、その方法も教えるといいですね。」
はい、アクションメニューが開かれたとき、またオプションページでも通知を表示します。そして、開発者モードを有効にする方法を説明するFAQへのリンクも追加する予定です。
> 「未署名の拡張機能を使うためにオンにするだけのシンプルなトグルは、歓迎すべき妥協案ですね。」
そうですね。しかし、開発者モードはここで求められているものとしては適切ではないように思います。というのも、開発者モードをオンにすると、他の開発者向け機能も有効化されてしまうからです。ユーザースクリプトマネージャのユーザーが必ずしも開発者とは限りませんし、企業のポリシーによっては開発者モードが禁止されている場合もあります。
実に興味深い議論です。
「ゆでガエル(ボイルド・フロッグ)理論で皮肉めいた比喩が炸裂しております。
※ 不要な解説: 水の温度を少しずつ上げていくと、カエルはその変化に気づかないままゆっくりと弱っていき、最終的に煮られてしまうという比喩です。同様に、Google も変化を少しずつ導入することで利用者の抵抗を減らし、最終的には自分たちの意図する仕様に移行させようとしているという皮肉でしょうね。
「不便すぎるので異議申し立てしたいんですけど」
開発者へ異議申し立てしたい場合は、先ほどの GitHub Issue にてコメントを残しましょう。
もしくは、Issue 内でも言及があった、以下のスレッドで発言するかですね。
ただ、最近はあまり活発に議論されてなさそうですね。
Questions re: chrome.userScripts documentation
…(中略)…
So what is the state on this now? Nothing has happened for MONTHS. MV3 is basically here and we still don’t have a proper solution for userscripts.
https://groups.google.com/a/chromium.org/g/chromium-extensions/c/bdnjlMNzQqA/m/Kotb3-eVAAAJ
You really don’t give a shit, do you?
さいごに
最後に本記事のまとめです!
- 事象
- 「最近(2024年下期)になって Tampermonkey のスクリプトが動かなくなった!」
- 解決策
- 「Chrome デベロッパーモードを有効にしましょう!」
- 原因
- Google Chrome が 2024/06/03 以降に Manifest V2 を段階的に廃止開始
- → Tampermonkey が Version 5.2.0 にて Manifest V3 へスイッチ
- → 「デベロッパーモードを有効」が必須要件となり、多くのユーザが困惑
以上です!
コメント