15
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

僕の自己満カレンダーAdvent Calendar 2019

Day 6

Chrome拡張機能の3つの世界

Last updated at Posted at 2019-12-06

#はじめに
GoogleのChrome拡張機能の3つの世界について、簡単にまとめます。

ここでは、概念に触れるだけで実際の開発仕方などは書いてません。

Chrome拡張でやりたいことによって、3つのどの世界に処理を書けば良いのかが変わってきます。

それぞれの世界は、どこで動いていて、どういうことができるのか、を軽く紹介する記事になります。

#3つの世界
3つの世界とは、

  • Background
  • Content Scripts
  • Popup

です。

ざっくり説明すると、Backgroundは裏でずっと動いてて、Content Scriptsは画面の操作をして、Popupは右上にあるChrome拡張のボタンを押すと出てくるやつです。
(画像)3つの世界の図
Chrome拡張と言ってまず思い付くのは、Content Scriptsで画面を動かすものが多いですね。
しかし、他の世界も同時に使うことでChrome拡張の幅が広がります。
順番に説明していきます。

##Background
名前の通り、裏で処理を行うものです。

Chrome拡張をインストールしたり、オンにしたりしてからずっと動いています。

Chrome拡張をオフにしたり、削除したりしない限り、ずっとです。

この世界のスクリプトにwindow.onloadを書くと、最初のオンにしたときに実行されます。

つまり、ページ遷移しただけでは初期化されないということです。

世界同士の通信方法については今回触れませんが、例えば「Content Scriptsで取得した値を次のページでも利用したい!」っていう時は、一旦Backgroundに値を送って保持しておき、ページ遷移した後またContent Scriptsに持って来れば良いわけです。Popupも然りです。

ページ遷移だけでなく、他のタブを開いても変わりません。

##Content Scripts
ここでは、実際の見ているこのページの処理をします。

「背景の色を変えたい」だとか、「ページ内にあるリンクを取得したい」だとか、ページに対して何か操作したいって時に使います。DOM操作ってやつですね。

こんなこと
Twitterから「いいね」を消し去るChrome拡張を作る - Qiita
や、こんなこと
課金なんて必要ない?YouTubeの広告自動スキップ&バナー自動削除のChrome拡張作ってみた - Qiita
ができちゃいます。楽しいね。

この世界のスクリプトにwindow.onloadを書くと、ページの更新ごとに実行されます。

Chrome拡張の大半がこの世界を利用しているので、調べてみると色々と記事が見つけられると思います。

##Popup
Chrome拡張を追加すると、Chromeの右上にアイコンが表示されるかと思います。

そのアイコン、またはアイコンを押した時に出てくるポップアップの処理をします。

ポップアップが出てくるのであれば、そのポップアップを閉じると処理が終わります。

この世界のスクリプトにwindow.onloadを書くと、アイコンを押した時に実行されます。

拡張機能によっては、アイコンを押してオン/オフを切り替えたり、ポップアップのボタンで機能を変化させたり、といったものがありますが、その場合はここの世界を使っています。

ポップアップで機能を変化させている例としては、この方の記事なんかがあります。
Chromeブラウザの拡張機能を作ってみたい初心者向けに開発方法を紹介!【サンプルあり】 - Qiita

Content Scripts同様ここで値の保持はできないので、ポップアップ間で値を共有したいときは一旦Backgroundに送って保持してもらう必要があります。

#おわりに
3つの世界について触れましたが、何かミスってたり、それぞれの世界について他に知りたいことなどあればコメントお願いします。

画像を使ったりしたら分かりやすいのでしょうけど、如何せん画像が付けづらい概念の説明でどのように書くべきか難しいところです。

分かりづらかったらすみません。

##参考文献
それぞれの世界の通信方法(メッセージパッシングと言う)について、バチクソ分かりやすい記事があるので、開発する方は参考にした方が良いと思います。

Chrome Extension の作り方 (最終話: メッセージパッシング) - Qiita

chrome開発者ツールを作る - Qiita

Message Passing - Chrome(公式)

15
8
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
15
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?