ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
Chrome拡張機能は、Google Chromeに機能を追加する小さなアプリで、HTML・CSS・JavaScriptという普段のWeb制作と同じ技術で作れます。特別な言語やコンパイルは不要で、フォルダにファイルを置いてブラウザに読み込ませるだけで動かせるのが魅力です。中心となるのがmanifest.jsonという設定ファイルで、拡張機能の名前・バージョン・権限・どのファイルを使うかをここで宣言します。本記事では現行仕様Manifest V3を前提に、作成の全体像を解説します。
拡張機能の構成要素
Chrome拡張は、役割の異なるいくつかの部品から成り立ちます。
| 部品 | 役割 |
|---|---|
| manifest.json | 拡張機能の設計図。名前・バージョン・権限・各ファイルの参照を宣言する必須ファイル |
| popup(HTML/CSS/JS) | ツールバーのアイコンをクリックしたときに表示される小さなUI |
| content script | 閲覧中のWebページに注入され、ページのDOMを操作するJavaScript |
| background(Service Worker) | イベント待ち受けや通信などの裏方処理。V3ではService Workerで記述する |
| アイコン | 16×16・48×48・128×128の各サイズを用意する |
使い方・手順
1. フォルダとmanifest.jsonを作る
作業用フォルダを作り、中にmanifest.jsonを置きます。最小構成の例は次の通りです(V3)。JSONの文字列はダブルクオートで囲みます。
{
"manifest_version": 3,
"name": "My First Extension",
"version": "1.0",
"description": "最初のChrome拡張機能",
"action": {
"default_popup": "popup.html",
"default_icon": "icon48.png"
},
"icons": {
"16": "icon16.png",
"48": "icon48.png",
"128": "icon128.png"
},
"permissions": ["storage"]
}
2. popup用のHTML/JSを作る
アイコンクリックで開くUIを用意します。
<!-- popup.html -->
<!DOCTYPE html>
<html>
<body>
<h1>Hello!</h1>
<button id="btn">クリック</button>
<script src="popup.js"></script>
</body>
</html>
// popup.js
document.getElementById("btn").addEventListener("click", () => {
alert("ボタンが押されました");
});
3. 拡張機能を読み込む(テスト)
1. アドレスバーに chrome://extensions と入力して開く
2. 右上の「デベロッパーモード」をONにする
3. 「パッケージ化されていない拡張機能を読み込む」をクリック
4. 作成したフォルダを選択する
ツールバーにアイコンが追加され、すぐに動作を確認できます。コードを修正したら拡張機能カードの再読み込みボタンを押せば反映されます。
実用例・Tips
content scriptでページを操作:閲覧中のページにJavaScriptを注入したい場合は、manifest.jsonにcontent_scriptsを宣言します。
"content_scripts": [
{
"matches": ["https://*/*"],
"js": ["content.js"]
}
]
- 背景処理はService Workerで:V3では常駐スクリプトの代わりにイベント駆動のService Worker(
background.service_worker)を使う。 - chrome.storageで保存:設定値はlocalStorageでなく
chrome.storageAPIを使うと拡張機能全体で共有・同期できる。 - 公開はChrome Web Store:完成した拡張はZip化してデベロッパー登録後に申請・公開できる。
注意点・落とし穴
- Manifest V2は廃止:新規はV3で作る。古い記事のV2記法(background pages等)はそのままでは動かない。
- 権限の取り過ぎ:
permissionsやmatchesを広く取り過ぎると、審査落ちやユーザーの不信につながる。最小限にする。 - JSONの構文エラー:manifest.jsonは末尾カンマやコメント不可。崩れていると読み込み時にエラーになる。
- アイコンの欠落:指定したアイコンファイルが無いと警告やエラーになる。パスとサイズを揃える。
- Service Workerの寿命:V3のSWは常駐せず随時起動・停止する。グローバル変数に状態を持たず、
chrome.storage等に保存する。
関連リンク
拡張機能の構成ファイルを理解するには、各ファイル形式の基礎が役立ちます。HTML(.html)でUIのマークアップを、CSS(.css)で見た目のスタイルを、設定ファイルであるJSON(.json)でmanifest.jsonの記法を確認してください。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?