ブラウザ拡張機能とは?

「いつものブラウザ」を、自分専用ツールに変える技術です。

Webサイトを見ていて、

  • この操作、毎回面倒だな…
  • このページ、もっと見やすくしたい
  • この情報だけ自動抽出したい

と思ったことはありませんか?

実は、ブラウザ拡張機能を使うと、普段使っているブラウザそのものを、自分専用ツールへ進化させることができます。

しかも、主に使う技術は:

  • HTML
  • CSS
  • JavaScript

です。

つまり、普段のフロントエンド技術で開発できます。

ブラウザ拡張機能とは、Chrome や Edge などのブラウザに、後付けで機能を追加できるものです。

例えば:

  • 広告ブロック
  • 翻訳
  • ダークモード
  • パスワード管理
  • ChatGPT補助
  • Webスクレイピング
  • UI改善

など。

普段何気なく使っている便利機能の多くは、実は拡張機能だったりします。

代表的な開発対象:

  • Google Chrome Extensions
  • Firefox Add-ons Extensions
  • Microsoft Edge Extensions

実は「ブラウザを改造」している。

普通のWebサイトは、 「ページの中」 でしか動けません。

しかし、拡張機能は、ブラウザ側へ入り込みます。

つまり:

  • タブ操作
  • ページ監視
  • DOM変更
  • 自動入力
  • 通知
  • ダウンロード制御

など、かなり強力のことが実現できます。


具体的に何ができるのか?

例えば、こんなことができます。

① Webページを書き換える

例:ページ背景を黒くする

document.body.style.background = "black";

これだけで、現在ページの背景色が変わります。

② ボタンを追加する

const btn = document.createElement("button");

btn.textContent = "クリック";

document.body.appendChild(btn);

ページへ独自UIを追加できます。

③ 選択文字を取得する

const text = window.getSelection().toString();

console.log(text);

例えば:

  • 翻訳
  • 検索
  • 辞書

などに応用可能です。

④ 自動化

例えば:

  • フォーム自動入力
  • CSVダウンロード
  • 定型操作
  • Webスクレイピング

など。

かなり実務的です。

⑤ ブラウザそのものを操作

chrome.tabs.create({
  url: "https://example.com"
});

新しいタブを開けます。


どうやって開発するのか?

実は開発自身は、「普通のWeb開発」に近い為、はじめての人は驚きやすいのですが、冒頭で説明したように

ブラウザ拡張は:

  • HTML
  • CSS
  • JavaScript

で作れます。

つまり:

  • React
  • Vue
  • TypeScript
  • Vite

などのフレームワークも利用可能です。


拡張機能の基本構成

最小構成はこんな感じです。

my-extension/
├ manifest.json
├ content.js
└ icon.png

一番重要なのは manifest.json

これは、拡張機能の設定ファイルです。

例えば:

{
  "manifest_version": 3,
  "name": "Hello Extension",
  "version": "1.0",
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["content.js"]
    }
  ]
}

この設定の意味

項目 意味
manifest_version 拡張仕様バージョン
name 拡張名
version バージョン
content_scripts ページへ注入するJS

content.jsとは、Webページへ注入されるJavaScriptです。

例えば:

alert("こんにちは!");

を書くだけで、ページを開いた時に動作します。


実際に動かしてみよう

Step1 フォルダ作成

Windowsの場合:

「ターミナル」アプリのウインドウから、コマンド入力により作業を行っていきます。

  • スタートボタンを右クリック
  • 「ターミナル」をクリック

表示されたターミナルアプリで、任意の場所(例:c:\users\test)に my-extension フォルダを作成。

mkdir my-extension

Step2 manifest.json ファイル作成

作成したフォルダー(例:C:\Users\test\my-extension)に移動し、 manifest.json ファイルを作成します。

👉 ここでは、Windows標準の「メモ帳」アプリを使用します。

以下を入力:

cd my-extension
notepad manifest.json

メモ帳で開かれた、manifest.json ファイルに、下記を入力して保存:

{
  "manifest_version": 3,
  "name": "Hello Extension",
  "version": "1.0",
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["content.js"]
    }
  ]
}

Step3 content.js ファイル作成

作成したフォルダー(例:C:\Users\test\my-extension)に、 content.js ファイルを作成します。

👉 ここでは、Windows標準の「メモ帳」アプリを使用します。

以下を入力:

notepad content.js

メモ帳で開かれた、content.js ファイルに、下記を入力して保存:

alert("拡張機能が動きました!");

Step4 Chromeへ読み込む

  • Edgeを起動し、URLボックスに、”edge://extensions/” を入力し、拡張機能の設定画面を開きます。
  • 左ペインの下側にある「開発者モード」をONにします。
  • 右ペインの先頭に、「開発者向けオプション」の行が表示されることを確認し、「展開して読み込み」をクリックします。
  • 表示されたファイルダイアログにて、作成した”my-extension” フォルダを選択し、「フォルダの選択」をクリックします。
  • 右ペインの一覧を下方にスクロールし、manifest.json の name に定義してある「Hello Extension」が追加されていることを確認します。

Step5 実行

URLボックスに、新たなページとして ”https://msn.co.jp” を開くと、"拡張機能が動きました!" がポップアップ表示されます。

👉 これだけで「自作ブラウザ拡張」の完成です。

このとおり、 「普段見ているWebページを書き換えられる」

これはかなり強力な機能です。

Step6 拡張機能の削除

ここでは、先ほど追加した拡張機能の削除方法を説明します。

  • Edgeを起動し、URLボックスに、”edge://extensions/” を入力し、拡張機能の設定画面を開きます。
  • 右ペインの一覧を下方にスクロールし、manifest.json の name に定義してある「Hello Extension」を探します。
  • 見つかった「Hello Extension」の「削除」をクリックします。
  • 削除確認のポップアップ画面にて「削除」をクリックします。
  • 「Hello Extension」が一覧から削除されるのを確認します。

※ 「削除」ではなく、右肩のスイッチを OFF にすることで、一時的に拡張機能を停止できます。


拡張機能の主要パーツ

ブラウザ拡張には、下記の主要なパーツが存在します。

① content script

ページ内部で動作するスクリプトです。拡張機能において、最も重要です。

ページ内の DOM操作を担当します。

② popup

拡張アイコン押下時の小UI。拡張アイコン押下時に開くポップアップ画面です。

manifest.json で、下記の様にHTMLとして指定できます。

"action": {
  "default_popup": "popup.html"
}

③ background / service worker

裏側に常駐して処理を行うものです。

例えば:

  • 通知
  • タイマー
  • 通信
  • タブ監視

などを裏方として実現できます。

Manifest V3では Service Worker 化されました。


まとめ

ブラウザ拡張機能は、ブラウザを自分仕様へ改造する技術です。

しかも:

  • HTML
  • CSS
  • JavaScript

だけで始められます。

今後のWeb技術とも非常に相性が良く、学ぶ価値の高い分野です。