TampermonkeyでInspect Elementの変更をローカルで永続化する方法
TL;DR
Tampermonkeyはユーザースクリプトをブラウザ上で自動実行し、Inspect Elementで行う一時的な変更をローカルで「ほぼ永続的」にできます。簡単なインストールとスクリプト作成で、共有ボタンの追加や表示微調整などを自動化できますが、サイトの利用規約とプライバシーに注意してください。

Inspect Element(要素の検査)は、ブラウザでHTML/CSS/JavaScriptを一時的に編集できる便利なツールです。しかし、ページを更新すると変更は消えます。ローカルで永続的に(=各ページを開くたびに自動的に再適用される形で)変更したい場合は、Tampermonkeyのようなユーザースクリプトマネージャが有効です。
本記事は、Tampermonkeyの概要、導入手順、WhatsApp共有ボタンを例にしたスクリプト作成、注意点、テスト基準、代替手段やロール別チェックリストなどを含む包括的なガイドです。開発者だけでなく上級ユーザーにも役立つように平易な言葉で解説します。
重要用語(1行定義)
- ユーザースクリプト: ブラウザ上で特定のページに対して自動実行されるJavaScriptの断片。
Tampermonkeyとは
Tampermonkeyは、ユーザースクリプトを管理・実行するブラウザ拡張です。Chrome、Edge、Firefox、Opera、Safariなど主要ブラウザで利用できます。保存したスクリプトは、指定したページが読み込まれるたびに自動で実行され、見た目や動作をローカルで変更します。
主な用途例:
- 小さなUI改善(ボタン追加やスタイル調整)
- 既知の不具合に対する簡易的なパッチ
- サイトごとの自動処理(リンク整形・スクレイピングの補助など)
注意: スクリプトはローカルで実行されるだけで、元のサイトのソースは変更されません。
インストール手順
互換ブラウザがあれば、基本的にブラウザの拡張機能ストアからインストールします。手順は次の通りです。
- Tampermonkeyの公式ページにアクセスします。ページは自動的に現在のブラウザを検出します。
- 指定のブラウザタブ(Chrome / Microsoft Edge / Firefox / Safari / Operaなど)を選択します。
- 「Download(ダウンロード)」または表示される導線からブラウザストアに進みます。
- ストアのページで「Get from Store(ストアから入手)」や「Install(インストール)」をクリックして拡張機能を追加します。
- ブラウザの画面に従って許可を与え、インストールを完了します。
補足: Chromium系ブラウザ(BraveやVivaldiなど)を使っている場合はChromeウェブストアから追加できることが多いです。
使用前に考慮すべき点
- 利用規約: サイトによっては外部スクリプトの実行やUI改変を禁止していることがあります。規約を確認してください。
- セキュリティ: 不明な第三者が作成したスクリプトは実行しないでください。悪意あるコードは個人情報を送信したり、セッションを乗っ取る可能性があります。
- プライバシー: スクリプトが送信するデータ(URL、フォーム内容など)を確認してください。個人情報や機密情報に触れるスクリプトは避けましょう。
- 挙動の限定: Tampermonkeyはブラウザ側でのみ動作します。自分のローカル環境以外には影響を与えません。
重要: 常に最小権限の原則でスクリプトを作成し、不要なネットワーク通信や外部リソース依存を避けてください。
Tampermonkeyでの基本的な始め方
Tampermonkeyでは、新しいユーザースクリプトをダッシュボードから作成します。拡張機能アイコンから「Create a new script(新しいスクリプトを作成)」を選ぶと、エディタが開きます。
デフォルトのメタデータ(ヘッダー)は次のようになっています(例):
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match http://example.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Your code here...
})();メタデータの要点:
- @name: スクリプト名(Tampermonkeyダッシュボードに表示される)
- @match: スクリプトを適用するURLパターン(例: https://www.example.com/*)
- @grant: スクリプトが必要とするTampermonkeyの特殊API(必要がなければ none)
@matchや@includeで対象ページを絞ることが重要です。安易に「:///*」で広く適用すると予期せぬページで動作する可能性があります。
WhatsApp共有ボタンを追加するユーザースクリプト(実例)
目的: 記事末尾の共有ウィジェットにWhatsApp共有ボタンを追加するスクリプトを作成します。ここではあくまで例としてMakeUseOfのような記事ページを想定します。実際に使う場合は @match を自分が対象とするサイトに合わせてください。
概要と設計の判断
- 挿入対象: 既存の共有ウィジェット(例: div.sharing.bottom)にボタンを追加
- 表示の調整: CSSでボタンを見やすくする
- 動作: クリックでWhatsAppの共有URLを新しいタブで開く
- フォールバック: WhatsAppがない環境でもWhatsApp Webを使えるようにリンクを構成
次のコードは実用的なテンプレートです。コメントを日本語化してあります。
// ==UserScript==
// @name WhatsApp Share Inserter
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 記事の共有ウィジェットにWhatsApp共有ボタンを追加します。@matchは必要に応じて変更してください。
// @author
// @match https://www.makeuseof.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// ボタン要素を作成
const Whatsapp_btn = document.createElement('button');
Whatsapp_btn.type = 'button';
Whatsapp_btn.textContent = 'Share'; // 必要なら日本語に変更
Whatsapp_btn.setAttribute('aria-label', 'Share via WhatsApp');
// スタイルを適用(必要に応じて調整)
Whatsapp_btn.style.backgroundColor = '#075E54';
Whatsapp_btn.style.color = 'white';
Whatsapp_btn.style.border = 'none';
Whatsapp_btn.style.borderRadius = '5px';
Whatsapp_btn.style.padding = '8px 12px';
Whatsapp_btn.style.cursor = 'pointer';
Whatsapp_btn.style.display = 'inline-flex';
Whatsapp_btn.style.alignItems = 'center';
Whatsapp_btn.style.gap = '8px';
Whatsapp_btn.style.fontSize = '14px';
// アイコンを追加(SVGをインラインで持たせる)
const svgNS = 'http://www.w3.org/2000/svg';
const icon = document.createElementNS(svgNS, 'svg');
icon.setAttribute('width', '16');
icon.setAttribute('height', '16');
icon.setAttribute('viewBox', '0 0 24 24');
icon.setAttribute('fill', 'white');
// シンプルなチャット風のパス(装飾)
const path = document.createElementNS(svgNS, 'path');
path.setAttribute('d', 'M20 2H4a2 2 0 00-2 2v14l4-2h14a2 2 0 002-2V4a2 2 0 00-2-2z');
icon.appendChild(path);
Whatsapp_btn.prepend(icon);
// 共有ウィジェット(例: div.sharing.bottom)を取得
const sharingDiv = document.querySelector('div.sharing.bottom');
// 生成されるWhatsApp URL
function generateWALink() {
const title = encodeURIComponent(document.title || '');
const pageURL = encodeURIComponent(window.location.href);
// メッセージ形式: タイトル + URL
return `https://api.whatsapp.com/send?text=${title}%0A${pageURL}`;
}
// ボタンのクリックで新しいタブで開く
Whatsapp_btn.addEventListener('click', () => {
const whatsappURL = generateWALink();
// 新しいタブでWhatsAppの共有URLを開く
window.open(whatsappURL, '_blank', 'noopener');
});
// 共有ウィジェットが見つかれば追加
if (sharingDiv) {
sharingDiv.appendChild(Whatsapp_btn);
} else {
// もし見つからない場合は記事末尾などに挿入する処理を追加
const articleFooter = document.querySelector('article') || document.body;
articleFooter.appendChild(Whatsapp_btn);
}
})();上のスクリプトは次の特徴があります:
- ページタイトルとURLをメッセージに含める
- ボタンにSVGアイコンを埋め込み視認性を高める
- 共有ウィジェットが見つからない場合のフォールバックを実装
アイディアの拡張
- ボタンの右クリックでコピー機能を表示する
- ユーザー設定で言語やボタンテキストを切り替えられるようにする
- @matchを複数設定して複数サイトで使えるようにする
スクリプトの保存と実行
- Tampermonkeyのエディタでコードを貼り付けます。
- Ctrl + S(またはエディタ上の保存ボタン)で保存します。
- Tampermonkeyダッシュボードの「Installed Userscripts」でスクリプトを確認します。
- 対象ページを開いて、ボタンが表示され動作するか確認します。
動作確認のポイント:
- ボタンの表示位置が崩れていないか
- クリックで新しいタブが開き、WhatsAppの共有ページが表示されるか
- モバイルとデスクトップで期待通り動くか(特にWhatsAppのインテントURLは環境依存)
テストと受け入れ基準
スクリプトを配布・運用する前に、次の受け入れ基準を満たすことを確認してください。
- 表示: ページが読み込まれたあとにボタンが表示される
- 機能: クリックで正しいWhatsApp共有URLが生成される
- 非破壊: 既存のUIやフォームの動作を壊していない
- パフォーマンス: ページの読み込み時間やインタラクションに悪影響がない
- 安全性: 外部通信は必要最小限に留め、ユーザーの機密情報を送信しない
受け入れテスト例(簡潔):
- テストケース1: 記事ページAでボタンが末尾の共有ウィジェット内に追加される
- テストケース2: クリックで新しいタブにWhatsAppの共有画面が開く
- テストケース3: 別のページ(カテゴリ一覧など)でスクリプトが実行されない(@matchが適切に設定されている場合)
セキュリティとプライバシー注意事項
- 不明なスクリプトをインストールしない: ソース不明のコードは情報漏洩や不正操作のリスクがあります。
- ネットワーク通信の確認: スクリプトが外部サーバへデータを送信する場合、その目的と送信先を確認して許可するか判断してください。
- 権限の最小化: @grant や外部API呼び出しは必要最小限に留める。多くの権限を要求するスクリプトは避ける。
- ログと履歴: 自分で作成したスクリプトはバージョン管理を行い、変更履歴を残すとトラブルシュートが容易です。
法的注意: 個人データを扱う際は、地域のプライバシー規制(例: GDPR)に従ってください。ユーザーの同意なく個人を特定できる情報を収集・送信しないでください。
代替アプローチと比較
- ブラウザのブックマークレット: 単発のスニペットを実行する際に便利。ただし自動実行や複雑な管理には向かない。
- 独自ブラウザ拡張: より強力な権限と配布が可能。ただし開発コストとストア審査が必要。
- Greasemonkey: Firefox向けのユーザースクリプトマネージャ。Tampermonkeyとほぼ同等だが、UIやAPIの違いがある。
選び方の目安:
- 手早く自分だけで使う: Tampermonkey / Greasemonkey
- 複数ユーザーに配布する、または高権限が必要: 独自拡張
- 単発で試したい: ブックマークレット
互換性と移行のヒント
- @matchの書式はブラウザによる挙動差が出る場合があるため、対象ドメインを明確に指定すること。
- Tampermonkeyから他のマネージャへ移す際は、@grantの違いやGM_* API差異に注意する。
- ブラウザのアップデートで挙動が変わることがあるため、主要なブラウザで定期的にテストを行う。
役割別チェックリスト
開発者:
- スクリプトをローカルでテストして表示と機能を確認
- @match を適切に設定
- 必要最小限の権限(@grant)にする
- コメントやドキュメントを残す
セキュリティ担当:
- スクリプトに外部通信がないか確認
- サードパーティスクリプト導入時の審査基準を作成
- 既存のセキュリティポリシーとの整合性を確認
パワーユーザー/管理者:
- Tampermonkeyのアップデートを有効にする
- 使用しているスクリプトを定期的に見直す
- 信頼できるソースのみを使用する
小さな運用SOP(最小限の手順)
- 変更計画を文書化する(目的、対象ページ、リスク)
- 開発環境でスクリプトを作成・テストする
- 受け入れテストを実施する(上記の受け入れ基準)
- 運用版としてTampermonkeyに導入する
- 定期的なレビューとセキュリティチェックを実施する
トラブルシューティング(よくある問題)
- ボタンが表示されない: querySelectorのセレクタが意図した要素に合っているか確認。動的に生成される要素の場合はMutationObserverで待つ。
- スタイルが崩れる: サイト側のCSSが優先されている場合、重要度を上げるか、コンテナに追加CSSを注入する。
- スクリプトが無効になる: Tampermonkeyの「有効/無効」設定や、スクリプトの@matchが正しいか確認。
簡単なMutationObserverの例(要素の出現を待ってから実行):
const observer = new MutationObserver((mutations, obs) => {
const sharingDiv = document.querySelector('div.sharing.bottom');
if (sharingDiv) {
// ここでボタンを追加する処理を呼ぶ
obs.disconnect();
}
});
observer.observe(document.body, { childList: true, subtree: true });決定フローチャート(導入可否)
flowchart TD
A[Inspect Elementでの変更を永続化したい?] -->|はい| B{対象は自分だけ?}
B -->|はい| C[Tampermonkeyでユーザースクリプト作成]
B -->|いいえ| D{配布が必要?}
D -->|はい| E[独自拡張の作成検討]
D -->|いいえ| C
C --> F[小規模で運用]
E --> G[開発・審査・公開]よくある失敗例と回避策
失敗例1: @match をワイルドカードで広く設定しすぎて、意図しないページでスクリプトが走る。
- 回避策: ドメイン単位で厳密に指定する。
失敗例2: 外部ライブラリを無制限に読み込み、外部サーバがダウンすると機能しなくなる。
- 回避策: 必要なコードはスクリプト内に埋め込むか、信頼できるCDNの冗長性を検討する。
失敗例3: DOMの生成タイミングを考慮せずに要素をquerySelectorし、要素がないまま処理が終了する。
- 回避策: MutationObserverまたはDOMContentLoaded以後に実行する。
発表文(ショート:100–200語)
Tampermonkeyを使えば、Inspect Elementで行った微調整をローカルで自動再適用でき、毎回手作業で直す必要がなくなります。本ガイドではTampermonkeyの導入、ユーザースクリプトの書き方、WhatsApp共有ボタンの実装例、セキュリティ上の注意点、受け入れ基準、代替手段までをカバーしました。自身の目的とリスクを整理し、最小権限で安全に運用してください。
まとめ
- TampermonkeyはInspect Elementの変更をローカルで「永続化」する強力な方法です。
- スクリプトの対象範囲を限定し、権限や外部通信を最小化してください。
- テストと受け入れ基準を定め、運用SOPを用意すると安全です。
要点の再掲(短く):
- Tampermonkeyはユーザースクリプトでページ表示と動作をローカルで変更します。
- 例としてWhatsApp共有ボタンのユーザースクリプトを示しました。
- セキュリティとプライバシーに十分注意して運用してください。