Tampermonkeyの@matchの書き方|URLごとに動かし分ける方法

スクレイピング

はじめに

Tampermonkeyでスクリプトを書いたのに動かないとき、原因としてかなり多いのが @match の設定ミスです。

@match は「どのURLでそのスクリプトを動かすか」を決める重要な指定です。ここが合っていないと、コード自体が正しくてもスクリプトは実行されません。

この記事では、Tampermonkeyの @match の基本から、URLごとの動かし分け、よくあるミス、初心者向けの使い分けまでをまとめます。

  • @match の基本
  • よく使う書き方のパターン
  • 複数URLで動かす例
  • 動かないときの確認ポイント

Tampermonkeyの全体像を先に確認したい場合は、Tampermonkeyとは?初心者向け使い方と簡単スクリプト解説から読むと流れをつかみやすいです。

@matchとは

@match は、そのユーザースクリプトをどのURLで動かすかを指定する設定です。

たとえば、次のように書くと example.com 配下のページでだけ実行されます。

// ==UserScript==
// @name         Sample Match
// @match        https://example.com/*
// @grant        none
// ==/UserScript==

この指定があることで、「関係ないサイトでは動かさない」「必要なページでだけ動かす」という制御ができます。

@matchの基本ルール

初心者向けに押さえるとよい基本は次の3点です。

  1. プロトコル
  2. ドメイン
  3. パス

たとえば https://example.com/path/* は、以下を意味します。

  • https:// で始まる
  • example.com というドメイン
  • /path/ 以下のページ

基本は「どこで動かしたいか」をURL単位で具体的に考えるのがコツです。

よく使う @match の書き方

ドメイン全体で動かす

// @match        https://example.com/*

example.com 配下ならどのページでも動きます。

特定ディレクトリだけで動かす

// @match        https://example.com/admin/*

/admin/ 以下だけで動かしたいときに使います。管理画面専用スクリプトなどで便利です。

特定ページだけで動かす

// @match        https://example.com/settings/profile

1ページだけで動かしたいなら、このように完全一致に近い形で絞れます。

複数の @matchを並べる

// @match        https://example.com/admin/*
// @match        https://example.com/dashboard/*

1つのスクリプトを複数ページで使いたいときは、@match を複数行書けます。

迷ったときの選び方

@match をどう書くか迷ったら、まずは次の考え方で選ぶと失敗しにくいです。

  • 1ページだけで試すなら 完全に近いURL指定
  • 管理画面の一部で使うなら ディレクトリ指定
  • サイト内の広い範囲で使うなら ドメイン全体指定
  • 似たサブドメインが複数あるなら サブドメイン込み指定

最初から広く取りすぎず、必要になってから少しずつ広げるほうが安全です。

よくある間違い

@match では、少しの違いで動かなくなることがあります。

wwwの違い

// @match        https://example.com/*

これは https://www.example.com/* とは別です。

www ありとなしは別ドメイン扱いになるので、実際に開いているURLをそのまま確認するのが大事です。

httpと httpsの違い

// @match        http://example.com/*

これでは https://example.com/* では動きません。

迷うときは、実際のページURLをコピーして見比べると確認しやすいです。

パスの違い

// @match        https://example.com/admin/*

これでは https://example.com/user/* では動きません。

「サイト全体で動かしたいのか」「特定機能だけに限定したいのか」を先に決めると、書き分けやすくなります。

ワイルドカード *の使い方

@match では * を使って、ある程度まとめて指定できます。

サイト全体を広く取る例

// @match        *://example.com/*

http と https の両方をまとめて取りたいときに使えます。

サブドメインも含めて広く取る例

// @match        *://*.example.com/*

app.example.com や admin.example.com などをまとめて対象にできます。

ただし、広く取りすぎると関係ないページでも動いてしまうので、初心者のうちは必要な範囲だけに絞るほうが安全です。

コピペしやすい @match例

用途別に、よく使う @match をまとめると次のようになります。

特定の管理画面だけで動かす

// @match        https://example.com/admin/*

ダッシュボードと設定画面の両方で動かす

// @match        https://example.com/dashboard/*
// @match        https://example.com/settings/*

本番とステージングの両方で動かす

// @match        https://app.example.com/*
// @match        https://stg.example.com/*

サブドメイン全体でまとめて動かす

// @match        *://*.example.com/*

まずはこのあたりをベースにすると、ゼロから考えるより書きやすくなります。

@matchを安全に使うコツ

初心者のうちは、次の順で考えると失敗しにくいです。

  1. まずは特定ページだけで動かす
  2. 問題なければディレクトリ単位に広げる
  3. 必要なときだけドメイン全体に広げる

いきなり *://*/* のように広く取りすぎると、別サイトでも動いてしまうのでおすすめしません。

特に初心者のうちは、「便利そうだからとりあえず全部」で広く指定するより、「まず1ページで確認する」ほうが結果的に早いです。

動かないときの確認ポイント

@match が原因で動かないときは、次の順で確認すると切り分けしやすいです。

実際のURLを確認する

アドレスバーのURLと @match の内容を1文字ずつ見比べます。

wwwや /の有無を確認する

見落としやすいポイントですが、ここが違うだけで動かないことがあります。

Tampermonkey管理画面で対象URLを確認する

スクリプト詳細を見ると、どのページに紐づいているか確認しやすいです。

まずは狭い範囲でテストする

最初は1ページだけに限定して動作確認し、そのあと必要に応じて範囲を広げるほうが安全です。

実用例

@match の考え方は、Tampermonkeyのいろいろなスクリプトで共通です。

  • 自動クリック用スクリプトを管理画面だけで動かす
  • フォーム入力スクリプトを問い合わせページだけで動かす
  • 画面表示のカスタマイズをダッシュボードだけで有効にする

よくあるのは、「スクリプト本体は正しいのに @match だけがズレていて動かない」パターンです。Tampermonkeyに慣れるほど、@match の精度が作業効率に直結します。

つまり @match を理解すると、既存の子記事で紹介しているスクリプトもかなり扱いやすくなります。

関連記事

まとめ

@match は、Tampermonkeyで「どのURLで動かすか」を決める重要な設定です。

  • URLが少し違うだけでも動かない
  • 最初は狭く指定してから広げるのが安全
  • @match を理解すると他のスクリプト記事も扱いやすくなる

Tampermonkeyでスクリプトが動かないときは、まず @match を疑うくらいでちょうどいいです。

コメント

タイトルとURLをコピーしました