テクノロジーガイド

TampermonkeyでInspect Elementの変更をローカルで永続化する方法

2 min read ブラウザ拡張 更新されました 21 Oct 2025
TampermonkeyでInspect Elementの変更を永続化する方法
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改善(ボタン追加やスタイル調整)
  • 既知の不具合に対する簡易的なパッチ
  • サイトごとの自動処理(リンク整形・スクレイピングの補助など)

注意: スクリプトはローカルで実行されるだけで、元のサイトのソースは変更されません。

インストール手順

互換ブラウザがあれば、基本的にブラウザの拡張機能ストアからインストールします。手順は次の通りです。

  1. Tampermonkeyの公式ページにアクセスします。ページは自動的に現在のブラウザを検出します。
  2. 指定のブラウザタブ(Chrome / Microsoft Edge / Firefox / Safari / Operaなど)を選択します。
  3. 「Download(ダウンロード)」または表示される導線からブラウザストアに進みます。
  4. ストアのページで「Get from Store(ストアから入手)」や「Install(インストール)」をクリックして拡張機能を追加します。
  5. ブラウザの画面に従って許可を与え、インストールを完了します。

Tampermonkeyのダウンロード画面

補足: 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アイコンを埋め込み視認性を高める
  • 共有ウィジェットが見つからない場合のフォールバックを実装

MakeUseOfの記事共有ウィジェットの表示

アイディアの拡張

  • ボタンの右クリックでコピー機能を表示する
  • ユーザー設定で言語やボタンテキストを切り替えられるようにする
  • @matchを複数設定して複数サイトで使えるようにする

スクリプトの保存と実行

  1. Tampermonkeyのエディタでコードを貼り付けます。
  2. Ctrl + S(またはエディタ上の保存ボタン)で保存します。
  3. Tampermonkeyダッシュボードの「Installed Userscripts」でスクリプトを確認します。
  4. 対象ページを開いて、ボタンが表示され動作するか確認します。

共有ウィジェットに追加されたShareボタンの例

動作確認のポイント:

  • ボタンの表示位置が崩れていないか
  • クリックで新しいタブが開き、WhatsAppの共有ページが表示されるか
  • モバイルとデスクトップで期待通り動くか(特にWhatsAppのインテントURLは環境依存)

WhatsAppで共有するためのリンクを表示した画面

テストと受け入れ基準

スクリプトを配布・運用する前に、次の受け入れ基準を満たすことを確認してください。

  • 表示: ページが読み込まれたあとにボタンが表示される
  • 機能: クリックで正しい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(最小限の手順)

  1. 変更計画を文書化する(目的、対象ページ、リスク)
  2. 開発環境でスクリプトを作成・テストする
  3. 受け入れテストを実施する(上記の受け入れ基準)
  4. 運用版としてTampermonkeyに導入する
  5. 定期的なレビューとセキュリティチェックを実施する

トラブルシューティング(よくある問題)

  • ボタンが表示されない: 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共有ボタンのユーザースクリプトを示しました。
  • セキュリティとプライバシーに十分注意して運用してください。
共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Debian 11 に Podman をインストールして使う
コンテナ

Debian 11 に Podman をインストールして使う

Apt-pinning入門:Debianで複数リポジトリを管理
Linux

Apt-pinning入門:Debianで複数リポジトリを管理

OptiScalerでFSR 4を全対応ゲームに導入する方法
ゲーム

OptiScalerでFSR 4を全対応ゲームに導入する方法

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法
ネットワーク

Dansguardian と Squid(NTLM)を Debian Etch に導入する方法

AndroidでSDカードのインストールエラーを修正する方法
トラブルシューティング

AndroidでSDカードのインストールエラーを修正する方法

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定
Linux ネットワーク

KNetAttach と KDE の remote:/ でネットワークフォルダーを設定