2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Chrome拡張機能で開発を始める

Last updated at Posted at 2025-04-30

最近、Chrome拡張機能を触る機会があったので、基本的な概念から、開発で参考になったリソース、感じたことまでを軽くまとめてみました。

例として、Amazonの商品分析ツール「SellerSprite」という実例を参考にしています。

なぜChrome拡張機能を始めたのか?

きっかけは業務ではあるんですが、
ある特定のWebサイト(たとえばAmazonなど)の情報を効率的に扱いたい場面が増えたことです。

拡張機能は、特定のドメインに対してピンポイントで強く作用できるのが大きな魅力です。
ページの構造がわかっていれば、カスタムDOMを差し込んだり、API連携したりと柔軟に拡張できるため、0からWebアプリを作るよりも効率的で、かつ機能性や拡張性にも優れていると感じました。

特にBtoBでPCを使う、かつ特定のドメインを使うニッチな業務にはすごく刺さると個人的には考えています。

拡張機能の構成要素

Chrome拡張機能は、以下の3つの主要コンポーネントで構成されています。

  • Manifestファイル
  • Content scripts
  • Service Worker

Manifestファイル

拡張機能全体の定義を記述するファイル(manifest.json)。
Chromeはこのファイルを読み、どのファイルを読み込むか判断します。

manifest.json
{
  "manifest_version": 3,
  "name": "My Extension",
  "version": "1.0",
  "permissions": ["activeTab"],
  "background": {
    "service_worker": "background.js"
  },
  "content_scripts": [
    {
      "matches": ["https://www.amazon.co.jp/*"],
      "js": ["content.js"]
    }
  ],
  "action": {
    "default_popup": "popup.html",
    "default_icon": "icon.png"
  }
}


Content scripts

拡張機能のフロントエンド部分。
既存のWebページのDOMに対して操作を行うJSがここです。

Amazonの商品ページなどでDOMに直接情報を差し込むことが可能です。

例:SellerSpriteのように、Amazonの商品詳細ページにカスタム情報を差し込む

image.png

また、画面右上の拡張機能アイコンを押すと、ポップアップ(UI)が表示されます。

image.png

(Next.jsで言うところの pages/ や components/ のような役割)

Service Worker(旧 background.js)

拡張機能のバックエンド部分。
DOMにはアクセスできませんが、イベントハンドリングやAPI通信などが可能です。

主に以下のような用途で使われます:

APIとの通信

スケジュール処理

ユーザー操作のトラッキング

Chrome拡張のIDは固定され、以下のような形式で確認可能です:

chrome://extensions/?id=◯◯◯◯

(Next.jsでいう api/ ディレクトリ的な役割)

chrome://extensions/ は拡張機能の管理画面であり、実はこれ自体が1つの特殊なブラウザページです。

開発者ツール(DevTools)を開くと、Network や Application タブが使え、拡張機能専用の保存領域「Extension Storage(拡張機能ストレージ)」も確認できます。

これにより、拡張機能がユーザー情報や設定をブラウザに保存・管理できる仕組みが提供されています。

Service Workerをクリックすると、

image.png

DevToolが出てきます

image.png

フレームワーク選定

今回は以下の理由でReact + Viteのテンプレートを使いました。

  • React・TS・Tailwindがつかえること
  • ホットリロード対応(ビルド不要で即時反映)
  • 初心者でも分かりやすい構造
  • GitHubで高評価(スター数が多い)

使ったテンプレートはこちら:

image.png

Iframeからの脱却を目指して

以前はiframeを使って、外部ページにフレームを読み込んで機能を実装していました。

✅ メリット:ストアに出さなくてもすぐ修正できる
❌ デメリット:読み込みが重く、ユーザー体験が悪い

現在はContent Scriptを用いて直接DOMに差し込む方式に変更し、UXを改善しています。

感想

Chrome拡張機能は、通常のWeb開発とは少し違った概念があり、とても新鮮でした。
「ポップアップUI」「既存ページへのDOM差し込み」「バックグラウンド通信」など、SPAとは異なるアーキテクチャを楽しめるのが面白いところです。

参考資料

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?