aboutsummaryrefslogtreecommitdiff
path: root/files/ja/mozilla/add-ons/webextensions
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/ja/mozilla/add-ons/webextensions
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/ja/mozilla/add-ons/webextensions')
-rw-r--r--files/ja/mozilla/add-ons/webextensions/add_a_button_to_the_toolbar/index.html221
-rw-r--r--files/ja/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html150
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/alarms/alarm/index.html84
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/alarms/clear/index.html92
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/alarms/clearall/index.html89
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/alarms/create/index.html125
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/alarms/get/index.html92
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/alarms/getall/index.html73
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/alarms/index.html50
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/alarms/onalarm/index.html105
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenode/index.html91
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodetype/index.html39
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodeunmodifiable/index.html74
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/create/index.html98
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/createdetails/index.html81
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/export/index.html114
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/get/index.html102
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.html126
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.html97
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.html125
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.html117
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/import/index.html114
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/index.html130
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/move/index.html107
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/onchanged/index.html138
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/onchildrenreordered/index.html130
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/oncreated/index.html104
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/onimportbegan/index.html110
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/onimportended/index.html110
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/onmoved/index.html139
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/onremoved/index.html135
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/remove/index.html96
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.html101
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/search/index.html135
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/bookmarks/update/index.html117
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/browseraction/colorarray/index.html67
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/browseraction/disable/index.html87
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/browseraction/index.html129
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.html102
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/browsersettings/index.html49
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.html27
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/browsingdata/index.html127
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.html100
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/clipboard/index.html39
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html72
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/commands/index.html84
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/contentscripts/index.html47
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/contentscripts/register/index.html107
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/contextualidentities/index.html63
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/cookies/cookie/index.html111
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/cookies/index.html143
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/eval/index.html211
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/index.html79
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/tabid/index.html77
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/devtools.network/index.html74
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/devtools.panels/index.html105
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/downloads/download/index.html127
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/downloads/index.html134
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/events/index.html74
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/extension/index.html105
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/extensiontypes/imagedetails/index.html75
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/extensiontypes/index.html76
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/extensiontypes/runat/index.html76
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/find/find/index.html298
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/find/index.html32
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/history/historyitem/index.html83
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/history/index.html132
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.html115
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.html92
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/i18n/getmessage/index.html119
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.html84
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/i18n/index.html94
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/i18n/languagecode/index.html68
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.html127
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.html55
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/identity/index.html106
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/idle/index.html88
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/index.html55
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/management/index.html112
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/menus/index.html197
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/menus/onclicked/index.html108
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/notifications/create/index.html139
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/notifications/index.html66
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/omnibox/index.html70
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/pageaction/index.html106
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.html104
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/permissions/index.html89
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/pkcs11/index.html40
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/privacy/index.html70
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/proxy/index.html150
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/runtime/index.html167
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/runtime/messagesender/index.html86
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/runtime/onmessage/index.html317
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.html96
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.html167
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/sessions/index.html134
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/sidebaraction/index.html98
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/storage/index.html109
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/storage/local/index.html84
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/clear/index.html62
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.html133
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/getbytesinuse/index.html53
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/index.html73
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/remove/index.html70
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.html105
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/storage/storagechange/index.html79
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/storage/sync/index.html87
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.html105
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/create/index.html131
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/duplicate/index.html98
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/executescript/index.html176
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/get/index.html87
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/index.html215
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/mutedinfo/index.html67
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/mutedinforeason/index.html67
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/oncreated/index.html100
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/query/index.html216
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/remove/index.html102
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/tabs/tab/index.html128
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/theme/index.html50
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/topsites/index.html79
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/types/index.html64
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/webnavigation/index.html143
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/webrequest/index.html200
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/windows/index.html117
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/windows/windowstate/index.html73
-rw-r--r--files/ja/mozilla/add-ons/webextensions/api/windows/windowtype/index.html65
-rw-r--r--files/ja/mozilla/add-ons/webextensions/browser_compatibility_for_manifest.json/index.html25
-rw-r--r--files/ja/mozilla/add-ons/webextensions/browser_support_for_javascript_apis/index.html26
-rw-r--r--files/ja/mozilla/add-ons/webextensions/chrome_incompatibilities/index.html158
-rw-r--r--files/ja/mozilla/add-ons/webextensions/content_scripts/index.html534
-rw-r--r--files/ja/mozilla/add-ons/webextensions/content_security_policy/index.html109
-rw-r--r--files/ja/mozilla/add-ons/webextensions/debugging_(before_firefox_50)/index.html243
-rw-r--r--files/ja/mozilla/add-ons/webextensions/examples/index.html29
-rw-r--r--files/ja/mozilla/add-ons/webextensions/extending_the_developer_tools/index.html166
-rw-r--r--files/ja/mozilla/add-ons/webextensions/implement_a_settings_page/index.html221
-rw-r--r--files/ja/mozilla/add-ons/webextensions/index.html141
-rw-r--r--files/ja/mozilla/add-ons/webextensions/index/index.html14
-rw-r--r--files/ja/mozilla/add-ons/webextensions/interact_with_the_clipboard/index.html106
-rw-r--r--files/ja/mozilla/add-ons/webextensions/intercept_http_requests/index.html159
-rw-r--r--files/ja/mozilla/add-ons/webextensions/internationalization/index.html415
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/author/index.html44
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/background/index.html115
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/browser_action/index.html240
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html91
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/chrome_settings_overrides/index.html136
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/chrome_url_overrides/index.html97
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/commands/index.html186
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/content_scripts/index.html229
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.html121
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/default_locale/index.html44
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/description/index.html44
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/developer/index.html52
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html42
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html46
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/icons/index.html78
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/incognito/index.html70
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/index.html123
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html45
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/name/index.html46
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/omnibox/index.html50
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/optional_permissions/index.html98
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html103
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/page_action/index.html200
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/permissions/index.html190
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/protocol_handlers/index.html87
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/short_name/index.html44
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/sidebar_action/index.html133
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/theme/index.html979
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/version/index.html53
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/version_name/index.html40
-rw-r--r--files/ja/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.html100
-rw-r--r--files/ja/mozilla/add-ons/webextensions/match_patterns/index.html432
-rw-r--r--files/ja/mozilla/add-ons/webextensions/modify_a_web_page/index.html254
-rw-r--r--files/ja/mozilla/add-ons/webextensions/native_manifests/index.html315
-rw-r--r--files/ja/mozilla/add-ons/webextensions/native_messaging/index.html405
-rw-r--r--files/ja/mozilla/add-ons/webextensions/packaging_and_installation/index.html218
-rw-r--r--files/ja/mozilla/add-ons/webextensions/porting_from_google_chrome/index.html24
-rw-r--r--files/ja/mozilla/add-ons/webextensions/publishing_your_webextension/index.html68
-rw-r--r--files/ja/mozilla/add-ons/webextensions/thunderbirdにおけるwebextensionsによるアドイン開発/index.html21
-rw-r--r--files/ja/mozilla/add-ons/webextensions/tips/index.html54
-rw-r--r--files/ja/mozilla/add-ons/webextensions/user_interface/browser_action/index.html49
-rw-r--r--files/ja/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.html54
-rw-r--r--files/ja/mozilla/add-ons/webextensions/user_interface/devtools_panels/index.html66
-rw-r--r--files/ja/mozilla/add-ons/webextensions/user_interface/extension_pages/index.html70
-rw-r--r--files/ja/mozilla/add-ons/webextensions/user_interface/index.html103
-rw-r--r--files/ja/mozilla/add-ons/webextensions/user_interface/notifications/index.html50
-rw-r--r--files/ja/mozilla/add-ons/webextensions/user_interface/options_pages/index.html65
-rw-r--r--files/ja/mozilla/add-ons/webextensions/user_interface/page_actions/index.html50
-rw-r--r--files/ja/mozilla/add-ons/webextensions/user_interface/popups/index.html59
-rw-r--r--files/ja/mozilla/add-ons/webextensions/user_interface/sidebars/index.html55
-rw-r--r--files/ja/mozilla/add-ons/webextensions/walkthrough/index.html451
-rw-r--r--files/ja/mozilla/add-ons/webextensions/what_are_webextensions/index.html57
-rw-r--r--files/ja/mozilla/add-ons/webextensions/what_next_/index.html60
-rw-r--r--files/ja/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.html199
-rw-r--r--files/ja/mozilla/add-ons/webextensions/working_with_files/index.html160
-rw-r--r--files/ja/mozilla/add-ons/webextensions/working_with_the_tabs_api/index.html629
-rw-r--r--files/ja/mozilla/add-ons/webextensions/your_first_webextension/index.html153
-rw-r--r--files/ja/mozilla/add-ons/webextensions/前提条件/index.html17
199 files changed, 23790 insertions, 0 deletions
diff --git a/files/ja/mozilla/add-ons/webextensions/add_a_button_to_the_toolbar/index.html b/files/ja/mozilla/add-ons/webextensions/add_a_button_to_the_toolbar/index.html
new file mode 100644
index 0000000000..b70402a17d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/add_a_button_to_the_toolbar/index.html
@@ -0,0 +1,221 @@
+---
+title: ツールバーにボタンを追加する
+slug: Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ツールバーボタンは拡張機能で利用できる主な UI コンポーネントです。ツールバーボタンはブラウザーツールバーに存在してアイコンを含んでいます。ユーザーがアイコンをクリックした時、下記の 2 つのいずれかが起こります:</p>
+
+<ul>
+ <li>アイコンのポップアップを指定した場合、ポップアップが表示されます。ポップアップは HTML, CSS, JavaScript を使った一時的なダイアログです。</li>
+ <li>ポップアップを指定していない場合、クリックイベントが生成され、コード内でそれをリッスンして、応答すべき他のアクションを実行できます。</li>
+</ul>
+
+<p>WebExtension API では、こうしたボタンの種類は "ブラウザーアクション" と呼ばれ、次のようにセットアップされます:</p>
+
+<ul>
+ <li>ボタンを定義するために使われる manifest.json の <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> キー</li>
+ <li>JavaScript API <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a></code> はコードに応じてクリックとボタンの変更をリッスンしたりアクションを実行します。</li>
+</ul>
+
+<h2 id="A_simple_button" name="A_simple_button">シンプルなボタン</h2>
+
+<p>このセクションでは、ツールバーにボタンを追加する拡張機能を作ります。ユーザーがボタンをクリックしたときに <a href="https://developer.mozilla.org">https://developer.mozilla.org</a> を新しいタブで開きます。</p>
+
+<p>まず、新しいディレクトリー"button"を作り、そして"manifest.json"と呼ばれる、以下の内容のファイルを作ります:</p>
+
+<pre class="brush: json">{
+
+ "description": "Demonstrating toolbar buttons",
+ "manifest_version": 2,
+ "name": "button-demo",
+ "version": "1.0",
+
+ "background": {
+ "scripts": ["background.js"]
+ },
+
+ "browser_action": {
+ "default_icon": {
+ "16": "icons/page-16.png",
+ "32": "icons/page-32.png"
+ }
+ }
+
+}</pre>
+
+<p>これは "background.js"という名前の<a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">バックグラウンドスクリプト</a>と、"icons"ディレクトリーにあるブラウザーアクション(ボタン)を指定します。</p>
+
+<div class="pull-aside">
+<div class="moreinfo">These icons are from the <a href="https://www.iconfinder.com/iconsets/bitsies">bitsies!</a> iconset created by Recep Kütük.</div>
+</div>
+
+<p>次に、"buttons"ディレクトリー内に "icons" ディレクトリーを作成し、下記に表示されている 2 つのアイコンを保存します:</p>
+
+<ul>
+ <li>"page-16.png" (<img alt="" src="https://mdn.mozillademos.org/files/13476/page-16.png" style="height: 16px; width: 16px;">)</li>
+ <li>"page-32.png" (<img alt="" src="https://mdn.mozillademos.org/files/13478/page-32.png" style="height: 32px; width: 32px;">).</li>
+</ul>
+
+<div></div>
+
+<p>高解像度ディスプレイで大きいのを使うように 2 つのアイコンがあります。ブラウザーは現在のディスプレイに最適なアイコンを選ぶよう配慮します。</p>
+
+<p>次に、拡張機能のルートディレクトリー内の "background.js" を作り、次の中身を入れます:</p>
+
+<pre class="brush: js">function openPage() {
+ browser.tabs.create({
+ url: "https://developer.mozilla.org"
+ });
+}
+
+browser.browserAction.onClicked.addListener(openPage);</pre>
+
+<p>これはブラウザーアクションのクリックイベントをリッスンして、イベントが発火したとき、<code>openPage()</code> 関数が実行されて、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs">tabs</a></code> API を使って特定のページを開きます。</p>
+
+<p>ここで完全な拡張機能は次のようです:</p>
+
+<pre class="line-numbers language-html"><code class="language-html">button/
+ icons/
+ page-16.png
+ page-32.png
+ background.js
+ manifest.json</code></pre>
+
+<p>ここで<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">拡張機能をインストールして</a>ボタンをクリックします:</p>
+
+<p>{{EmbedYouTube("kwwTowgT-Ys")}}</p>
+
+<h2 id="Adding_a_popup" name="Adding_a_popup">ポップアップを追加する</h2>
+
+<p>ボタンにポップアップを追加してみましょう。manifest.json を次のように置き換えます:</p>
+
+<pre class="brush: json">{
+
+ "description": "Demonstrating toolbar buttons",
+ "manifest_version": 2,
+ "name": "button-demo",
+ "version": "1.0",
+
+ "browser_action": {
+ "browser_style": true,
+ "default_popup": "popup/choose_page.html",
+ "default_icon": {
+ "16": "icons/page-16.png",
+ "32": "icons/page-32.png"
+ }
+ }
+
+}</pre>
+
+<p>オリジナルから 3 つの変更点があります:</p>
+
+<ul>
+ <li>もう "background.js"は参照しません、なぜならポップアップスクリプト内で拡張機能のロジックを扱うためです (ポップアップと同様に background.js が許可されますが、この場合は不要です)。</li>
+ <li><code>"browser_style": true</code> を追加しており、これはポップアップがブラウザーの一部であるようなスタイリングに役立ちます。</li>
+ <li>最後に <code>"default_popup": "popup/choose_page.html"</code> を追加します。これはブラウザーアクションがクリック時にポップアップを表示し、"popup/choose_page.html" に document があることをブラウザーに伝えます。</li>
+</ul>
+
+<p>さてポップアップを作らねばなりません。"popup" というディレクトリーを作成してその中に "choose_page.html" というファイルを作ります。中身は次の通り:</p>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;link rel="stylesheet" href="choose_page.css"/&gt;
+ &lt;/head&gt;
+
+&lt;body&gt;
+ &lt;div class="page-choice"&gt;developer.mozilla.org&lt;/div&gt;
+ &lt;div class="page-choice"&gt;support.mozilla.org&lt;/div&gt;
+ &lt;div class="page-choice"&gt;addons.mozilla.org&lt;/div&gt;
+ &lt;script src="choose_page.js"&gt;&lt;/script&gt;
+&lt;/body&gt;
+
+&lt;/html&gt;</pre>
+
+<p>これはふつうの HTML ページに 3 つの{{htmlelement("div")}} 要素があり、その中に Mozilla サイトがあるのが分かるでしょう。また次で追加する CSS ファイルと JavaScript ファイルも入っています。</p>
+
+<p>"popup" ディレクトリーに"choose_page.css" というファイルを作って、次の中身を入れます:</p>
+
+<pre class="brush: css">html, body {
+ width: 300px;
+}
+
+.page-choice {
+ width: 100%;
+ padding: 4px;
+ font-size: 1.5em;
+ text-align: center;
+ cursor: pointer;
+}
+
+.page-choice:hover {
+ background-color: #CFF2F2;
+}</pre>
+
+<p>これは単にポップアップのスタイリングです。</p>
+
+<p>次に、"popup" ディレクトリーに"choose_page.js" ファイルを作成し、次の中身を入れます:</p>
+
+<pre class="brush: js">document.addEventListener("click", function(e) {
+ if (!e.target.classList.contains("page-choice")) {
+ return;
+ }
+
+ var chosenPage = "https://" + e.target.textContent;
+ browser.tabs.create({
+ url: chosenPage
+ });
+
+});</pre>
+
+<p>この JavaScript で、ポップアップ選択のクリックをリッスンします。まずは page-choices にクリックがあったかをチェックし、そうでない場合は何もしません。クリックが page-choice にあった場合は、それから URL を作成し、対応するページを含む新規タブを開きます。注意として、バックグラウンドスクリプト内と同じように、ポップアップスクリプトでも WebExtension APIs を使用できます。</p>
+
+<p>拡張機能の最終構造は次の通りです:</p>
+
+<pre>button/
+ icons/
+ page-16.png
+ page-32.png
+ popup/
+ choose_page.css
+ choose_page.html
+ choose_page.js
+ manifest.json</pre>
+
+<p>拡張機能を再読み込みし、もう一度ボタンをクリックし、ポップアップの選択をクリックしてみてください:</p>
+
+<p>{{EmbedYouTube("QPEh1L1xq0Y")}}</p>
+
+<h2 id="Page_actions" name="Page_actions">ページアクション</h2>
+
+<p><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Page_actions">ページアクション</a> はブラウザーアクションと同様ですが、ブラウザー全体でなく特定ページだけに関連するアクションという点だけが異なります。</p>
+
+<p>ブラウザーアクションはいつも見えていて、ページアクションは関連するタブだけに見えています。ページアクションボタンはブラウザーツールバーでなく、URL バーに表示されます。</p>
+
+<h2 id="Learn_more" name="Learn_more">関連項目</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> マニフェストキー</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a></code> API</li>
+ <li>ブラウザーアクションの例:
+ <ul>
+ <li><a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">beastify</a></li>
+ <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/bookmark-it">Bookmark it!</a></li>
+ <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/favourite-colour">favourite-colour</a></li>
+ <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/open-my-page-button">open-my-page-button</a></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code> マニフェストキー</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/pageAction">pageAction</a></code> API</li>
+ <li>ページアクションの例:
+ <ul>
+ <li><a href="https://github.com/mdn/webextensions-examples/tree/master/chill-out">chill-out</a></li>
+ </ul>
+ </li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html b/files/ja/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html
new file mode 100644
index 0000000000..2956a356a2
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html
@@ -0,0 +1,150 @@
+---
+title: 拡張機能の中身
+slug: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension
+---
+<p>{{AddonSidebar}}</p>
+
+<p>拡張機能は複数のファイルで構成されており、それらのファイルが配布・インストール用にパッケージ化されたものです。この記事では、拡張機能に含まれるファイルについて簡単に説明します。</p>
+
+<h2 id="manifest.json" name="manifest.json">manifest.json</h2>
+
+<p>どの拡張機能においても不可欠な唯一のファイルです。このファイルには名前やバージョン、必要とするパーミッションなど、拡張機能に関する基本的なメタデータが含まれます。加えて、アドオンに含まれている他のファイルへの参照も含んでいます。</p>
+
+<p>このマニフェストには、下記のファイルに対する参照を含めることができます。</p>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">バックグラウンドスクリプト</a>: 長時間動作するロジックを実装するもの</li>
+ <li>拡張機能のアイコンと定義するボタン</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Sidebars_popups_options_pages">サイドバー、ポップアップ、オプションページ</a>: 色々な UI コンポーネントを提供する HTML 文書</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Content_scripts">コンテンツスクリプト</a>: 拡張機能に含まれる JavaScript で、ウェブページに挿入するもの</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Web_accessible_resources">ウェブよりアクセス可能なリソース</a>: まとめられたコンテンツをウェブページやコンテンツスクリプトにアクセス可能とする。</li>
+</ul>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/13669/webextension-anatomy.png" style="display: block; height: 581px; margin-left: auto; margin-right: auto; width: 600px;"></p>
+
+<p>詳細は <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> のリファレンスを参照してください。</p>
+
+<p>マニフェストに載っているものの他に、拡張機能はサポートするファイルの<a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages">拡張機能ページ</a>を持つことができます。</p>
+
+<h2 id="Background_scripts" name="Background_scripts">バックグラウンドスクリプト</h2>
+
+<p>しばしば拡張機能は、ウェブページやブラウザーウィンドウと独立したうえで、状態を長く維持したり処理を長時間実行する必要があります。バックグラウンドスクリプトはそのような場合のためのスクリプトなのです。</p>
+
+<p>バックグラウンドスクリプトは拡張機能が読み込まれると同時にロードされ、拡張機能が無効にされるかアンインストールされるまでロードされた状態を維持します。あらかじめ要求された必要な<a href="/ja/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>の限りにおいて、スクリプト中で <a href="/ja/Add-ons/WebExtensions/API">WebExtention API</a> を使うことができます。</p>
+
+<p>{{英語版章題("Specifying background scripts")}}</p>
+
+<h3 id="Specifying_background_scripts" name="Specifying_background_scripts">バックグラウンドスクリプトを定義する</h3>
+
+<p>"manifest.json" の中に <code>background</code> キーを用いることでバックグラウンドスクリプトをインクルードできます。</p>
+
+<pre class="brush: json">// manifest.json
+
+"background": {
+ "scripts": ["background-script.js"]
+}</pre>
+
+<p>複数のバックグラウンドスクリプトを定義することも可能であり、その場合は 1 つの ウェブページに複数のスクリプトが読み込まれているのと同様に、スクリプトは同じコンテキストで動作します。</p>
+
+<p>バックグラウンドスクリプトを指定する代わりに、ES5 モジュールをサポートするという追加された利点のあるバックグラウンドページを指定することもできます:</p>
+
+<p style="margin-bottom: 0em;"><strong>manifest.json</strong></p>
+
+<pre class="brush: json">// manifest.json
+
+"background": {
+ "page": "background-page.html"
+}</pre>
+
+<p style="margin-bottom: 0em;"><strong>background-page.html</strong></p>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+&lt;html lang="en"&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;script type="module" src="background-script.js"&gt;&lt;/script&gt;
+ &lt;/head&gt;
+&lt;/html&gt;</pre>
+
+<p>{{英語版章題("Background script environment")}}</p>
+
+<h3 id="Background_script_environment" name="Background_script_environment">バックグラウンドスクリプトの実行環境</h3>
+
+<h4 id="DOM_APIs_2" name="DOM_APIs_2">DOM APIs</h4>
+
+<p>バックグラウンドスクリプトはバックグラウンドページと呼ばれる特殊なページのコンテキストで実行されます。ここでは <code><a href="/ja/docs/Web/API/Window">window</a></code> というグローバルオブジェクトが利用でき、そのオブジェクトによってすべての DOM API 標準が利用できます。</p>
+
+<div class="blockIndicator warning">
+<p> Firefoxでは、バックグラウンドページでは<code><a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/alert">alert()</a></code>、<code><a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm">confirm()</a></code>、<code><a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt">prompt()</a></code>の使用はサポートされません。</p>
+</div>
+
+<h4 id="WebExtension_APIs" name="WebExtension_APIs">WebExtension APIs</h4>
+
+<p>バックグラウンドスクリプトは、その拡張機能が持つ<a href="/ja/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>の範囲で <a href="/ja/Add-ons/WebExtensions/API">WebExtension API</a> にアクセスできます。</p>
+
+<h4 id="Cross-origin_access" name="Cross-origin_access">Cross-origin access</h4>
+
+<p>バックグラウンドスクリプトは、拡張機能が持つ <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">host パーミッション</a>に一致するホストに XHR リクエストを送信できます。</p>
+
+<h4 id="Web_content" name="Web_content">Web content</h4>
+
+<p>バックグラウンドスクリプトからウェブページに直接アクセスすることができません。しかし、ウェブページに<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">コンテンツスクリプト</a>を読み込ませれば、<a href="/ja/Add-ons/WebExtensions/Content_scripts#Communicating_with_background_scripts">メッセージを渡す API を使ってコンテンツスクリプトと通信</a>をすることができます。</p>
+
+<h4 id="Content_security_policy" name="Content_security_policy">Content security policy</h4>
+
+<p>バックグラウンドスクリプトは Content Security Policy による制約を受けており、<code><a href="h/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code> のように危険な処理は実行できません。詳細は <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security Policy</a> を参照してください。</p>
+
+<h2 id="Sidebars_popups_options_pages" name="Sidebars_popups_options_pages">サイドバー、ポップアップ、オプションページ</h2>
+
+<p>拡張機能には HTML 文書で中身を決めたいろいろなユーザーインターフェイスコンポーネントを入れる事ができます。</p>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars">サイドバー</a>はブラウザーウィンドウの左側の、ウェブページの横に表示されるペインです。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups">ポップアップ</a>はユーザーが<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action">ツールバーボタン</a>や<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions">アドレスバーボタン</a>をクリックした時に表示されるダイアログです。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">オプションページ</a>はユーザーがブラウザーネイティブのアドオンマネージャー内でアドオン設定にアクセスする時に表示するページです。</li>
+</ul>
+
+<p>各コンポーネント用に、HTML ファイルと、それを指定する <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> の特定プロパティを作成します。HTML ファイルには、通常のウェブページと同様に、CSS と JavaScript ファイルを入れる事ができます。</p>
+
+<p>これらのすべては<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages">拡張機能ページ</a>の一種で、通常のウェブページと異なり、JavaScript はバックグラウンドスクリプトと同じ権限で WebExtension API を使用できます。バックグラウンドページの変数にも{{WebExtAPIRef("runtime.getBackgroundPage()")}} を使って直接アクセスすることさえできます。</p>
+
+<h2 id="Extension_pages" name="Extension_pages">拡張機能ページ</h2>
+
+<p>拡張機能に事前定義された UI コンポーネントに属さない HTML 文書を入れることもできます。サイドバー、ポップアップ、オプションページに提供されるドキュメントと違って、これは manifest.json 内にエントリーがないです。しかし、バックグラウンドスクリプトと同様に権限のある WebExtension API のすべてにアクセスできます。</p>
+
+<p>典型的には {{WebExtAPIRef("windows.create()")}} か {{WebExtAPIRef("tabs.create()")}} を使ってページを読み込みます。</p>
+
+<p>詳しくは<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages">拡張機能ページ</a>を見てください。</p>
+
+<h2 id="Content_scripts" name="Content_scripts">コンテンツスクリプト</h2>
+
+<p>ウェブページにアクセスして操作するにはコンテンツスクリプトが用いられます。コンテンツスクリプトは ウェブページに読み込まれて実行されます。</p>
+
+<p>コンテンツスクリプト はアドオンが提供するスクリプトであり、ウェブページのコンテキスト内で動作します。このため、{{HTMLElement("script")}} 要素で取得されたものなど、そのページ自身が読み込んだスクリプトとは異なります。</p>
+
+<p>ウェブページに読み込まれた通常のスクリプトと同様に、コンテンツスクリプトも ウェブページの DOM へアクセスできます。</p>
+
+<p>通常のスクリプトと異なるのは、コンテンツスクリプトで以下のことが可能な点です。</p>
+
+<ul>
+ <li>クロスドメインの XHR リクエストを作成できる</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API">WebExtension API</a> の小さなサブセットを利用できる</li>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#Communicating_with_background_scripts">バックグラウンドスクリプトとメッセージの交換ができ</a>、この方法ですべての WebExtension API に間接的にアクセスできる</li>
+</ul>
+
+<p>コンテンツスクリプトから通常のスクリプトに直接アクセスすることはできませんが、標準化されている <code><a href="/ja/docs/Web/API/Window/postMessage">window.postMessage()</a></code> API を用いれば、スクリプト間でメッセージを交換することが可能です。</p>
+
+<p>ここでの議論対象であるコンテンツスクリプトとは基本的に JavaScript のことを指していますが、先ほどと同じ方法で ウェブページに CSS を差し込むこともできます。</p>
+
+<p>詳しくは <a href="/ja/Add-ons/WebExtensions/Content_scripts">コンテンツスクリプト</a>の記事を参照してください。</p>
+
+<h2 id="Web_accessible_resources" name="Web_accessible_resources">Web accessible resources</h2>
+
+<p>Web accessible resources とは、拡張機能にインクルードしてコンテンツスクリプトや ウェブページのスクリプトからアクセスできるリソースのことであり、代表的なものは画像や HTML / CSS / JavaScript です。web-accessible なリソースは、特殊な URI スキームを介して ウェブページのスクリプトやコンテンツスクリプトから参照できます。</p>
+
+<p>例えばコンテンツスクリプトから ウェブページ内に画像を挿入したい場合、拡張機能に画像をインクルードして web-accessible とし、画像を <code>src</code> 属性で参照する <code><a href="/ja/docs/Web/HTML/Element/img">img</a></code> タグをコンテンツスクリプトが作成して ウェブページに追加する、といったシナリオが考えられます。</p>
+
+<p>詳細は、manifest.json のキーの <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a> の文書を見てください。</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/alarms/alarm/index.html b/files/ja/mozilla/add-ons/webextensions/api/alarms/alarm/index.html
new file mode 100644
index 0000000000..0d57999f01
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/alarms/alarm/index.html
@@ -0,0 +1,84 @@
+---
+title: alarms.Alarm
+slug: Mozilla/Add-ons/WebExtensions/API/alarms/Alarm
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Non-standard
+ - Reference
+ - Type
+ - WebExtensions
+ - alarm
+ - alarms
+translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/Alarm
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>単一のアラームに関する情報を含みます。このオブジェクトは {{WebExtAPIRef('alarms.get()')}} や {{WebExtAPIRef('alarms.getAll()')}} の戻り値として返されます。また、{{WebExtAPIRef('alarms.onAlarm')}} リスナに渡されることもあります。</p>
+
+<h2 id="値の型">値の型</h2>
+
+<p>この値の型はオブジェクトであり、以下のプロパティを含みます。</p>
+
+<dl class="reference-values">
+ <dt><code>name</code></dt>
+ <dd><code>string</code>. アラームの名前(このアラームを生成した {{WebExtAPIRef('alarms.create()')}} の呼び出し時に渡された名前)を表します。</dd>
+ <dt><code>scheduledTime</code></dt>
+ <dd><code>double</code>. 次にアラームが発火する時刻(<a href="https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93">1970 年 1 月 1 日からの経過ミリ秒</a>)を表します。</dd>
+ <dt><code>periodInMinutes</code>{{optional_inline}}</dt>
+ <dd><code>double</code>. この値が <code>null</code> ではない場合、アラームが発火する周期を分単位で表します。</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{ CompatibilityTable() }}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Edge</th>
+ <th>Firefox (Gecko)</th>
+ <th>Opera</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatVersionUnknown }}</td>
+ <td>{{ CompatUnknown }}</td>
+ <td>{{ CompatGeckoDesktop('45.0') }}</td>
+ <td>{{ CompatOpera('33') }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Edge</th>
+ <th>Firefox OS</th>
+ <th>Firefox Mobile (Gecko)</th>
+ </tr>
+ <tr>
+ <td>
+ <p>基本サポート</p>
+ </td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a> API に基づいています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/alarms/clear/index.html b/files/ja/mozilla/add-ons/webextensions/api/alarms/clear/index.html
new file mode 100644
index 0000000000..e4ddafb425
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/alarms/clear/index.html
@@ -0,0 +1,92 @@
+---
+title: alarms.clear()
+slug: Mozilla/Add-ons/WebExtensions/API/alarms/clear
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - alarms
+ - clear
+translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/clear
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>与えた名前に対応するアラームを解除します。</p>
+
+<h2 id="Syntax">Syntax</h2>
+
+<pre class="brush: js">browser.alarms.clear(
+ name, // 文字列
+ function(wasCleared) {...} // 関数
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>name</code>{{optional_inline}}</dt>
+ <dd><code><code>string</code></code>. 解除したいアラームの名前を指定します。指定しなかった場合は空文字列 "" が用いられます。</dd>
+ <dt><code>callback</code>{{optional_inline}}</dt>
+ <dd><code>function</code>. この関数には以下の引数が渡されます。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>wasCleared</code></dt>
+ <dd><code>boolean</code>. アラームが解除された場合は <code>true</code> が、それ以外の場合は <code>false</code> が入ります。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{ CompatibilityTable() }}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Edge</th>
+ <th>Firefox (Gecko)</th>
+ <th>Opera</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatVersionUnknown }}</td>
+ <td>{{ CompatUnknown }}</td>
+ <td>{{ CompatGeckoDesktop('45.0') }}</td>
+ <td>{{ CompatOpera('33') }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Edge</th>
+ <th>Firefox OS</th>
+ <th>Firefox Mobile (Gecko)</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a> API に基づいています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/alarms/clearall/index.html b/files/ja/mozilla/add-ons/webextensions/api/alarms/clearall/index.html
new file mode 100644
index 0000000000..889a71b697
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/alarms/clearall/index.html
@@ -0,0 +1,89 @@
+---
+title: alarms.clearAll()
+slug: Mozilla/Add-ons/WebExtensions/API/alarms/clearAll
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - alarms
+ - clearAll
+translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/clearAll
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>予約されたアラームすべてを解除します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.alarms.clearAll(
+ function(wasCleared) {...} // 関数
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd><code>function</code>. この関数には以下の引数が渡ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>wasCleared</code></dt>
+ <dd><code>boolean</code>. アラームが解除された場合は <code>true</code> が、それ以外の場合は <code>false</code> が入ります。Chrome の場合は常に <code>true</code> が入ることに注意してください。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{ CompatibilityTable() }}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Edge</th>
+ <th>Firefox (Gecko)</th>
+ <th>Opera</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatVersionUnknown }}</td>
+ <td>{{ CompatUnknown }}</td>
+ <td>{{ CompatGeckoDesktop('45.0') }}</td>
+ <td>{{ CompatOpera('33') }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Edge</th>
+ <th>Firefox OS</th>
+ <th>Firefox Mobile (Gecko)</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a> API に基づいています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/alarms/create/index.html b/files/ja/mozilla/add-ons/webextensions/api/alarms/create/index.html
new file mode 100644
index 0000000000..d95d778d6d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/alarms/create/index.html
@@ -0,0 +1,125 @@
+---
+title: alarms.create()
+slug: Mozilla/Add-ons/WebExtensions/API/alarms/create
+tags:
+ - API
+ - Add-ons
+ - Create
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - alarms
+translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/create
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>新しいアラームを生成します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.alarms.create(
+ name, // 文字列
+ alarmInfo // オブジェクト
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>name</code>{{optional_inline}}</dt>
+ <dd><code>string</code>. アラームの名前を指定します。デフォルト値は空の文字列です。</dd>
+ <dd>この値は {{WebExtAPIRef('alarms.get()')}} や {{WebExtAPIRef('alarms.clear()')}} で特定のアラームを参照する際に用います。また、{{WebExtAPIRef('alarms.onAlarm')}} のリスナ関数に渡すオブジェクト {{WebExtAPIRef('alarms.Alarm')}} のプロパティ <code>name</code> からも参照されます。</dd>
+ <dd>アラームの名前は常に固有です(スコープはアドオンごとに区切られます)。以前そのアドオンが作成したアラーム名に一致する文字列を <code>name</code> に与えた場合、既存のアラームは削除されて発火しなくなります。</dd>
+ <dt><code>alarmInfo</code>{{optional_inline}}</dt>
+ <dd>
+ <p><code>object</code>. アラームが最初に発火する時刻を指定する引数です。時刻の指定には絶対値(<code>when</code> プロパティ)か、アラーム設定時を基準とした時間(<code>delayInMinutes</code> プロパティ)のどちらかで指定します。アラームを周期的に発火させるには <code>periodInMinutes</code> プロパティも指定します。</p>
+
+ <p>Chrome の場合、パッケージ化された状態でアドオンが読み込まれると、アラームを 1 分に 1 回以上の頻度で呼び出すことはできません。ここでアドオンが <code>delayInMinutes</code> や <code>when</code> に 1 未満の値を指定しようとすると、アラームは 1 分後に発火します。アドオンが <code>periodInMinutes</code> に 1 未満の値を指定した場合、アラームは 1 分おきに発火します。</p>
+
+ <p><code>alarmInfo</code> オブジェクトで指定できるプロパティは以下の通りです。</p>
+ </dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>when</code>{{optional_inline}}</dt>
+ <dd><code>double</code>. アラームが最初に発火する時刻を <a href="https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93">1970 年 1 月 1 日からの経過ミリ秒</a> で指定します。現在までの経過ミリ秒は <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Date/now">Date.now()</a></code> で取得できます。<code>when</code> を指定した場合<code>は delayInMinutes</code> を指定しないでください。</dd>
+ <dt><code>delayInMinutes</code>{{optional_inline}}</dt>
+ <dd><code>double</code>. アラームが最初に発火する時刻を、アラーム設定時から何分後かで指定します。 <code>delayInMinutes</code> を指定した場合は <code>when</code> を指定しないでください。</dd>
+ <dt><code>periodInMinutes</code>{{optional_inline}}</dt>
+ <dd><code>double</code>. この値が指定された場合、アラームは最初の発火時刻から <code>periodInMinutes</code> の周期で繰り返し発火します。この値を指定したうえで<code>when</code> と <code>delayInMinutes</code> の両方を省略した場合、最初にアラームが発火するのは <code>periodInMinutes</code> の時間が経過した後になります。<code>periodInMinutes</code> が指定されなければ、アラームは一度だけ発火します。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.alarms.create")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>現在から相対的な時刻で一度限り発火するアラームを "" という名前で作成する例:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">const</span> delayInMinutes <span class="operator token">=</span> <span class="number token">5</span><span class="punctuation token">;</span>
+
+chrome<span class="punctuation token">.</span>alarms<span class="punctuation token">.</span><span class="function token">create</span><span class="punctuation token">(</span><span class="punctuation token">{</span>
+ delayInMinutes
+<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>現在からの相対的な時刻から繰り返すアラームを "my-periodic-alarm" の名前で作成する例:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">const</span> delayInMinutes <span class="operator token">=</span> <span class="number token">5</span><span class="punctuation token">;</span>
+<span class="keyword token">const</span> periodInMinutes <span class="operator token">=</span> <span class="number token">2</span><span class="punctuation token">;</span>
+
+chrome<span class="punctuation token">.</span>alarms<span class="punctuation token">.</span><span class="function token">create</span><span class="punctuation token">(</span><span class="string token">"my-periodic-alarm"</span><span class="punctuation token">,</span> <span class="punctuation token">{</span>
+ delayInMinutes<span class="punctuation token">,</span>
+ periodInMinutes
+<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>絶対的な時刻から繰り返すアラームを "my-periodic-alarm" の名前で作成する例:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">const</span> when <span class="operator token">=</span> <span class="number token">1545696000</span><span class="punctuation token">;</span>
+<span class="keyword token">const</span> periodInMinutes <span class="operator token">=</span> <span class="number token">2</span><span class="punctuation token">;</span>
+
+chrome<span class="punctuation token">.</span>alarms<span class="punctuation token">.</span><span class="function token">create</span><span class="punctuation token">(</span><span class="string token">"my-periodic-alarm"</span><span class="punctuation token">,</span> <span class="punctuation token">{</span>
+ when<span class="punctuation token">,</span>
+ periodInMinutes
+<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a> API に基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/alarms/get/index.html b/files/ja/mozilla/add-ons/webextensions/api/alarms/get/index.html
new file mode 100644
index 0000000000..500a3be7db
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/alarms/get/index.html
@@ -0,0 +1,92 @@
+---
+title: alarms.get()
+slug: Mozilla/Add-ons/WebExtensions/API/alarms/get
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - alarms
+ - get
+translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/get
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>与えた名前に対応するアラームを取得します。取得したアラームは、コールバック関数に渡す {{WebExtAPIRef('alarms.Alarm')}} オブジェクトとして用いることがあります。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.alarms.get(
+ name, // 文字列
+ function(alarm) {...} // 関数
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>name</code>{{optional_inline}}</dt>
+ <dd><code><code>string</code></code>. 取得したいアラームの名前を指定します。指定しなかった場合は空文字列 "" が用いられます。</dd>
+ <dt><code>callback</code></dt>
+ <dd><code>function</code>. この関数には以下の引数が渡ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>alarm</code></dt>
+ <dd><code>{{WebExtAPIRef('alarms.Alarm')}}</code>. 名前が <code>name</code> にマッチするアラームが入ります。マッチするアラームがなかった場合、<code>undefined</code> が入ります。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{ CompatibilityTable() }}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Edge</th>
+ <th>Firefox (Gecko)</th>
+ <th>Opera</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatVersionUnknown }}</td>
+ <td>{{ CompatUnknown }}</td>
+ <td>{{ CompatGeckoDesktop('45.0') }}</td>
+ <td>{{ CompatOpera('33') }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Edge</th>
+ <th>Firefox OS</th>
+ <th>Firefox Mobile (Gecko)</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a> API に基づいています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/alarms/getall/index.html b/files/ja/mozilla/add-ons/webextensions/api/alarms/getall/index.html
new file mode 100644
index 0000000000..a7d8a3759b
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/alarms/getall/index.html
@@ -0,0 +1,73 @@
+---
+title: alarms.getAll()
+slug: Mozilla/Add-ons/WebExtensions/API/alarms/getAll
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - alarms
+ - getAll
+translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/getAll
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>予約されたアラームすべてを取得します。取得されたアラームは {{WebExtAPIRef('alarms.Alarm')}} オブジェクトの配列としてコールバック関数に渡されます。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.alarms.getAll(
+ function(array) {...} // 関数
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd><code>function</code>. この関数には以下の引数が渡ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>alarms</code></dt>
+ <dd>予約されたアラームすべてを含む <code>{{WebExtAPIRef('alarms.Alarm')}}</code> の配列です。予約されたアラームがない場合は空の配列となります。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.alarms.getAll")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>コールバックを用いた例:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">gotAll</span><span class="punctuation token">(</span>alarms<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="keyword token">var</span> alarm <span class="keyword token">of</span> alarms<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>alarm<span class="punctuation token">.</span>name<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>alarms<span class="punctuation token">.</span><span class="function token">getAll</span><span class="punctuation token">(</span>gotAll<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>Promise を用いた例:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">gotAll</span><span class="punctuation token">(</span>alarms<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="keyword token">var</span> alarm <span class="keyword token">of</span> alarms<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>alarm<span class="punctuation token">.</span>name<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">var</span> getAlarms <span class="operator token">=</span> browser<span class="punctuation token">.</span>alarms<span class="punctuation token">.</span><span class="function token">getAll</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+getAlarms<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>gotAll<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note">
+<p><strong>謝辞</strong></p>
+
+<p>この API はChromium の <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a> API に基づいています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/alarms/index.html b/files/ja/mozilla/add-ons/webextensions/api/alarms/index.html
new file mode 100644
index 0000000000..3f37d24473
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/alarms/index.html
@@ -0,0 +1,50 @@
+---
+title: alarms
+slug: Mozilla/Add-ons/WebExtensions/API/alarms
+translation_of: Mozilla/Add-ons/WebExtensions/API/alarms
+---
+<div>{{AddonSidebar}}</div>
+
+<p>コードが動作するタイミングを予約します。この API は <code><a href="https://developer.mozilla.org/ja/docs/Web/API/WindowTimers/setTimeout">setTimeout()</a></code> や <code><a href="https://developer.mozilla.org/ja/docs/Web/API/WindowTimers/setInterval">setInterval()</a></code> と似ていますが、 alarms API はバックグラウンドで動作する点が異なります。</p>
+
+<p>この API を利用するには "alarms" <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a> が必要です。</p>
+
+<h2 id="関連する値の型">関連する値の型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("alarms.Alarm")}}</dt>
+ <dd>特定のアラームに関する情報が含まれます。</dd>
+</dl>
+
+<h2 id="メソッド">メソッド</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("alarms.create()")}}</dt>
+ <dd>新しいアラームを生成します。</dd>
+ <dt>{{WebExtAPIRef("alarms.get()")}}</dt>
+ <dd>与えた名前に対応するアラームを取得します。</dd>
+ <dt>{{WebExtAPIRef("alarms.getAll()")}}</dt>
+ <dd>予約されたアラームすべてを取得します。</dd>
+ <dt>{{WebExtAPIRef("alarms.clear()")}}</dt>
+ <dd>与えた名前に対応するアラームを解除します。</dd>
+ <dt>{{WebExtAPIRef("alarms.clearAll()")}}</dt>
+ <dd>予約されたアラームすべてを解除します。</dd>
+</dl>
+
+<h2 id="イベント">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("alarms.onAlarm")}}</dt>
+ <dd>アラームが動作した際に発火します。</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.alarms")}} {{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a> API に基づいています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/alarms/onalarm/index.html b/files/ja/mozilla/add-ons/webextensions/api/alarms/onalarm/index.html
new file mode 100644
index 0000000000..fec4fd491a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/alarms/onalarm/index.html
@@ -0,0 +1,105 @@
+---
+title: alarms.onAlarm
+slug: Mozilla/Add-ons/WebExtensions/API/alarms/onAlarm
+tags:
+ - API
+ - Add-ons
+ - Event
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - alarms
+ - onAlarm
+translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/onAlarm
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>アドオンによってアラームが動作した際に発火します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.alarms.onAlarm.addListener(function(
+ alarm // Alarm
+) {...})
+browser.alarms.onAlarm.removeListener(listener)
+browser.alarms.onAlarm.hasListener(listener)
+</pre>
+
+<p>このイベントには 3 つのメソッドが用意されています。</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>イベントリスナを追加します。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>イベントリスナを削除します。引数 <code>listener</code> には削除したいリスナを指定します。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code> がイベントリスナとして登録されているか確認します。登録されていれば <code>true</code> を、それ以外の場合は <code>false</code> を返します。</dd>
+</dl>
+
+<h2 id="addListener_の構文">addListener の構文</h2>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>このイベントが発火した際に呼び出される関数を指定します。この関数には以下の引数が渡ります。</p>
+
+ <dl class="reference-values">
+ <dt><code>alarm</code></dt>
+ <dd>発火するアラーム {{WebExtAPIRef('alarms.Alarm')}} が入ります。発火したアラームを判別するには <code>Alarm.name</code> が利用できます。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{ CompatibilityTable() }}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Edge</th>
+ <th>Firefox (Gecko)</th>
+ <th>Opera</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatVersionUnknown }}</td>
+ <td>{{ CompatUnknown }}</td>
+ <td>{{ CompatGeckoDesktop('45.0') }}</td>
+ <td>{{ CompatOpera('33') }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Edge</th>
+ <th>Firefox OS</th>
+ <th>Firefox Mobile (Gecko)</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a> API に基づいています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenode/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenode/index.html
new file mode 100644
index 0000000000..a6db52f663
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenode/index.html
@@ -0,0 +1,91 @@
+---
+title: bookmarks.BookmarkTreeNode
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNode
+tags:
+ - API
+ - Add-ons
+ - BookmarkTreeNode
+ - Bookmarks
+ - Extensions
+ - Non-standard
+ - Reference
+ - Type
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNode
+---
+<div>{{AddonSidebar()}}</div>
+
+<p><code>bookmarks.BookmarkTreeNode</code> 型のオブジェクトは、ブックマークツリー上のノード(ブックマーク / フォルダ)を表現するものです。子ノードは親フォルダの中で <code>index</code> に従って順序付けされます。</p>
+
+<h2 id="値の型">値の型</h2>
+
+<p>以下のプロパティを含む {{jsxref("object")}} です。</p>
+
+<dl class="reference-values">
+ <dt><code>id</code></dt>
+ <dd>そのノードを一意に識別する {{jsxref("string")}} です。この ID はユーザのプロファイル内で固有であり、ブラウザを再起動した後も有効です。</dd>
+ <dt><code>parentId </code>{{optional_inline}}</dt>
+ <dd>親フォルダの ID を表す {{jsxref("string")}} です。ルートノードの場合は省略されます。</dd>
+ <dt><code>index </code>{{optional_inline}}</dt>
+ <dd>親フォルダの中におけるノードの位置を表す 0 以上の {{jsxref("number")}} です。0 は先頭の要素を意味します。</dd>
+ <dt><code>url </code>{{optional_inline}}</dt>
+ <dd>ブックマークの URL を表す {{jsxref("string")}} です。フォルダの場合は省略されます。</dd>
+ <dt><code>title</code></dt>
+ <dd>ブックマークリストやメニューにノードが表示される際のテキストを表す {{jsxref("string")}} です。</dd>
+ <dt><code>dateAdded</code> {{optional_inline}}</dt>
+ <dd>このノードが生成された時刻を <a href="https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93">1970 年 1 月 1 日からの経過ミリ秒</a> で表す {{jsxref("number")}} です。</dd>
+ <dt><code>dateGroupModified</code> {{optional_inline}}</dt>
+ <dd>その内容の最終変更時刻を <a href="https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93">1970 年 1 月 1 日からの経過ミリ秒</a> で表す {{jsxref("number")}} です。</dd>
+ <dt><code>unmodifiable</code> {{optional_inline}}</dt>
+ <dd>{{WebExtAPIRef('bookmarks.BookmarkTreeNodeUnmodifiable')}} 型で表現される {{jsxref("string")}} です。このノードが変更不可である理由を表します。変更可能な場合には省略されます。</dd>
+ <dt><code>children</code> {{optional_inline}}</dt>
+ <dd>各要素がノードの子要素を表す、{{WebExtAPIRef('bookmarks.BookmarkTreeNode')}} の {{jsxref("array")}} です。リストの要素は UI に表示されているのと同じ順序で並びます。フォルダの場合は省略されます。</dd>
+</dl>
+
+<div class="note">
+<p>現在、ブックマークリストのセパレータをこのオブジェクトで表すことはできません。</p>
+</div>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.BookmarkTreeNode", 10)}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodetype/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodetype/index.html
new file mode 100644
index 0000000000..8a87f614ea
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodetype/index.html
@@ -0,0 +1,39 @@
+---
+title: bookmarks.BookmarkTreeNodeType
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNodeType
+tags:
+ - API
+ - Add-ons
+ - BookmarkTreeNodeType
+ - Bookmarks
+ - Extensions
+ - Property
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNodeType
+---
+<div>{{AddonSidebar()}}</div>
+
+<p><strong><code>bookmarks.BookmarkTreeNodeType</code></strong> 型は、ブックマークツリーのノードがブックマーク、フォルダーまたはセパレーターであるかどうかを示すために使用されます。</p>
+
+<h2 id="Type" name="Type">型</h2>
+
+<p><code>bookmarks.BookmarkTreeNodeType</code> は以下の 3 つのうちいずれかの値を取りうる {{jsxref("string")}} です。</p>
+
+<ul>
+ <li><code>"bookmark"</code>: ノードがブックマークであることを示します。</li>
+ <li><code>"folder"</code>: ノードがフォルダーであることを示します。</li>
+ <li><code>"separator"</code>: ノードがセパレータであることを示します。</li>
+</ul>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.bookmarks.BookmarkTreeNodeType", 10)}}</p>
+
+<div class="hidden">
+<p>NEEDFIX: "WebExtExamples" マクロでエラーがでているため確認と修正が必要</p>
+</div>
+
+<p>{{WebExtExamples}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodeunmodifiable/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodeunmodifiable/index.html
new file mode 100644
index 0000000000..2d8575e341
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodeunmodifiable/index.html
@@ -0,0 +1,74 @@
+---
+title: bookmarks.BookmarkTreeNodeUnmodifiable
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNodeUnmodifiable
+tags:
+ - API
+ - Add-ons
+ - BookmarkTreeNodeUnmodifiable
+ - Bookmarks
+ - Extensions
+ - Non-standard
+ - Reference
+ - Type
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNodeUnmodifiable
+---
+<p>{{AddonSidebar()}}</p>
+
+<p><strong><code>bookmarks.BookmarkTreeNodeUnmodifiable</code></strong> 型は、ブックマークツリー上のノード(ブックマーク / フォルダー)が変更不可な理由を表すものです。この型は、ブックマークノードの {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "bookmarks.BookmarkTreeNode.unmodifiable", "unmodifiable")}} プロパティで使用されます。</p>
+
+<h2 id="Type" name="Type">値の型</h2>
+
+<p>この値は {{jsxref("string")}} 型であり、現在取りうる値は <code>"managed"</code> のみです。すなわち、システム管理者(ペアレンタルコントロールが有効な場合は保護者)がこのブックマークノードを設定したことを意味します。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<div class="hidden">
+<p>NEEDFIX: "WebExtBrowserCompat" マクロでエラーがでているため確認と修正が必要</p>
+
+<p>NEEDFIX: "WebExtExamples" マクロでエラーがでているため確認と修正が必要</p>
+</div>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.bookmarks.BookmarkTreeNodeUnmodifiable")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a class="external external-icon" href="https://developer.chrome.com/extensions/bookmarks#method-update" rel="noopener"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a class="external external-icon" href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json" rel="noopener"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/create/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/create/index.html
new file mode 100644
index 0000000000..1e4a2c36fe
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/create/index.html
@@ -0,0 +1,98 @@
+---
+title: bookmarks.create()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/create
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Create
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/create
+---
+<div>{{AddonSidebar()}}</div>
+
+<p><strong><code>bookmarks.create()</code></strong> は、<code>parentId</code> で指定した {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} の配下に、ブックマークやフォルダを作成するメソッドです。フォルダを作成する場合は、{{WebExtAPIRef("bookmarks.CreateDetails", "CreateDetails", "url")}} の引数を省略するか空にします。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.create(
+ bookmark, // CreateDetails
+ callback // 関数(省略可)
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>bookmark</code></dt>
+ <dd>{{WebExtAPIRef('bookmarks.CreateDetails')}}</dd>
+ <dt><code>callback</code>{{optional_inline}}</dt>
+ <dd>ブックマークが新しく作成された際に呼び出される {{jsxref("function")}} です。この関数は以下の引数を 1 つ受け取ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>result</code></dt>
+ <dd>新しく作成されたブックマークノードを表す {{WebExtAPIRef('bookmarks.BookmarkTreeNode')}}</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.create")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<p>以下の例は、このページのブックマークをデフォルトのフォルダ(Firefox は「未分類のブックマーク」、Chrome は「その他のブックマーク」)に作成するものです。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onBookmarkAdded</span><span class="punctuation token">(</span>bookmarkItem<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Bookmark added with ID: "</span> <span class="operator token">+</span> bookmarkItem<span class="punctuation token">.</span>id<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">create</span><span class="punctuation token">(</span><span class="punctuation token">{</span>
+ title<span class="punctuation token">:</span> <span class="string token">"bookmarks.create() on MDN"</span><span class="punctuation token">,</span>
+ url<span class="punctuation token">:</span> <span class="string token">"https://developer.mozilla.org/Add-ons/WebExtensions/API/bookmarks/create"</span>
+<span class="punctuation token">}</span><span class="punctuation token">,</span> onBookmarkAdded<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-create"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/createdetails/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/createdetails/index.html
new file mode 100644
index 0000000000..b7463079da
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/createdetails/index.html
@@ -0,0 +1,81 @@
+---
+title: bookmarks.CreateDetails
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/CreateDetails
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - CreateDetails
+ - Extensions
+ - Non-standard
+ - Reference
+ - Type
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/CreateDetails
+---
+<p>{{AddonSidebar()}}</p>
+
+<p><code>CreateDetails</code> 型は、新しいブックマークやフォルダのプロパティを表すためのオブジェクト型です。{{WebExtAPIRef("bookmarks.create()")}} メソッドの呼び出し時に渡します。</p>
+
+<div class="note">
+<p>現在、ブックマークリストのセパレータをこのオブジェクト型で表すことはできません。</p>
+</div>
+
+<h2 id="値の型">値の型</h2>
+
+<p>以下のプロパティを含む {{jsxref("object")}} です。</p>
+
+<dl class="reference-values">
+ <dt><code>parentId</code>{{optional_inline}}</dt>
+ <dd>新しいブックマーク / フォルダの親フォルダを指定する {{jsxref("string")}} です。デフォルト値はブラウザによって異なり、Chrome の場合は「その他のブックマーク」、Firefox の場合は「未分類のブックマーク」です。</dd>
+ <dt><code>index</code>{{optional_inline}}</dt>
+ <dd>親要素の配下における、新しいブックマーク / フォルダの位置を指定する {{jsxref("number")}} です。値が 0 の場合、リストの先頭に置かれます。</dd>
+ <dt><code>title</code>{{optional_inline}}</dt>
+ <dd><code>作成する</code>ブックマークのタイトルやフォルダの名前を指定する {{jsxref("string")}} です。値を省略した場合、タイトルは <code>""</code> になります。</dd>
+ <dt><code>url</code>{{optional_inline}}</dt>
+ <dd>ブックマークの URL を指定する {{jsxref("string")}} です。値を省略するか <code>null</code> を指定した場合、ブックマークではなくフォルダが作成されます。</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.CreateDetails", 10)}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/export/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/export/index.html
new file mode 100644
index 0000000000..381e471807
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/export/index.html
@@ -0,0 +1,114 @@
+---
+title: bookmarks.export()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/export
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - export
+translation_of: Archive/Add-ons/bookmarks.export
+---
+<p>{{AddonSidebar()}}</p>
+
+<p>ブックマークを HTML ブックマークファイルにエクスポートします。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.export(
+ function() {...} // 関数(省略可)
+)
+</pre>
+
+<h3 id="Parameters">Parameters</h3>
+
+<dl>
+ <dt><code>callback</code>{{optional_inline}}</dt>
+ <dd><code>function</code>.</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{ CompatibilityTable() }}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Edge</th>
+ <th>Firefox (Gecko)</th>
+ <th>Opera</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatVersionUnknown }}</td>
+ <td>{{ CompatUnknown }}</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatOpera('33') }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Edge</th>
+ <th>Firefox OS</th>
+ <th>Firefox Mobile (Gecko)</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/get/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/get/index.html
new file mode 100644
index 0000000000..a3d5245abc
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/get/index.html
@@ -0,0 +1,102 @@
+---
+title: bookmarks.get()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/get
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - get
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/get
+---
+<div>{{AddonSidebar()}}</div>
+
+<p><strong><code>bookmarks.get()</code></strong> は、指定した {{WebExtAPIRef("bookmarks.BookmarkTreeNode")}} の ID(または ID の配列)にマッチするノードを取得するメソッドです。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.get(
+ idOrIdList, // 文字列または文字列の配列
+ callback // 関数
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>idOrIdList</code></dt>
+ <dd>取得したい {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} オブジェクトの ID を指定した {{jsxref("string")}} または {{jsxref("string")}} の {[jsxref("array")}} です。</dd>
+ <dt><code>callback</code></dt>
+ <dd>ノードが取得された際に実行される {{jsxref("function")}} です。この関数には以下の引数が渡ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>results</code></dt>
+ <dd>各要素が {{WebExtAPIRef("bookmarks.BookmarkTreeNode")}} である、マッチしたノードの {{jsxref("array")}} です。セパレータは結果の戻り値に含まれません。ノードが見つからなかった場合の <code>results</code> は <code>undefined</code> となり、{{WebExtAPIRef("runtime.lastError")}} がセットされます。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.get")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<p>以下の例は、特定の ID を持つブックマークが存在するかどうかを確認するものです。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onGot</span><span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"bookmark exists!"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"bookmark does not exist!"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"lasterror: "</span> <span class="operator token">+</span> chrome<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span>lastError<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">doesBookmarkExist</span><span class="punctuation token">(</span>bookmarkId<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ browser<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="keyword token">get</span><span class="punctuation token">(</span>bookmarkId<span class="punctuation token">,</span> onGot<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-get"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードに基づいて作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.html
new file mode 100644
index 0000000000..6a489247c5
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.html
@@ -0,0 +1,126 @@
+---
+title: bookmarks.getChildren()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getChildren
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - getChildren
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/getChildren
+---
+<p>{{AddonSidebar()}}</p>
+
+<p><strong><code>bookmarks.getChildren()</code></strong> は、ブックマークフォルダの ID を {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} で指定し、その直下にあたる子要素をすべて取得します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.getChildren(
+ id, // 文字列
+ callback // 関数
+)
+</pre>
+
+<h3 id="Parameters">Parameters</h3>
+
+<dl>
+ <dt><code>id</code></dt>
+ <dd>取得したい子要素を持つフォルダ ID を指定する {{jsxref("string")}} です。</dd>
+ <dt><code>callback</code></dt>
+ <dd>子ノードのリストが取得された際に実行される関数です。この関数には以下の引数が渡ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>results</code></dt>
+ <dd>各要素が 1 つの子ノードを表す、{{WebExtAPIRef('bookmarks.BookmarkTreeNode')}} の {{jsxref("array")}} です。要素の順序は、UI に表示されているのと同じ順番です。現在、セパレータの有無は結果に含まれません。指定したノードに子要素が含まれていなかった場合、<code>results</code> は空配列となります。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.getChildren")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<h3 id="基本的な使い方">基本的な使い方</h3>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">gotChildren</span><span class="punctuation token">(</span>children<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>children<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">getChildren</span><span class="punctuation token">(</span>bookmarkItemId<span class="punctuation token">,</span> gotChildren<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<h3 id="指定したフォルダでブックマークを切替">指定したフォルダでブックマークを切替</h3>
+
+<p>以下の例は、フォルダを {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} で指定し、そのフォルダに新しいブックマークを作成するものです。ただし、既に同じ名前のブックマークがあった場合は、逆に既存のブックマークを削除することとします。このとき新しいブックマークは作成されません。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">toggleBookmark</span><span class="punctuation token">(</span>folderNode<span class="punctuation token">,</span> title<span class="punctuation token">,</span> url<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">getChildren</span><span class="punctuation token">(</span>folderNode<span class="punctuation token">.</span>id<span class="punctuation token">,</span> <span class="keyword token">function</span><span class="punctuation token">(</span>results<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">let</span> node <span class="operator token">=</span> results<span class="punctuation token">.</span><span class="function token">find</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span>el<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">return</span> el<span class="punctuation token">.</span>title <span class="operator token">===</span> title<span class="punctuation token">;</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ <span class="comment token">// ブックマークが存在する場合は削除する</span>
+ <span class="comment token">// そうでなければ新しく作成する</span>
+
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>node <span class="operator token">!==</span> undefined<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">remove</span><span class="punctuation token">(</span>node<span class="punctuation token">.</span>id<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">create</span><span class="punctuation token">(</span><span class="punctuation token">{</span>
+ parentId<span class="punctuation token">:</span> folderNode<span class="punctuation token">.</span>id<span class="punctuation token">,</span>
+ title<span class="punctuation token">:</span> title<span class="punctuation token">,</span>
+ url<span class="punctuation token">:</span> url
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>先の <code>toggleBookmark()</code> 関数は、<code>folderNode</code> で指定した {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} の中に既に存在しているすべてのブックマークのリストを取得するため、最初に <code>bookmarks.getChildren()</code> を呼び出しています。</p>
+
+<p>コールバックに指定された匿名関数には <code>results</code> という引数が 1 つ渡されます。この引数は、フォルダの直下にある子要素をすべて含んだ配列です。まず初めに、与えられたタイトルを持つノードがフォルダに存在するかどうかを調べます。ここでは {{jsxref("Array.find()")}} メソッドを使い、タイトルが等しいかどうかをコールバック内で判定しています。</p>
+
+<p>マッチするノードがあった場合(すなわち、<code>node</code> が <code>undefined</code> ではない場合)、指定した <code>title</code> を持つブックマークが既に存在していたことが分かったので、既存のブックマークを削除するために {{WebExtAPIRef("bookmarks.remove()")}} を呼び出します。</p>
+
+<p>そうではなかった場合、新しいブックマークを作成するために {{WebExtAPIRef("bookmarks.create()")}} が呼び出します。この際、引数 <code>folderNode</code> で与えられていたフォルダ ID を新しい親フォルダの ID に指定し、合わせて <code>title</code> と <code>url</code> も指定します。</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-getChildren"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.html
new file mode 100644
index 0000000000..3900d1888f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.html
@@ -0,0 +1,97 @@
+---
+title: bookmarks.getRecent()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getRecent
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - getRecent
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/getRecent
+---
+<p>{{AddonSidebar()}}</p>
+
+<p><strong><code>bookmarks.getRecent()</code></strong> は、最近に追加されたブックマークを指定した最大個数まで取得し、{{WebExtAPIRef('bookmarks.BookmarkTreeNode', 'BookmarkTreeNode')}} オブジェクトの配列としてコールバック関数に渡します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.getRecent(
+ numberOfItems, // 整数
+ callback // 関数
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>numberOfItems</code></dt>
+ <dd>取得する要素の最大個数を指定する整数です。最近追加された要素のうち、ここで指定した個数までが戻り値のリストに含まれます。</dd>
+ <dt><code>callback</code></dt>
+ <dd>リストが取得された際に実行される関数です。この関数には以下の引数が渡ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>results</code></dt>
+ <dd>各要素が 1 つのブックマークノードを表す {{WebExtAPIRef('bookmarks.BookmarkTreeNode')}} オブジェクトの {{jsxref("array")}}</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.getRecent")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<p id="Find_the_most_recently_added_bookmark">以下の例は、直近に追加されたブックマークの URL を出力するものです。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">gotMostRecent</span><span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">.</span>length<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">[</span><span class="number token">0</span><span class="punctuation token">]</span><span class="punctuation token">.</span>url<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">getRecent</span><span class="punctuation token">(</span><span class="number token">1</span><span class="punctuation token">,</span> gotMostRecent<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-getRecent"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードに基づいて作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.html
new file mode 100644
index 0000000000..c13185cd5a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.html
@@ -0,0 +1,125 @@
+---
+title: bookmarks.getSubTree()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getSubTree
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - getSubTree
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/getSubTree
+---
+<p>{{AddonSidebar()}}</p>
+
+<p><strong><code>bookmarks.getSubTree()</code></strong> は、ID を指定して {{WebExtAPIRef("bookmarks.BookmarkTreeNode")}} を非同期に取得するメソッドです。</p>
+
+<p>対象がフォルダの場合、<code>children</code> プロパティを再帰的にたどることで、すべての子要素にアクセスすることができます。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.getSubTree(
+ id, // 文字列
+ callback // 関数
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>id</code></dt>
+ <dd>取得したい部分木のルートノードに対応する ID を表す {{jsxref("string")}} です。</dd>
+ <dt><code>callback</code></dt>
+ <dd>リクエストしたノードが取得された際に呼び出される関数です。この関数には以下の引数が渡ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>results</code></dt>
+ <dd>指定した ID に対応する {{WebExtAPIRef('bookmarks.BookmarkTreeNode')}} オブジェクトが 1 つ含まれた配列</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.getSubTree")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>以下の例は、指定したノードの配下にある部分木を再帰的に出力するものです。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">makeIndent</span><span class="punctuation token">(</span>indentLength<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">return</span> <span class="string token">"."</span><span class="punctuation token">.</span><span class="function token">repeat</span><span class="punctuation token">(</span>indentLength<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">logItems</span><span class="punctuation token">(</span>bookmarkItem<span class="punctuation token">,</span> indent<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>bookmarkItem<span class="punctuation token">.</span>url<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="function token">makeIndent</span><span class="punctuation token">(</span>indent<span class="punctuation token">)</span> <span class="operator token">+</span> bookmarkItem<span class="punctuation token">.</span>url<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="function token">makeIndent</span><span class="punctuation token">(</span>indent<span class="punctuation token">)</span> <span class="operator token">+</span> <span class="string token">"Folder"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ indent<span class="operator token">++</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>bookmarkItem<span class="punctuation token">.</span>children<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span>child <span class="keyword token">of</span> bookmarkItem<span class="punctuation token">.</span>children<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="function token">logItems</span><span class="punctuation token">(</span>child<span class="punctuation token">,</span> indent<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span>
+ indent<span class="operator token">--</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">logSubTree</span><span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="function token">logItems</span><span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">[</span><span class="number token">0</span><span class="punctuation token">]</span><span class="punctuation token">,</span> <span class="number token">0</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">handleClick</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">var</span> subTreeID <span class="operator token">=</span> <span class="string token">"unfiled_____"</span><span class="punctuation token">;</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">getSubTree</span><span class="punctuation token">(</span>subTreeID<span class="punctuation token">,</span> logSubTree<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a class="external external-icon" href="https://developer.chrome.com/extensions/bookmarks#method-getSubTree"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a class="external external-icon" href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<p> </p>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
+
+<p> </p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.html
new file mode 100644
index 0000000000..b66987075d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.html
@@ -0,0 +1,117 @@
+---
+title: bookmarks.getTree()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getTree
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - getTree
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/getTree
+---
+<p>{{AddonSidebar()}}</p>
+
+<p><strong><code>bookmarks.getTree()</code></strong> は、ブックマークツリーのルートを表した{{WebExtAPIRef("bookmarks.BookmarkTreeNode")}} オブジェクトの配列を返します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.getTree(
+ callback // 関数
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>ルートに相当するノードが取得された際に実行される関数です。この関数には以下の引数が渡ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>results</code></dt>
+ <dd>
+ <p>ルートノードを表す {{WebExtAPIRef('bookmarks.BookmarkTreeNode')}} オブジェクトが 1 つ含まれた配列</p>
+ </dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.getTree")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>以下の例は、ブックマークツリー全体を出力するものです。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">makeIndent</span><span class="punctuation token">(</span>indentLength<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">return</span> <span class="string token">"."</span><span class="punctuation token">.</span><span class="function token">repeat</span><span class="punctuation token">(</span>indentLength<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">logItems</span><span class="punctuation token">(</span>bookmarkItem<span class="punctuation token">,</span> indent<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>bookmarkItem<span class="punctuation token">.</span>url<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="function token">makeIndent</span><span class="punctuation token">(</span>indent<span class="punctuation token">)</span> <span class="operator token">+</span> bookmarkItem<span class="punctuation token">.</span>url<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="function token">makeIndent</span><span class="punctuation token">(</span>indent<span class="punctuation token">)</span> <span class="operator token">+</span> <span class="string token">"Folder"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ indent<span class="operator token">++</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>bookmarkItem<span class="punctuation token">.</span>children<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span>child <span class="keyword token">of</span> bookmarkItem<span class="punctuation token">.</span>children<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="function token">logItems</span><span class="punctuation token">(</span>child<span class="punctuation token">,</span> indent<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span>
+ indent<span class="operator token">--</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">logTree</span><span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="function token">logItems</span><span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">[</span><span class="number token">0</span><span class="punctuation token">]</span><span class="punctuation token">,</span> <span class="number token">0</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">handleClick</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">getTree</span><span class="punctuation token">(</span>logTree<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>この API は Chromium の <a class="external external-icon" href="https://developer.chrome.com/extensions/bookmarks#method-getTree"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a class="external external-icon" href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/import/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/import/index.html
new file mode 100644
index 0000000000..758b72dbfa
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/import/index.html
@@ -0,0 +1,114 @@
+---
+title: bookmarks.import()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/import
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - import
+translation_of: Archive/Add-ons/bookmarks.import
+---
+<p>{{AddonSidebar()}}</p>
+
+<p>ブックマークを HTML ブックマークファイルからインポートします。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.import(
+ function() {...} // 関数(省略可)
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code>{{optional_inline}}</dt>
+ <dd><code>function</code>.</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{ CompatibilityTable() }}</p>
+
+<div id="compat-desktop">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Chrome</th>
+ <th>Edge</th>
+ <th>Firefox (Gecko)</th>
+ <th>Opera</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatVersionUnknown }}</td>
+ <td>{{ CompatUnknown }}</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatOpera('33') }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<div id="compat-mobile">
+<table class="compat-table">
+ <tbody>
+ <tr>
+ <th>機能</th>
+ <th>Edge</th>
+ <th>Firefox OS</th>
+ <th>Firefox Mobile (Gecko)</th>
+ </tr>
+ <tr>
+ <td>基本サポート</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ <td>{{ CompatNo() }}</td>
+ </tr>
+ </tbody>
+</table>
+</div>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/index.html
new file mode 100644
index 0000000000..c1c073c551
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/index.html
@@ -0,0 +1,130 @@
+---
+title: bookmarks
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks
+---
+<p>{{AddonSidebar}}</p>
+
+<p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> {{WebExtAPIRef("bookmarks")}} API を利用すると、拡張機能からブラウザーのブックマークシステムにアクセスしたり、操作することができます。ページをブックマークしたり、既存のブックマークを取得したり、ブックマークを編集・削除・整理することが可能です。</p>
+
+<p>この API を使用する際は、拡張機能の <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a></code> ファイルで "bookmarks" <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a> を指定する必要があります。</p>
+
+<p>拡張機能ではブックマークツリーのルートノードではブックマークを作成・編集・削除できません。それをしようとすると次のエラーになります: "<em>The bookmark root cannot be modified</em>"</p>
+
+<h2 id="Types" name="Types">関連する値の型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("bookmarks.BookmarkTreeNode")}}</dt>
+ <dd>ブックマークツリー上のブックマークやフォルダーを表します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.BookmarkTreeNodeType")}}</dt>
+ <dd>ツリー内のノードがブックマークかフォルダーかセパレーターかを表す {{jsxref("string")}} の列挙型です。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.BookmarkTreeNodeUnmodifiable")}}</dt>
+ <dd>ブックマークやフォルダーが変更不可である理由を表す {{jsxref("string")}} の列挙型です。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.CreateDetails")}}</dt>
+ <dd>新しいブックマークを作成する際、{{WebExtAPIRef("bookmarks.create()")}} メソッドに渡す情報を含みます。</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("bookmarks.create()")}}</dt>
+ <dd>ブックマークやフォルダーを作成します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.get()")}}</dt>
+ <dd>ブックマークの ID や ID の配列を指定し、1 つ以上の {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode(s)")}} を取得します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.getChildren()")}}</dt>
+ <dd>指定した {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} の子要素を取得します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.getRecent()")}}</dt>
+ <dd>最近追加されたブックマークを取得します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.getSubTree()")}}</dt>
+ <dd>指定したノードを起点とする、ブックマークツリーの部分木を取得します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.getTree()")}}</dt>
+ <dd>ブックマークのツリー全体を {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} オブジェクトの配列として取得します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.move()")}}</dt>
+ <dd>指定した {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} を所望の場所に移します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.remove()")}}</dt>
+ <dd>ノードの ID を指定し、ブックマークや空のブックマークフォルダーを削除します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.removeTree()")}}</dt>
+ <dd>ブックマークのフォルダーを再帰的に削除します。すなわち、フォルダーノードの ID を指定し、そのノードと子要素すべてを削除します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.search()")}}</dt>
+ <dd>与えた条件に一致する {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNodes")}} を検索します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.update()")}}</dt>
+ <dd>ブックマークの ID を指定し、ブックマークの URL やタイトル、またはフォルダーの名前を更新します。</dd>
+</dl>
+
+<h2 id="Events" name="Events">Events</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("bookmarks.onCreated")}}</dt>
+ <dd>ブックマークやフォルダーが作成された際に発火します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onRemoved")}}</dt>
+ <dd>ブックマークやフォルダーが削除された際に発火します。フォルダーが再帰的に削除された場合は、そのフォルダーに対して一回だけ発火し、フォルダーの中身については発火しません。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onChanged")}}</dt>
+ <dd>ブックマークやフォルダーが変更された際に発火します。現在は <code>title</code> と url の変更に対してのみ発火します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onMoved")}}</dt>
+ <dd>異なる親フォルダーへ、または同じフォルダー内の異なる場所へブックマークやフォルダーが移された際に発火します。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onChildrenReordered")}}</dt>
+ <dd>UI で表示されている順序に伴って子フォルダーの順序も変更された際に発火します。{{WebExtAPIRef("bookmarks.move", "move()")}} の実行後には発火しません。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onImportBegan")}}</dt>
+ <dd>ブックマークのインポートが開始した際に発火します。パフォーマンスが重要である場合、イベントのオブザーバは {{WebExtAPIRef("bookmarks.onImportEnded")}} が発火するまで {{WebExtAPIRef("bookmarks.onCreated")}} を無視すべきでしょう。その場合であっても、オブザーバは他のイベントについては即座に処理すべきでしょう。</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onImportEnded")}}</dt>
+ <dd>ブックマークのインポートが終了した際に発火します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks")}}</p>
+
+<div class="hidden note">
+<p>The "Chrome incompatibilities" section is included from <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities"> https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities</a> using the <a href="/ja/docs/Template:WebExtChromeCompat">WebExtChromeCompat</a> macro.</p>
+
+<p>If you need to update this content, edit <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities">https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities</a>, then shift-refresh this page to see your changes.</p>
+</div>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/move/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/move/index.html
new file mode 100644
index 0000000000..c164626551
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/move/index.html
@@ -0,0 +1,107 @@
+---
+title: bookmarks.move()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/move
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/move
+---
+<p>{{AddonSidebar()}}</p>
+
+<p><strong><code>bookmarks.move()</code></strong> は、指定した {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} をブックマークツリー内の所望の位置に移すメソッドです。このメソッドにより、ブックマークを新しいフォルダの中や、同じフォルダ内の別の場所に移動させることができます。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.move(
+ id, // 文字列
+ destination, // オブジェクト
+ callback // 関数(省略可)
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>id</code></dt>
+ <dd>移動させるブックマーク / フォルダの ID を表す {{jsxref("string")}} です。</dd>
+ <dt><code>destination</code></dt>
+ <dd>ブックマークの移動先を表す {{jsxref("object")}} です。このオブジェクトには以下のプロパティが必ず 1 つ以上含まれます。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>parentId </code>{{optional_inline}}</dt>
+ <dd>移動先フォルダの ID を指定する {{jsxref("string")}} です。この値が省略された場合、現在と同じフォルダ内の新しい場所へ移動されます。</dd>
+ <dt><code>index </code>{{optional_inline}}</dt>
+ <dd>移動先フォルダ内における位置を指定する 0 起点のインデックスです。値が 0 の場合、そのフォルダの先頭に移動されます。値が省略された場合、新しい親フォルダ内の最後に移動されます。</dd>
+ </dl>
+ </dd>
+ <dt><code>callback </code>{{optional_inline}}</dt>
+ <dd>移動が終了した際に呼び出される {{jsxref("function")}} です。この関数は以下の引数を 1 つ受け取ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>result</code></dt>
+ <dd>移動された新しいノードを表す {{WebExtAPIRef('bookmarks.BookmarkTreeNode', 'BookmarkTreeNode')}}</dd>
+ </dl>
+
+ <p> </p>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.move")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<h3 id="ブックマークを現在のフォルダの先頭へ移動">ブックマークを現在のフォルダの先頭へ移動</h3>
+
+<p>次の例は、既存のブックマークを現在のフォルダの先頭へ移動させるものです。移動後に必要な処理は特にないため、ここではコールバック無しで呼び出しています。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">move</span><span class="punctuation token">(</span>bookmarkID<span class="punctuation token">,</span> <span class="punctuation token">{</span> index<span class="punctuation token">:</span> <span class="number token">0</span> <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<h3 id="ブックマークを異なるフォルダへ移動">ブックマークを異なるフォルダへ移動</h3>
+
+<p>以下の例は、ID で指定したブックマークを、別の ID で指定したフォルダへ移動させる関数です。今回は、移動後に実行されるコールバック関数も指定しています。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">moveToFolder</span><span class="punctuation token">(</span>bookmarkId<span class="punctuation token">,</span> destinationId<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ browser<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">move</span><span class="punctuation token">(</span>bookmarkId<span class="punctuation token">,</span> <span class="punctuation token">{</span> parentId<span class="punctuation token">:</span> destinationId <span class="punctuation token">}</span><span class="punctuation token">,</span>
+ <span class="keyword token">function</span><span class="punctuation token">(</span>updatedNode<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="comment token">/* ブックマークの移動後に行う処理 */</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium <code>の </code><a href="https://developer.chrome.com/extensions/bookmarks#method-move"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメント<code>は </code><a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onchanged/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onchanged/index.html
new file mode 100644
index 0000000000..bf6cf83ce7
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onchanged/index.html
@@ -0,0 +1,138 @@
+---
+title: bookmarks.onChanged
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onChanged
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Event
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - onChanged
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onChanged
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>以下の変更に対して発火します。</p>
+
+<ul>
+ <li>ブックマークのタイトルまたは URL</li>
+ <li>フォルダの名前</li>
+</ul>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.onChanged.addListener(function(
+ id, // 文字列
+ changeInfo // オブジェクト
+) {...})
+browser.bookmarks.onChanged.removeListener(listener)
+browser.bookmarks.onChanged.hasListener(listener)
+</pre>
+
+<p>このイベントには 3 つのメソッドが用意されています。</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>イベントリスナを追加します。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>イベントリスナを削除します。引数 <code>listener</code> には削除したいリスナを指定します。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code> がイベントリスナとして登録されているか確認します。登録されていれば <code>true</code> を、それ以外の場合は <code>false</code> を返します。</dd>
+</dl>
+
+<h2 id="addListener_の構文">addListener の構文</h2>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>イベントが発火した際に呼び出される関数を指定します。この関数には以下の引数が渡ります。</p>
+ </dd>
+</dl>
+
+<dl>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>id</code></dt>
+ <dd>変更を受けた要素の ID を表す {{jsxref("string")}}</dd>
+ </dl>
+
+ <dl class="reference-values">
+ <dt><code>changeInfo</code></dt>
+ <dd>変更に関する詳細を含んだ {{jsxref("object")}}</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="付随するオブジェクト">付随するオブジェクト</h2>
+
+<h3 id="changeInfo">changeInfo</h3>
+
+<dl class="reference-values">
+ <dt><code>title</code></dt>
+ <dd>変更された要素のタイトルを表す {{jsxref("string")}}</dd>
+ <dt><code>url</code>{{optional_inline}}</dt>
+ <dd>変更された要素の URL を表す {{jsxref("string")}}。要素がフォルダだった場合に値は入りません。</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.onChanged")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">handleChanged</span><span class="punctuation token">(</span>id<span class="punctuation token">,</span> changeInfo<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Item: "</span> <span class="operator token">+</span> id <span class="operator token">+</span> <span class="string token">" changed"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Title: "</span> <span class="operator token">+</span> changeInfo<span class="punctuation token">.</span>title<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Url: "</span> <span class="operator token">+</span> changeInfo<span class="punctuation token">.</span>url<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">handleClick</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span>onChanged<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleChanged<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onchildrenreordered/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onchildrenreordered/index.html
new file mode 100644
index 0000000000..3d5b10eb91
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onchildrenreordered/index.html
@@ -0,0 +1,130 @@
+---
+title: bookmarks.onChildrenReordered
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onChildrenReordered
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Event
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - onChildrenReordered
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onChildrenReordered
+---
+<p>{{AddonSidebar()}}</p>
+
+<p>UI で表示されている順序に伴って子フォルダの順序も変更された際に発火します。{{WebExtAPIRef("bookmarks.move()")}} の実行後や、UI におけるドラッグの際には発火しません。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.onChildrenReordered.addListener(function(
+ id, // 文字列
+ reorderInfo // オブジェクト
+) {...})
+browser.bookmarks.onChildrenReordered.removeListener(listener)
+browser.bookmarks.onChildrenReordered.hasListener(listener)
+</pre>
+
+<p>このイベントには 3 つのメソッドが用意されています。</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>イベントリスナを追加します。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>イベントリスナを削除します。引数 <code>listener</code> には削除したいリスナを指定します。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code> がイベントリスナとして登録されているか確認します。登録されていれば <code>true</code> を、それ以外の場合は <code>false</code> を返します。</dd>
+</dl>
+
+<h2 id="addListener_の構文">addListener の構文</h2>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>イベントが発火した際に呼び出される関数を指定します。この関数には以下の引数が渡ります。</p>
+ </dd>
+</dl>
+
+<dl>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>id</code></dt>
+ <dd>子要素の順序が変更されたフォルダの ID を表す {{jsxref("string")}} です。</dd>
+ </dl>
+
+ <dl class="reference-values">
+ <dt><code>reorderInfo</code></dt>
+ <dd>詳細情報を含んだ {{jsxref("object")}} です。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="付随するオブジェクト">付随するオブジェクト</h2>
+
+<h3 id="reorderInfo">reorderInfo</h3>
+
+<dl class="reference-values">
+ <dt><code>childIds</code></dt>
+ <dd>{{jsxref("string")}} の {{jsxref("array")}} です。このフォルダに含まれるブックマーク要素すべての ID が含まれており、UI に表示されているのと同じ順番に並んでいます。</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.onChildrenReordered")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">handleChildrenReordered</span><span class="punctuation token">(</span>id<span class="punctuation token">,</span> reorderInfo<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Item: "</span> <span class="operator token">+</span> id <span class="operator token">+</span> <span class="string token">" children reordered"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Children: "</span> <span class="operator token">+</span> reorderInfo<span class="punctuation token">.</span>childIds<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">handleClick</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span>onChildrenReordered<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleChildrenReordered<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License. に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/oncreated/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/oncreated/index.html
new file mode 100644
index 0000000000..5c1eea40d5
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/oncreated/index.html
@@ -0,0 +1,104 @@
+---
+title: bookmarks.onCreated
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onCreated
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Event
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - onCreated
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onCreated
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>ブックマークやフォルダが作成された際に発火します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.onCreated.addListener(function(
+ id, // 文字列
+ bookmark // BookmarkTreeNode
+) {...})
+browser.bookmarks.onCreated.removeListener(listener)
+browser.bookmarks.onCreated.hasListener(listener)
+</pre>
+
+<p>このイベントには 3 つのメソッドが用意されています。</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>イベントリスナを追加します。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>イベントリスナを削除します。引数 <code>listener</code> には削除したいリスナを指定します。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code> がイベントリスナとして登録されているか確認します。登録されていれば <code>true</code> を、それ以外の場合は <code>false</code> を返します。</dd>
+</dl>
+
+<h2 id="addListener_の構文">addListener の構文</h2>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>イベントが発火した際に呼び出される {{jsxref("function")}} です。この関数には以下の引数が渡ります。</p>
+
+ <dl class="reference-values">
+ <dt><code>id</code></dt>
+ <dd><code>string</code>.</dd>
+ </dl>
+
+ <dl class="reference-values">
+ <dt><code>bookmark</code></dt>
+ <dd>{{WebExtAPIRef('bookmarks.BookmarkTreeNode')}}.</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.onCreated")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onimportbegan/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onimportbegan/index.html
new file mode 100644
index 0000000000..6a11683646
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onimportbegan/index.html
@@ -0,0 +1,110 @@
+---
+title: bookmarks.onImportBegan
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onImportBegan
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Event
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - onImportBegan
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onImportBegan
+---
+<p>{{AddonSidebar()}}</p>
+
+<p>ブックマークのインポートが開始した際に発火します。</p>
+
+<p>ブックマークをインポートしている間、{{WebExtAPIRef("bookmarks.onCreated", "onCreated")}} が何度も発火する場合があります。<code>onCreated</code> に紐づけるリスナ関数の処理が重い場合には、<code>onImportBegan</code> と {{WebExtAPIRef("bookmarks.onImportEnded", "onImportEnded")}} をリッスンし、<code>onImportEnded</code>  が発火するまでは <code>onCreated</code> を無視してください。他のイベントは通常通り処理できます。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.onImportBegan.addListener(function() {...})
+browser.bookmarks.onImportBegan.removeListener(listener)
+browser.bookmarks.onImportBegan.hasListener(listener)
+</pre>
+
+<p>このイベントには 3 つのメソッドが用意されています。</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>イベントリスナを追加します。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>イベントリスナを削除します。引数 <code>listener</code> には削除したいリスナを指定します。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code> がイベントリスナとして登録されているか確認します。登録されていれば <code>true</code> を、それ以外の場合は <code>false</code> を返します。</dd>
+</dl>
+
+<h2 id="addListener_の構文">addListener の構文</h2>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>イベントが発火した際に呼び出される関数を指定します。この関数に渡される引数はありません。</p>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.onImportBegan")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">handleImportBegan</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Importing..."</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">handleImportEnded</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"...finished."</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">handleClick</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span>onImportBegan<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleImportBegan<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span>onImportEnded<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleImportEnded<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License. に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onimportended/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onimportended/index.html
new file mode 100644
index 0000000000..4ecfe782cf
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onimportended/index.html
@@ -0,0 +1,110 @@
+---
+title: bookmarks.onImportEnded
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onImportEnded
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Event
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - onImportEnded
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onImportEnded
+---
+<p>{{AddonSidebar()}}</p>
+
+<p>ブックマークのインポートが終了した際に発火します。</p>
+
+<p>{{WebExtAPIRef("bookmarks.onImportBegan")}} も参照してください。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.onImportEnded.addListener(function() {...})
+browser.bookmarks.onImportEnded.removeListener(listener)
+browser.bookmarks.onImportEnded.hasListener(listener)
+</pre>
+
+<p>このイベントには 3 つのメソッドが用意されています。</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>イベントリスナを追加します。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>イベントリスナを削除します。引数 <code>listener</code> には削除したいリスナを指定します。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code> がイベントリスナとして登録されているか確認します。登録されていれば <code>true</code> を、それ以外の場合は <code>false</code> を返します。</dd>
+</dl>
+
+<h2 id="addListener_の構文">addListener の構文</h2>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>イベントが発火した際に呼び出される関数を指定します。この関数に渡される引数はありません。</p>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.onImportEnded")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">handleImportBegan</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Importing..."</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">handleImportEnded</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"...finished."</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">handleClick</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span>onImportBegan<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleImportBegan<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span>onImportEnded<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleImportEnded<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onmoved/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onmoved/index.html
new file mode 100644
index 0000000000..6b14db985b
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onmoved/index.html
@@ -0,0 +1,139 @@
+---
+title: bookmarks.onMoved
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onMoved
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Event
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - onMoved
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onMoved
+---
+<p>{{AddonSidebar()}}</p>
+
+<p>ブックマークやフォルダが、異なる親フォルダやフォルダ内の別の場所へ移された際に発火します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.onMoved.addListener(function(
+ id, // 文字列
+ moveInfo // オブジェクト
+) {...})
+browser.bookmarks.onMoved.removeListener(listener)
+browser.bookmarks.onMoved.hasListener(listener)
+</pre>
+
+<p>このイベントには 3 つのメソッドが用意されています。</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>イベントリスナを追加します。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>イベントリスナを削除します。引数 <code>listener</code> には削除したいリスナを指定します。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code> がイベントリスナとして登録されているか確認します。登録されていれば <code>true</code> を、それ以外の場合は <code>false</code> を返します。</dd>
+</dl>
+
+<h2 id="addListener_の構文">addListener の構文</h2>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>イベントが発火した際に呼び出される関数を指定します。この関数には以下の引数が渡ります。</p>
+ </dd>
+</dl>
+
+<dl>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>id</code></dt>
+ <dd>移動した要素の ID を表す {{jsxref("string")}} です。</dd>
+ </dl>
+
+ <dl class="reference-values">
+ <dt><code>moveInfo</code></dt>
+ <dd>移動に関する詳細を含んだ {{jsxref("object")}} です。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="付随するオブジェクト">付随するオブジェクト</h2>
+
+<h3 id="moveInfo">moveInfo</h3>
+
+<dl class="reference-values">
+ <dt><code>parentId</code></dt>
+ <dd>新しい親フォルダを表す {{jsxref("string")}}</dd>
+ <dt><code>index</code></dt>
+ <dd>この要素が親から見て何番目にあるかを表す整数</dd>
+ <dt><code>oldParentId</code></dt>
+ <dd>移動前の親フォルダを表す {{jsxref("string")}}</dd>
+ <dt><code>oldIndex</code></dt>
+ <dd><code>移動前において、</code>この要素が親から見て何番目にあったかを表す整数</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.onMoved")}}</p>
+
+<h2 id="Examples">Examples</h2>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">handleMoved</span><span class="punctuation token">(</span>id<span class="punctuation token">,</span> moveInfo<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Item: "</span> <span class="operator token">+</span> id <span class="operator token">+</span> <span class="string token">" moved"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Old index: "</span> <span class="operator token">+</span> moveInfo<span class="punctuation token">.</span>oldIndex<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"New index: "</span> <span class="operator token">+</span> moveInfo<span class="punctuation token">.</span>index<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Old folder: "</span> <span class="operator token">+</span> moveInfo<span class="punctuation token">.</span>oldParentId<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"New folder: "</span> <span class="operator token">+</span> moveInfo<span class="punctuation token">.</span>parentId<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">handleClick</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span>onMoved<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleMoved<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge compatibility の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onremoved/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onremoved/index.html
new file mode 100644
index 0000000000..abe7b7968a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/onremoved/index.html
@@ -0,0 +1,135 @@
+---
+title: bookmarks.onRemoved
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onRemoved
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Event
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - onRemoved
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onRemoved
+---
+<p>{{AddonSidebar()}}</p>
+
+<p>ブックマークやフォルダが削除された際に発火します。フォルダが再帰的に削除された場合は、そのフォルダに対して 1 回だけ発火し、そのフォルダの中身に関しては発火しません。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.onRemoved.addListener(function(
+ id, // 文字列
+ removeInfo // オブジェクト
+) {...})
+browser.bookmarks.onRemoved.removeListener(listener)
+browser.bookmarks.onRemoved.hasListener(listener)
+</pre>
+
+<p>このイベントには 3 つのメソッドが用意されています。</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>イベントリスナを追加します。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>イベントリスナを削除します。引数 <code>listener</code> には削除したいリスナを指定します。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code> がイベントリスナとして登録されているか確認します。登録されていれば <code>true</code> を、それ以外の場合は <code>false</code> を返します。</dd>
+</dl>
+
+<h2 id="addListener_の構文">addListener の構文</h2>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>イベントが発火した際に呼び出される関数を指定します。この関数には以下の引数が渡ります。</p>
+ </dd>
+</dl>
+
+<dl>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>id</code></dt>
+ <dd>削除された要素の ID を表す {{jsxref("string")}}</dd>
+ </dl>
+
+ <dl class="reference-values">
+ <dt><code>removeInfo</code></dt>
+ <dd>削除された要素の詳細を含んだ {{jsxref("object")}}</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="付随するオブジェクト">付随するオブジェクト</h2>
+
+<h3 id="removeInfo">removeInfo</h3>
+
+<dl class="reference-values">
+ <dt><code>parentId</code></dt>
+ <dd>要素の親の ID を表す {{jsxref("string")}}</dd>
+ <dt><code>index</code></dt>
+ <dd>この要素が親からみて何番目にあるかを表す 0 以上の整数</dd>
+ <dt><code>node</code></dt>
+ <dd>削除された要素に関する詳細を含む {{WebExtAPIRef('bookmarks.BookmarkTreeNode')}}</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.onRemoved")}}</p>
+
+<h2 id="Examples">Examples</h2>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">handleRemoved</span><span class="punctuation token">(</span>id<span class="punctuation token">,</span> removeInfo<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Item: "</span> <span class="operator token">+</span> id <span class="operator token">+</span> <span class="string token">" removed"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Title: "</span> <span class="operator token">+</span> removeInfo<span class="punctuation token">.</span>node<span class="punctuation token">.</span>title<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Url: "</span> <span class="operator token">+</span> removeInfo<span class="punctuation token">.</span>node<span class="punctuation token">.</span>url<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">handleClick</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span>onRemoved<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleRemoved<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/remove/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/remove/index.html
new file mode 100644
index 0000000000..a76c3f74bc
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/remove/index.html
@@ -0,0 +1,96 @@
+---
+title: bookmarks.remove()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/remove
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - remove
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/remove
+---
+<p>{{AddonSidebar()}}</p>
+
+<p><strong><code>bookmarks.remove()</code></strong> は、ブックマークや空のブックマークフォルダを削除するメソッドです。</p>
+
+<p>ブックマークが見つからなかった、またはフォルダが空ではなかった場合には {{WebExtAPIRef("runtime.lastError")}} がセットされ、エラーの有無はコールバック内で確認できます。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.remove(
+ id, // 文字列
+ callback // 関数(省略可)
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>id</code></dt>
+ <dd>削除したいブックマーク / 空フォルダの ID を指定する {{jsxref("string")}} です。</dd>
+ <dt><code>callback</code>{{optional_inline}}</dt>
+ <dd>ブックマークやフォルダが削除された際に実行される関数です。この関数に渡される引数はありません。</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.remove")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<p>以下の例はブックマークを削除するものです。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onRemoved</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>chrome<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span>lastError<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>chrome<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span>lastError<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"bookmark item removed!"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">remove</span><span class="punctuation token">(</span>bookmarkItemId"<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.html
new file mode 100644
index 0000000000..03378dfc79
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.html
@@ -0,0 +1,101 @@
+---
+title: bookmarks.removeTree()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/removeTree
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - removeTree
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/removeTree
+---
+<p>{{AddonSidebar()}}</p>
+
+<p><strong><code>bookmarks.removeTree()</code></strong> は、ブックマークフォルダやその要素を再帰的に削除するメソッドです。</p>
+
+<p>ブックマークが見つからなかった場合は {{WebExtAPIRef("runtime.lastError")}} がセットされ、エラーの有無はコールバック内で確認できます。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.removeTree(
+ id, // 文字列
+ callback // 関数(省略可)
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>id</code></dt>
+ <dd>子要素とともに削除されるフォルダノードの ID を表す {{jsxref("string")}} です。</dd>
+ <dt><code>callback</code>{{optional_inline}}</dt>
+ <dd>ノードが削除された際に実行される関数です。この関数に渡される引数はありません。</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.removeTree")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<p>以下の例は、"MDN" という名前のフォルダを探し、それ自身とその子要素をすべて削除するものです。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onRemoved</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>chrome<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span>lastError<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>chrome<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span>lastError<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"bookmark item removed!"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">removeMDN</span><span class="punctuation token">(</span>searchResults<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>searchResults<span class="punctuation token">.</span>length<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">removeTree</span><span class="punctuation token">(</span>searchResults<span class="punctuation token">[</span><span class="number token">0</span><span class="punctuation token">]</span><span class="punctuation token">.</span>id<span class="punctuation token">,</span> onRemoved<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">search</span><span class="punctuation token">(</span><span class="punctuation token">{</span> title<span class="punctuation token">:</span> <span class="string token">"MDN"</span> <span class="punctuation token">}</span><span class="punctuation token">,</span> removeMDN<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/search/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/search/index.html
new file mode 100644
index 0000000000..4532e33fdd
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/search/index.html
@@ -0,0 +1,135 @@
+---
+title: bookmarks.search()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/search
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - Search
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/search
+---
+<div>{{AddonSidebar()}}</div>
+
+<p><strong><code>bookmarks.search()</code></strong> 関数は、指定したクエリにマッチするブックマークを検索するものです。マッチしたブックマークは、{{WebExtAPIRef('bookmarks.BookmarkTreeNode')}} オブジェクトの配列として、指定されたコールバック関数の引数に渡されます。</p>
+
+<p>入力引数の値や型が不正だった場合、この関数は例外を送出します。エラーメッセージは<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/%E3%83%87%E3%83%90%E3%83%83%E3%82%B0">コンソール</a>で確認できます。送出された例外はエラー ID を含んでおらず、またメッセージを変更される可能性があるため、これらを解析するようなコードは書かないでください。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.search(
+ query, // 文字列またはオブジェクト
+ callback // 関数
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>query</code></dt>
+ <dd>実行するクエリを表す {{jsxref("string")}} または {{jsxref("object")}} です。</dd>
+ <dd><code>query</code> を文字列で指定する場合、<code>query</code> は 0 個以上の検索項から構成されます。検索項はスペースで区切りますが、複数語からなる句を検索したい場合は引用符でくくります。それぞれの検索項はブックマークの URL やタイトルの部分文字列にマッチします(大文字・小文字は区別されません)。あるブックマークがクエリにマッチするには、クエリの検索項すべてがマッチしなければなりません。</dd>
+ <dd>
+ <p><code>query</code> をオブジェクトで指定する場合、以下の 3 つのプロパティのうち 0 個以上を指定することになります。あるブックマークがクエリにマッチするには、指定されたプロパティすべてにおいてマッチしなければなりません。</p>
+ </dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>query</code>{{optional_inline}}</dt>
+ <dd>1 つ以上の検索項を含んだ {{jsxref("string")}} を指定します。このフォーマットは <code>query</code> 引数における文字列のフォーマットと同じです。このプロパティ値が {{jsxref("string")}} でなかった場合、 例外が送出されます。</dd>
+ <dt><code>url</code>{{optional_inline}}</dt>
+ <dd>ブックマークの URL と完全一致しなければならない {{jsxref("string")}} <code>を指定します。</code>マッチの際に大文字・小文字は区別されず、また末尾のスラッシュも無視されます。</dd>
+ <dd>
+ <p>無効な URL を指定した場合、例外が送出されます。</p>
+ </dd>
+ </dl>
+
+ <dl class="reference-values">
+ <dt><code>title</code>{{optional_inline}}</dt>
+ <dd>ブックマークのタイトルと完全一致しなければならない {{jsxref("string")}} <code>を指定します。</code>マッチの際には大文字・小文字が区別されます。</dd>
+ </dl>
+ </dd>
+ <dt><code>callback</code></dt>
+ <dd>クエリの結果が得られた場合に呼び出される関数を指定します。この関数には以下の引数が渡ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>results</code></dt>
+ <dd>{{WebExtAPIRef('bookmarks.BookmarkTreeNode')}} オブジェクトの配列であり、各要素はマッチしたブックマークをそれぞれ表しています。何も見つからなかった場合は空の配列となります。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.search")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<p>以下の例は、ブックマークすべての ID を出力するものです。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onGot</span><span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span>item <span class="keyword token">of</span> bookmarkItems<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>item<span class="punctuation token">.</span>id<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">search</span><span class="punctuation token">(</span><span class="punctuation token">{</span><span class="punctuation token">}</span><span class="punctuation token">,</span> onGot<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>以下の例は、その時にアクティブなタブがブックマークされているかどうかを確認するものです。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onGot</span><span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>bookmarkItems<span class="punctuation token">.</span>length<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"active tab is bookmarked"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"active tab is not bookmarked"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">checkActiveTab</span><span class="punctuation token">(</span>tab<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">search</span><span class="punctuation token">(</span><span class="punctuation token">{</span>url<span class="punctuation token">:</span> tab<span class="punctuation token">.</span>url<span class="punctuation token">}</span><span class="punctuation token">,</span> onGot<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>checkActiveTab<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/bookmarks#method-search"><code>chrome.bookmarks</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> における Chromium のコードから作成されています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/bookmarks/update/index.html b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/update/index.html
new file mode 100644
index 0000000000..8ceee69300
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/bookmarks/update/index.html
@@ -0,0 +1,117 @@
+---
+title: bookmarks.update()
+slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/update
+tags:
+ - API
+ - Add-ons
+ - Bookmarks
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - Update
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/update
+---
+<p>{{AddonSidebar()}}</p>
+
+<p><strong><code>bookmarks.update()</code></strong> は、ブックマークの URL やタイトル、またはフォルダの名前を更新するメソッドです。</p>
+
+<p>ブックマーク要素が見つからなかった場合には {{WebExtAPIRef("runtime.lastError")}} がセットされるので、エラーの有無をコールバックで確認できます。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="brush: js">browser.bookmarks.update(
+ id, // 文字列
+ changes, // オブジェクト
+ callback // 関数(省略可)
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>id</code></dt>
+ <dd>更新したいブックマーク / フォルダの ID を表す {{jsxref("string")}} です。</dd>
+ <dt><code>changes</code></dt>
+ <dd>適用したい変更内容を表す {{jsxref("object")}} であり、以下のプロパティから構成されます。指定しなかったプロパティについて、ブックマークやフォルダが変更されることはありません。<br>
+
+ <dl class="reference-values">
+ <dt><code>title</code>{{optional_inline}}</dt>
+ <dd><code>id</code> がフォルダを表す場合、ブックマークの新しいタイトル / フォルダの新しい名前を指定する {{jsxref("string")}} です。</dd>
+ <dt><code>url</code>{{optional_inline}}</dt>
+ <dd>ブックマークの新しい URL を指定する {{jsxref("string")}} です。</dd>
+ </dl>
+ </dd>
+ <dt><code>callback</code>{{optional_inline}}</dt>
+ <dd>変更が適用された際に実行される関数です。この関数には次の引数が 1 つ渡ります。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>result</code></dt>
+ <dd>更新されたブックマークを表す{{WebExtAPIRef('bookmarks.BookmarkTreeNode')}} オブジェクトです。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.bookmarks.update")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<h3 id="フォルダのリネーム">フォルダのリネーム</h3>
+
+<p>以下の例は、"MDN" という名前のフォルダすべてを "MDN" to "Mozilla Developer Network (MDN)" にリネームするものです。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">updateFolders</span><span class="punctuation token">(</span>items<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span>item <span class="keyword token">of</span> items<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="comment token">// only folders, so skip items with a `url`</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>item<span class="punctuation token">.</span>url<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">update</span><span class="punctuation token">(</span>item<span class="punctuation token">.</span>id<span class="punctuation token">,</span> <span class="punctuation token">{</span>
+ title<span class="punctuation token">:</span> <span class="string token">"Mozilla Developer Network (MDN)"</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>bookmarks<span class="punctuation token">.</span><span class="function token">search</span><span class="punctuation token">(</span><span class="punctuation token">{</span> title<span class="punctuation token">:</span> <span class="string token">"MDN"</span> <span class="punctuation token">}</span><span class="punctuation token">,</span> updateFolders<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/bookmarks#method-update"><code>chrome.bookmarks</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/browseraction/colorarray/index.html b/files/ja/mozilla/add-ons/webextensions/api/browseraction/colorarray/index.html
new file mode 100644
index 0000000000..70bb6d5039
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/browseraction/colorarray/index.html
@@ -0,0 +1,67 @@
+---
+title: browserAction.ColorArray
+slug: Mozilla/Add-ons/WebExtensions/API/browserAction/ColorArray
+translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/ColorArray
+---
+<div>{{AddonSidebar()}}</div>
+
+<h2 id="型">型</h2>
+
+<p>RGBA色を定義する、4つの0から255の整数の<code>配列</code>です。4つの値は以下のチャネルを指定します:</p>
+
+<ol>
+ <li>赤(Red)</li>
+ <li>緑(Green)</li>
+ <li>青(Blue)</li>
+ <li>アルファ(Alpha) (不透明度)</li>
+</ol>
+
+<p>たとえば、不透明な赤は<code>[255, 0, 0, 255]</code>です。</p>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.browserAction.ColorArray")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>このAPIはChromiumの<a href="https://developer.chrome.com/extensions/browserAction#type-ColorArray"><code>chrome.browserAction</code></a> APIに基づいています。このドキュメントはChromiumコードの <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a>から派生したものです。</p>
+
+<p> </p>
+
+<p>Microsoft Edgeの互換性データはMicrosoft Corporationから提供されており、Creative Commons Attribution 3.0 United States Licenseのもとにここに含まれています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/browseraction/disable/index.html b/files/ja/mozilla/add-ons/webextensions/api/browseraction/disable/index.html
new file mode 100644
index 0000000000..5eb7c5f3c4
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/browseraction/disable/index.html
@@ -0,0 +1,87 @@
+---
+title: browserAction.disable()
+slug: Mozilla/Add-ons/WebExtensions/API/browserAction/disable
+translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/disable
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>タブに対してブラウザアクションを無効にします。つまり、タブがアクティブな時クリックされなくなります。</p>
+
+<h2 id="書式">書式</h2>
+
+<pre class="syntaxbox brush:js">browser.browserAction.disable(
+ tabId // optional integer
+)
+</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>tabId</code>{{optional_inline}}</dt>
+ <dd><code>integer</code>. ブラウザアクションを無効にしたいタブのIDです。</dd>
+</dl>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.browserAction.disable")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>クリックされたときブラウザアクションを無効にし、新しいタブが開かれる毎回再度有効にします:</p>
+
+<pre class="brush: js">browser.tabs.onCreated.addListener(() =&gt; {
+ browser.browserAction.enable();
+});
+
+browser.browserAction.onClicked.addListener(() =&gt; {
+ browser.browserAction.disable();
+});
+</pre>
+
+<p>アクティブなタブにだけブラウザアクションを無効にします:</p>
+
+<pre class="brush: js">browser.browserAction.onClicked.addListener((tab) =&gt; {
+ browser.browserAction.disable(tab.id);
+});</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/browserAction#method-disable"><code>chrome.browserAction</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/browseraction/index.html b/files/ja/mozilla/add-ons/webextensions/api/browseraction/index.html
new file mode 100644
index 0000000000..f5291179ee
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/browseraction/index.html
@@ -0,0 +1,129 @@
+---
+title: browserAction
+slug: Mozilla/Add-ons/WebExtensions/API/browserAction
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - browserAction
+translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ブラウザーのツールバーにボタンを追加します。</p>
+
+<p><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_action">ブラウザーアクション</a>はブラウザーのツールバー内のボタンです。</p>
+
+<p>これをボタンつきポップアップと関連付けられます。ポップアップは通常のウェブページ同様に、HTML, CSS, JavaScript を使って指定できます。ポップアップの中で動く JavaScript はバックグラウンドスクリプトとすべて同じ WebExtension API にアクセスできますが、グローバルコンテキストはブラウザーに表示される現在のページではなく、ポップアップになります。ウェブページに影響するには <a href="/ja/Add-ons/WebExtensions/Modify_a_web_page#Messaging">messages</a> 経由で通信する必要があります。</p>
+
+<p>ユーザーがアイコンをクリックした時に、ポップアップを指定していると、表示され — そしてコンテンツが読み込まれるでしょう 。ポップアップを指定していない時は、ユーザーがアイコンをクリックした時、拡張機能にイベントがディスパッチされます。</p>
+
+<p>たいていのブラウザーアクションのプロパティは、manifest.json 内の <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> キーを用いて宣言的に定義できます。</p>
+
+<p><code>browserAction</code> API では、次が可能です:</p>
+
+<ul>
+ <li>{{WebExtAPIRef("browserAction.onClicked")}} を使ってアイコンのクリックをリッスンする</li>
+ <li>アイコンのプロパティ — アイコン、タイトル、ポップアップなど、の取得、設定。これはすべてのタブを通してグローバルにも、またはタブの ID を追加引数で渡すことで特定のタブだけにも取得、設定できます。</li>
+</ul>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("browserAction.ColorArray")}}</dt>
+ <dd>RGBA 色を決める 0-255 の範囲の4整数の配列</dd>
+ <dt>{{WebExtAPIRef("browserAction.ImageDataType")}}</dt>
+ <dd>画像のピクセルデータ。<code><a href="/ja/docs/Web/API/ImageData">ImageData</a></code> オブジェクト (例えば {{htmlelement("canvas")}} 要素から) でないといけない。</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("browserAction.setTitle()")}}</dt>
+ <dd>ブラウザーアクションのタイトルをセットする。ツールチップに表示される。</dd>
+ <dt>{{WebExtAPIRef("browserAction.getTitle()")}}</dt>
+ <dd>ブラウザーアクションのタイトルを取得します。</dd>
+ <dt>{{WebExtAPIRef("browserAction.setIcon()")}}</dt>
+ <dd>ブラウザーアクションのアイコンをセットします。</dd>
+ <dt>{{WebExtAPIRef("browserAction.setPopup()")}}</dt>
+ <dd>ユーザーがブラウザーアクションのアイコンをクリックした時に表示されるポップアップの HTML 文書をセットします。</dd>
+ <dt>{{WebExtAPIRef("browserAction.getPopup()")}}</dt>
+ <dd>ブラウザーアクションのポップアップとしてセットされた HTML 文書を取得します。</dd>
+ <dt>{{WebExtAPIRef("browserAction.openPopup()")}}</dt>
+ <dd>ブラウザーアクションのポップアップを開きます。</dd>
+ <dt>{{WebExtAPIRef("browserAction.setBadgeText()")}}</dt>
+ <dd>ブラウザーアクションのバッジテキストをセットします。バッジはアイコンの上部に表示されます。</dd>
+ <dt>{{WebExtAPIRef("browserAction.getBadgeText()")}}</dt>
+ <dd>ブラウザーアクションのバッジのテキストを取得します。</dd>
+ <dt>{{WebExtAPIRef("browserAction.setBadgeBackgroundColor()")}}</dt>
+ <dd>バッジの背景色を指定します。</dd>
+ <dt>{{WebExtAPIRef("browserAction.getBadgeBackgroundColor()")}}</dt>
+ <dd>バッジの背景色を取得します。</dd>
+ <dt>{{WebExtAPIRef("browserAction.enable()")}}</dt>
+ <dd>タブのブラウザーアクションを有効にします。既定では、ブラウザーアクションはすべてのタブで有効です。</dd>
+ <dt>{{WebExtAPIRef("browserAction.disable()")}}</dt>
+ <dd>タブのブラウザーアクションを無効にします。つまりタブがアクティブでもクリックできません。</dd>
+ <dt>{{WebExtAPIRef("browserAction.isEnabled()")}}</dt>
+ <dd>ブラウザーアクションが有効か否かをチェックします。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("browserAction.onClicked")}}</dt>
+ <dd>ブラウザーアクションがクリックされた時に発火します。このイベントはブラウザーアクションがポップアップ付きでない場合は発火しません。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.browserAction")}}</p>
+
+<div class="hidden note">
+<p>The "Chrome incompatibilities" section is included from <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities"> https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities</a> using the <a href="/ja/docs/Template:WebExtChromeCompat">WebExtChromeCompat</a> macro.</p>
+
+<p>If you need to update this content, edit <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities">https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities</a>, then shift-refresh this page to see your changes.</p>
+</div>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a> API に基づいています。この文書は Chromium コードの <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> から得ています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.html b/files/ja/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.html
new file mode 100644
index 0000000000..46f3a666a7
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.html
@@ -0,0 +1,102 @@
+---
+title: browserAction.onClicked
+slug: Mozilla/Add-ons/WebExtensions/API/browserAction/onClicked
+translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/onClicked
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>ブラウザアクションアイコンがクリックされたときに発火します。このイベントはブラウザアクションがポップアップを持っているときは発火しません。</p>
+
+<p>右クリックを定義するには、<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextMenus" title="Add items to the browser's context menu, to be displayed in the contexts you specify. For example, you can show the item only when the user clicks on an image, or on an editable element, or when part of a page is selected."><code>contextMenus</code></a> API の"browser_action" <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextMenus/ContextType" title="The different contexts a menu can appear in.">context type</a>を利用してください。</p>
+
+<h2 id="書式">書式</h2>
+
+<pre class="syntaxbox brush:js">browser.browserAction.onClicked.addListener(<code>listener</code>)
+browser.browserAction.onClicked.removeListener(listener)
+browser.browserAction.onClicked.hasListener(listener)
+</pre>
+
+<p>イベントは3つの関数を持っています:</p>
+
+<dl>
+ <dt><code>addListener(listener)</code></dt>
+ <dd>このイベントのリスナーを追加します。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>このイベントのリスニングを停止します。引数<code>listener</code>は削除するリスナーです。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code>がこのイベントに登録されているかどうかを調べます。<code>true</code>が返ればリスニング中です。<code>false</code>が返ればそうれはありません。</dd>
+</dl>
+
+<h2 id="addListenerの書式">addListenerの書式</h2>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>イベントが発生したときに呼び出される関数です。関数は以下の引数を渡されます:</p>
+
+ <dl class="reference-values">
+ <dt><code>tab</code></dt>
+ <dd>{{WebExtAPIRef('tabs.Tab')}}. アイコンがクリックされたときにアクティブなタブです。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.browserAction.onClicked")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>ユーザがアイコンをクリックすると、アクティブなタブではアイコンを無効にし、タブのURLをログします:</p>
+
+<pre class="brush: js">browser.browserAction.onClicked.addListener((tab) =&gt; {
+ // disable the active tab
+ browser.browserAction.disable(tab.id);
+ // requires the "tabs" or "activeTab" permission
+ console.log(tab.url);
+});
+</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>このAPIはChromiumの<a href="https://developer.chrome.com/extensions/browserAction#event-onClicked"><code>chrome.browserAction</code></a> APIに基づいています。このドキュメントはChromiumコードの<a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a>から派生したものです。</p>
+
+<p>Microsoft Edgeの互換性データはMicrosoft Corporationから提供されており、Creative Commons Attribution 3.0 United States Licenseのもとにここに含まれています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/browsersettings/index.html b/files/ja/mozilla/add-ons/webextensions/api/browsersettings/index.html
new file mode 100644
index 0000000000..a9bbf45a6a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/browsersettings/index.html
@@ -0,0 +1,49 @@
+---
+title: browserSettings
+slug: Mozilla/Add-ons/WebExtensions/API/browserSettings
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - browserSettings
+translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings
+---
+<div>{{AddonSidebar}}</div>
+
+<div>拡張機能にグローバルなブラウザー設定の変更を可能にします。この API の各プロパティは {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} オブジェクトで、これはそれぞれの設定の変更能力を提供します。</div>
+
+<div> </div>
+
+<div>これはグローバルな設定のため、拡張機能で衝突が起きる可能性があります。衝突の処理方法の詳細は <code><a href="/ja/Add-ons/WebExtensions/API/types/BrowserSetting/set">BrowserSetting.set()</a></code> の文書を見てください。</div>
+
+<div> </div>
+
+<div>
+<p>この API を使うには "browserSettings" <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>が必要です。</p>
+</div>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("browserSettings.allowPopupsForUserEvents")}}</dt>
+ <dd>ユーザーのイベントに反応して、ウェブページで実行しているコードがポップアップを許可するかどうかを決める</dd>
+ <dt>{{WebExtAPIRef("browserSettings.cacheEnabled")}}</dt>
+ <dd>ブラウザーキャッシュの有効・無効を決める</dd>
+ <dt>{{WebExtAPIRef("browserSettings.homepageOverride")}}</dt>
+ <dd>ブラウザーのホームページの値を読む</dd>
+ <dt>{{WebExtAPIRef("browserSettings.imageAnimationBehavior")}}</dt>
+ <dd>ブラウザーが画像アニメーションをどう扱うのかを決める</dd>
+ <dt>{{WebExtAPIRef("browserSettings.newTabPageOverride")}}</dt>
+ <dd>ブラウザーの新規タブページ値を読む</dd>
+ <dt>{{WebExtAPIRef("browserSettings.webNotificationsDisabled")}}</dt>
+ <dd>ウェブサイトが <code><a href="/ja/docs/Web/API/notification">Notification</a></code> Web API を使って通知を表示するのを妨げる</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.browserSettings")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.html b/files/ja/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.html
new file mode 100644
index 0000000000..de5eda9664
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.html
@@ -0,0 +1,27 @@
+---
+title: browserSettings.newTabPageOverride
+slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/newTabPageOverride
+translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/newTabPageOverride
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>{{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} オブジェクトを使用すると「新規タブ」ページ、つまりユーザーが新しい空のタブを開いたときのページを表すURLを取得することができます。</p>
+
+<p>なお、これは読み取り専用の設定です。</p>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.browserSettings.newTabPageOverride", 10)}}</p>
+
+<h2 id="例">例</h2>
+
+<p>現在の新規タブURLを取得する:</p>
+
+<pre class="brush: js">browser.browserSettings.newTabPageOverride.get({}).then(result =&gt; {
+ console.log(result.value);
+});
+</pre>
+
+<p>{{WebExtExamples}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/browsingdata/index.html b/files/ja/mozilla/add-ons/webextensions/api/browsingdata/index.html
new file mode 100644
index 0000000000..c648980e4e
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/browsingdata/index.html
@@ -0,0 +1,127 @@
+---
+title: browsingData
+slug: Mozilla/Add-ons/WebExtensions/API/browsingData
+tags:
+ - Add-ons
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - browsingData
+translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData
+---
+<div>{{AddonSidebar}}</div>
+
+<div>拡張機能がユーザーのブラウズ中に蓄積したデータをクリアできるようにします。</div>
+
+<p> <code>browsingData</code> APIでは、ブラウズデータは下記の型に分けられます:</p>
+
+<ul>
+ <li>{{原語併記("browser cache", "ブラウザーキャッシュ")}}</li>
+ <li>cookies</li>
+ <li>{{原語併記("downloads", "ダウンロードデータ")}}</li>
+ <li>{{原語併記("history", "履歴")}}</li>
+ <li>{{原語併記("local storage", "ローカルストレージ")}}</li>
+ <li>{{原語併記("plugin data", "プラグインのデータ")}}</li>
+ <li>{{原語併記("saved form data", "保存したフォームデータ")}}</li>
+ <li>{{原語併記("saved passwords", "保存したパスワード")}}</li>
+</ul>
+
+<p>これらの型の組み合わせを削除するのに {{WebExtAPIRef("browsingData.remove()")}} 関数を使用できます。それぞれのデータ型を削除する専用関数もあり、例えば {{WebExtAPIRef("browsingData.removePasswords()", "removePasswords()")}}, {{WebExtAPIRef("browsingData.removeHistory()", "removeHistory()")}} などです。</p>
+
+<p>すべての <code>browsingData.remove[X]()</code> 関数は {{WebExtAPIRef("browsingData.RemovalOptions")}} オブジェクトを取って、これをデータ削除のその他2つの側面を管理するのに使うことができます:</p>
+
+<ul>
+ <li>データ削除を過去どれだけ遡れるのか</li>
+ <li>通常のウェブページか、ホストされたウェブアプリも含めてデータ削除するのかのいずれか。このオプションは Firefox ではまだサポートされていないことに注意してください。</li>
+</ul>
+
+<p>最後に、この API の {{WebExtAPIRef("browsingData.settings()")}} 関数で、ブラウザー組み込みの「履歴消去」機能の現在の設定値を取得できます。</p>
+
+<p>この API を使うには、"browsingData" の <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API パーミッション</a>が必要です。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("browsingData.DataTypeSet")}}</dt>
+ <dd>削除データの型を指定するオブジェクト: 例えば、history, downloads, passwords, など</dd>
+ <dt>{{WebExtAPIRef("browsingData.RemovalOptions")}}</dt>
+ <dd>データ削除するのにどれくらい以前に遡るのか、通常のウェブブラウジング/ホスト型アプリ/アドオンのどのデータを削除するのかを指定するオブジェクト。</dd>
+</dl>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("browsingData.remove()")}}</dt>
+ <dd>指定された型のブラウジングデータを削除する</dd>
+ <dt>{{WebExtAPIRef("browsingData.removeCache()")}}</dt>
+ <dd>ブラウザーキャッシュを消去する</dd>
+ <dt>{{WebExtAPIRef("browsingData.removeCookies()")}}</dt>
+ <dd>cookies を削除する</dd>
+ <dt>{{WebExtAPIRef("browsingData.removeDownloads()")}}</dt>
+ <dd>ダウンロード済みのファイルを削除する</dd>
+ <dt>{{WebExtAPIRef("browsingData.removeFormData()")}}</dt>
+ <dd>保存されたフォームデータを消去する</dd>
+ <dt>{{WebExtAPIRef("browsingData.removeHistory()")}}</dt>
+ <dd>ブラウザー履歴を消去する</dd>
+ <dt>{{WebExtAPIRef("browsingData.removeLocalStorage()")}}</dt>
+ <dd>ウェブサイトが作成した <a href="/ja/docs/Web/API/Window/localStorage">local storage</a> を消去する</dd>
+ <dt>{{WebExtAPIRef("browsingData.removePasswords()")}}</dt>
+ <dd>パスワードを消去する</dd>
+ <dt>{{WebExtAPIRef("browsingData.removePluginData()")}}</dt>
+ <dd>プラグインに関連するデータを消去する</dd>
+ <dt>{{WebExtAPIRef("browsingData.settings()")}}</dt>
+ <dd>ブラウザーの「履歴消去」機能の現在の設定値を得る</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.browsingData", 1, 1)}}</p>
+
+<div class="hidden note">
+<p>"Chrome 非互換性" 部分は <a href="/ja/docs/Template:WebExtChromeCompat">WebExtChromeCompat</a> マクロを使って <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities"> https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities</a> からインクルードされています。</p>
+
+<p>このコンテンツを更新するには、<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities">https://developer.mozilla.org/ja/Add-ons/WebExtensions/Chrome_incompatibilities</a> を編集して、ページを shift+再読みして変更を確認します。</p>
+</div>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a> API に基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+
+<p> </p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.html b/files/ja/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.html
new file mode 100644
index 0000000000..cf43475f5a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.html
@@ -0,0 +1,100 @@
+---
+title: browsingData.removeCache()
+slug: Mozilla/Add-ons/WebExtensions/API/browsingData/removeCache
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Reference
+ - WebExtensions
+ - browsingData
+ - removeCache
+translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/removeCache
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>ブラウザのキャッシュを消去します。</p>
+
+<p>この関数は{{WebExtAPIRef("browsingData.RemovalOptions")}} オブジェクトを引数に取りますが無視されます。そのためこの関数を使うとすべてのキャッシュが消去されるため注意してください。</p>
+
+<p>この関数は <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">var removing = browser.browsingData.removeCache(
+ removalOptions // RemovalOptions オブジェクト
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>removalOptions </code>{{optional_inline}}</dt>
+ <dd>{{WebExtAPIRef("browsingData.RemovalOptions")}} オブジェクト このパラメータは無視されます。</dd>
+</dl>
+
+<h3 id="返り値">返り値</h3>
+
+<p>消去が完了した後に実行される <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> が返されます。この Promise は引数を持ちません。エラーが発生した場合はエラーメッセージを引数にしてrejectを呼び出します。</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.browsingData.removeCache")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>ブラウザキャッシュを消去します。</p>
+
+<pre class="brush: js">function onRemoved() {
+ console.log("removed");
+}
+
+function onError(error) {
+ console.error(error);
+}
+
+browser.browsingData.removeCache({}).
+then(onRemoved, onError);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a> API に基づいています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは  Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/clipboard/index.html b/files/ja/mozilla/add-ons/webextensions/api/clipboard/index.html
new file mode 100644
index 0000000000..f104a67940
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/clipboard/index.html
@@ -0,0 +1,39 @@
+---
+title: clipboard
+slug: Mozilla/Add-ons/WebExtensions/API/clipboard
+tags:
+ - API
+ - Add-ons
+ - Clipboard
+ - Extensions
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/clipboard
+---
+<div>{{AddonSidebar}}</div>
+
+<p>クリップボード API は、拡張機能がシステムのクリップボードに要素をクリップするのを可能にします。現在この API は画像のコピーだけをサボートしていますが、将来的にはテキストとHTMLのコピーをサボートする計画です。</p>
+
+<p>この WebExtension API は主に標準の web クリップボード API が<a href="https://w3c.github.io/clipboard-apis/#writing-to-clipboard">クリップボードに画像を書き込めない</a>ために存在しています。標準 web API にこの力が備わった時には、このAPI は非推奨になるはずです。</p>
+
+<p>クリップボードの読み込みはこの API でサポートしません。なぜならクリップボードはすでに標準 web プラットホーム API を用いて読むことができるからです。<a href="/ja/Add-ons/WebExtensions/Interact_with_the_clipboard#Reading_from_the_clipboard">クリップボードとやりとりする</a>を見てください。</p>
+
+<p>この API は Chrome の <code><a class="external external-icon" href="https://developer.chrome.com/apps/clipboard">clipboard</a></code> API に基づきますが、その API はChrome アプリだけで利用できて、拡張機能ではできません。</p>
+
+<p>この API を使うには "clipboardWrite" <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>が必要です。</p>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("clipboard.setImageData()")}}</dt>
+ <dd>画像をクリップボードにコピーする</dd>
+</dl>
+
+<h2 id="Browser compatibility" name="Browser compatibility">ブラウザー互換性</h2>
+
+<p>{{Compat("webextensions.api.clipboard", 1, 1)}} {{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>この API は Chromiumの <a href="https://developer.chrome.com/apps/clipboard"><code>chrome.clipboard</code></a> API に基づきます。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html b/files/ja/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html
new file mode 100644
index 0000000000..950f1c866e
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html
@@ -0,0 +1,72 @@
+---
+title: clipboard.setImageData()
+slug: Mozilla/Add-ons/WebExtensions/API/clipboard/setImageData
+translation_of: Mozilla/Add-ons/WebExtensions/API/clipboard/setImageData
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>イメージをクリップボードにコピーします。イメージはクリップボードに書き込まれる前に再エンコードされます。イメージが無効な場合、クリップボードは修正されません。</p>
+
+<p>The image is provided as an <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer">ArrayBuffer</a></code> containing the encoded image. JPEG and PNG formats are supported.</p>
+
+<p>Although this API is based on Chrome's <code><a href="https://developer.chrome.com/apps/clipboard">clipboard.setImageData()</a></code> API, there are some differences:</p>
+
+<ul>
+ <li>The Chrome API is only for apps, not extensions.</li>
+ <li>This API requires only the <code>"clipboardWrite"</code> permission, while the Chrome version also requires the <code>"clipboard"</code> permission.</li>
+ <li>Chrome's API uses callbacks, and this API only supports promises.</li>
+ <li>This API does not support the <code>additionalItems</code> parameter.</li>
+</ul>
+
+<p>これは<code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>を返す非同期関数です。</p>
+
+<h2 id="書式">書式</h2>
+
+<pre class="syntaxbox brush:js">browser.clipboard.setImageData(<em>imageData</em>, <em>imageType</em>)
+</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>imageData</code></dt>
+ <dd>An <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer">ArrayBuffer</a></code> containing the encoded image data to copy to the clipboard.</dd>
+ <dt><code>imageType</code></dt>
+ <dd>A {{domxref("DOMString")}} indicating the type of image contained in <code>imageData</code>: <code>"png"</code> or <code>"jpeg"</code>.</dd>
+</dl>
+
+<h3 id="返り値">返り値</h3>
+
+<p>A <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> that will be resolved with no arguments if the operation succeeded, or rejected if there was an error (for example, because the data did not represent a valid image).</p>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.clipboard.setImageData", 10)}}</p>
+
+<h2 id="例">例</h2>
+
+<p>Copy a remote image:</p>
+
+<pre class="brush: js" id="ct-71"><span class="quote">// requires:
+// * the host permission for "<a href="https://cdn.mdn.mozilla.net/" rel="nofollow">https://cdn.mdn.mozilla.net/</a>*"
+// * the API permission "clipboardWrite"
+
+fetch('<a href="https://cdn.mdn.mozilla.net/static/img/favicon144.png" rel="nofollow">https://cdn.mdn.mozilla.net/static/img/favicon144.png</a>')
+.then(response =&gt; response.arrayBuffer())
+.then(buffer =&gt; browser.clipboard.setImageData(buffer, 'png'));</span></pre>
+
+<p><span class="quote">Copy an image that was bundled with the extension:</span></p>
+
+<pre class="brush: js" id="ct-70">// requires <span class="quote">the API permission </span>"clipboardWrite"
+
+fetch(browser.runtime.getURL('image.png'))
+.then(response =&gt; response.arrayBuffer())
+.then(buffer =&gt; browser.clipboard.setImageData(buffer, 'png'));</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/apps/clipboard"><code>chrome.clipboard</code></a> API.</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/commands/index.html b/files/ja/mozilla/add-ons/webextensions/api/commands/index.html
new file mode 100644
index 0000000000..0e622b38d2
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/commands/index.html
@@ -0,0 +1,84 @@
+---
+title: commands
+slug: Mozilla/Add-ons/WebExtensions/API/commands
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Reference
+ - WebExtensions
+ - commands
+translation_of: Mozilla/Add-ons/WebExtensions/API/commands
+---
+<div>{{AddonSidebar}}</div>
+
+<p><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/commands"><code>commands</code> manifest.json キー</a>を使って、登録したコマンドをユーザーが実行するのをリッスンします。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("commands.Command")}}</dt>
+ <dd>コマンドを表す型。これは <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/commands">manifest.json の <code>commands</code> キー</a>のコマンドで指定された情報が入っています。</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("commands.getAll")}}</dt>
+ <dd>
+ <p>拡張機能用のすべての登録済みコマンドを取得します。</p>
+ </dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("commands.onCommand")}}</dt>
+ <dd>
+ <div>関連付けされたキーボードショートカットを使ってコマンドが実行された時に発火します。</div>
+ </dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.commands")}} {{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/commands"><code>chrome.commands</code></a> API に基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+
+<p> </p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/contentscripts/index.html b/files/ja/mozilla/add-ons/webextensions/api/contentscripts/index.html
new file mode 100644
index 0000000000..d72cf1de1d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/contentscripts/index.html
@@ -0,0 +1,47 @@
+---
+title: contentScripts
+slug: Mozilla/Add-ons/WebExtensions/API/contentScripts
+tags:
+ - API
+ - Extensions
+ - Interface
+ - WebExtensions
+ - contentScripts
+ - インタフェース
+ - コンテントスクリプト
+ - 拡張機能
+translation_of: Mozilla/Add-ons/WebExtensions/API/contentScripts
+---
+<div>{{AddonSidebar}}</div>
+
+<p>このAPIはコンテントスクリプトを登録するためにお使いいただけます。コンテントスクリプトを登録することで、指定したURLにマッチするページにそのスクリプトを挿入するようブラウザに指定することができます。</p>
+
+<p>このAPIは<code>manifest.json</code>にある"content_scripts"キーと似ていますが、"content_scripts"ではコンテントスクリプトとURLのパターンは<strong>インストールタイム</strong>に固定されます。<span class="seoSummary">一方<code>content_scripts</code> APIは、<strong>ランタイム(実行時)</strong>でスクリプトを登録・登録解除することが可能です。</span></p>
+
+<p>このAPIは、{{WebExtAPIRef("contentScripts.register()")}} メソッドを呼び出して使用していただけます。その際は、登録するコンテントスクリプト、URLのマッチングパターン、またその他のオプションを実引数(arguments)として渡してください。このメソッドは{{WebExtAPIRef("contentScripts.RegisteredContentScript")}} オブジェクトがresolveされた <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返します。</p>
+
+<p><code>RegisteredContentScript</code> オブジェクトは <code>register()</code> で登録されたスクリプトを保持し、<code>unregister()</code>でそのスクリプトを登録解除(unregister)できます。また、コンテントスクリプトはそれらを作ったページが消された際にも自動的に登録解除されます。例えば、backgroundページによって登録されたコンテントスクリプトは、backgroundページが消去された際に自動的に登録解除されます。</p>
+
+<p><code>contentScripts</code> API にパーミッションは存在しませんが、拡張機能はregister()でマッチさせるURLにおいては適切な<a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">host permissions</a>を持っている必要があります。</p>
+
+<h2 id="Types">Types</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("contentScripts.RegisteredContentScript")}}</dt>
+ <dd>
+ <p>このタイプのオブジェクトは{{WebExtAPIRef("contentScripts.register()")}}関数の返り値です。{{WebExtAPIRef("contentScripts.register()")}}関数で登録されたコンテントスクリプトを持ち、このオブジェクトを使ってそれらを登録解除することができます。</p>
+ </dd>
+</dl>
+
+<h2 id="Functions">Functions</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("contentScripts.register()")}}</dt>
+ <dd>コンテントスクリプトを登録します。</dd>
+</dl>
+
+<h2 id="ブラウザの互換性">ブラウザの互換性</h2>
+
+<p>{{Compat("webextensions.api.contentScripts", 10, 1)}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/contentscripts/register/index.html b/files/ja/mozilla/add-ons/webextensions/api/contentscripts/register/index.html
new file mode 100644
index 0000000000..ec8cfeaa28
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/contentscripts/register/index.html
@@ -0,0 +1,107 @@
+---
+title: contentScripts.register()
+slug: Mozilla/Add-ons/WebExtensions/API/contentScripts/register
+tags:
+ - API
+ - Extensions
+ - Method
+ - Reference
+ - contentScripts
+ - register
+translation_of: Mozilla/Add-ons/WebExtensions/API/contentScripts/register
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>このメソッドは一つ以上の content scripts を登録するときに使用します。</p>
+
+<p>manifest.json内の <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> に似た一つのオブジェクトを引数に持ちます。<code>content_scripts</code> では配列ですが、この <code>register()</code> ではオブジェクトを引数に持ちます。</p>
+
+<p>これは <code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox brush:js">var registering = browser.contentScripts.register(
+ contentScriptOptions // object
+)
+</pre>
+
+<h3 id="Parameters" name="Parameters">パラメーター</h3>
+
+<dl>
+ <dt><code>contentScriptOptions</code></dt>
+ <dd>
+ <p><code>object</code> です。<code>RegisteredContentScriptOptions</code> オブジェクトは登録するコンテントスクリプトを表します。<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> と似た構文のオブジェクトで、その違いは以下の通りです。</p>
+
+ <ul>
+ <li>プロパティ名にはスネーク形式ではなくキャメル形式を使用します (例えば、<code>excludeMatches</code>を使用します。<code>exclude_matches</code> ではありません)</li>
+ <li><code>js</code> プロパティと <code>css</code> プロパティには、相対パスのほかに文字列も指定できます。このため、登録したいものがどちらであるのかを明確にできる構文になっています。</li>
+ </ul>
+
+ <p><code>RegisteredContentScriptOptions</code> は次のプロパティを持ちます:</p>
+
+ <dl class="reference-values">
+ <dt><code>allFrames</code>{{optional_inline}}</dt>
+ <dd><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> における <code>all_frames</code> と同様です。</dd>
+ <dt><code>css</code>{{optional_inline}}</dt>
+ <dd>オブジェクトの配列。 それぞれのオブジェクトは <code>file</code> という名前の manifest.json からの相対パスで登録したい CSS ファイルを指定した URL の文字列を持つプロパティか、<code>code</code> という名前の登録したい CSS の文字列を持つプロパティを含みます。</dd>
+ <dt><code>excludeGlobs</code>{{optional_inline}}</dt>
+ <dd><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> における <code>exclude_globs</code> と同様です。</dd>
+ <dt><code>excludeMatches</code>{{optional_inline}}</dt>
+ <dd><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> における <code>exclude_matches</code> と同様です。</dd>
+ <dt><code>includeGlobs</code>{{optional_inline}}</dt>
+ <dd><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> における <code>include_globs</code> と同様です。</dd>
+ <dt><code>js</code>{{optional_inline}}</dt>
+ <dd>オブジェクトの配列。各オブジェクトは <code>file</code> または <code>code</code> プロパティを含み、その要素は css プロパティと同様です。</dd>
+ <dt><code>matchAboutBlank</code>{{optional_inline}}</dt>
+ <dd><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> における <code>match_about_blank</code> と同様です。</dd>
+ <dt><code>matches</code></dt>
+ <dd><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> における <code>matches</code> と同様です。</dd>
+ <dt><code>runAt</code>{{optional_inline}}</dt>
+ <dd><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> における <code>run_at</code> と同様です。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="Examples" name="Examples">返り値</h3>
+
+<p>登録したコンテントスクリプトを削除することができる {{WebExtAPIRef("contentScripts.RegisteredContentScript")}} オブジェクトを引数に持つ <code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返します。</p>
+
+<p><br>
+ <span class="message"><span class="content">現在、登録したコンテントスクリプトは、これを登録した拡張機能ページをアンロードしたときに削除されます。</span></span>したがって、コンテントスクリプトを登録する際は、少なくとも登録されたままであってほしいだけ存在する拡張機能ページから登録すべきです。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.contentScripts.register", 10)}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p><code>defaultCode</code> コンテントスクリプトを、すべての <code>.org</code> URL に対して登録します。</p>
+
+<pre class="brush: js">const defaultHosts = "*://*.org/*";
+const defaultCode = "document.body.innerHTML = '&lt;h1&gt;このページは書き換えられました&lt;h1&gt;'";
+
+async function register(hosts, code) {
+
+ return await browser.contentScripts.register({
+ matches: [hosts],
+ js: [{code}],
+ runAt: "document_idle"
+ });
+
+}
+
+var registered = register(defaultHosts, defaultCode);</pre>
+
+<p>次のコードは content_scripts/example.js にある JavaScript ファイルを登録します。</p>
+
+<pre class="brush: js" id="ct-3">const scriptObj = await browser.contentScripts.register({
+ "js": [{file: "/content_scripts/example.js"}],
+ "matches": ["&lt;all_urls&gt;"],
+ "allFrames": true,
+ "runAt": "document_start"
+});
+</pre>
+
+<p>{{WebExtExamples}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/contextualidentities/index.html b/files/ja/mozilla/add-ons/webextensions/api/contextualidentities/index.html
new file mode 100644
index 0000000000..46f956e09e
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/contextualidentities/index.html
@@ -0,0 +1,63 @@
+---
+title: contextualIdentities
+slug: Mozilla/Add-ons/WebExtensions/API/contextualIdentities
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/contextualIdentities
+---
+<div>{{AddonSidebar}}</div>
+
+<p>contextual identitiesの操作: contextual identities を一覧、作成、削除、更新します。</p>
+
+<p>"Contextual identities"は「コンテナ」とも言われ、ブラウザーの機能で、ユーザーがウェブブラウズしている時に複数のIDを想定し、そこでもID同時の分離を維持したいアイデアを指します。例えば、ユーザーが「仕事のID」と「個人のID」を分けたいと考えて、これら2つのコンテキストで cookies を共有したくない場合など。</p>
+
+<p>contextual identities 機能により、各コンテキストIDは名前、色、及びアイコンを持ちます。新規タブがIDにアサインされ、名前、アイコン、色がアドレスバーに出現します。内部的には、各IDが他のタブには共有されない自分の cookie ストアを持ちます。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/14719/containers.png" style="display: block; height: 259px; margin-left: auto; margin-right: auto; width: 515px;">Contextual identities は Firefox の実験的機能であり、Firefox Nightly だけでデフォルト有効になっています。その他のバージョンの Firefox で有効にするには、 <code>privacy.userContext.enabled</code> の設定を <code>true</code> にします。contextual identities は Android版Firefox でも利用できますが、このバージョンでは動作する UI がないのにご注意ください。</p>
+
+<p>Firefox 57 より前では、<code>contextualIdentities</code> API は contextual identities 機能自体が有効になっている場合にだけ利用できます。機能が無効なまま拡張機能が <code>contextualIdentities</code> API を使おうとした場合、メソッド呼び出しは promises を <code>false</code> に解決します。</p>
+
+<p>Firefox 57 以降では、<code>contextualIdentities</code> API を使う拡張機能がインストールされたら、contextual identities 機能は自動的に有効化されます。"privacy.userContext.enabled" プリファレンスを使って、まだユーザーが機能を無効化できるのに注意します。これが起きたら、<code>contextualIdentities</code> メソッドの呼び出しで、エラーメッセージと共に promises を拒否します。</p>
+
+<p>Firefox での contextual identities のより詳しい情報は<a href="https://wiki.mozilla.org/Security/Contextual_Identity_Project/Containers">このガイド</a>を見てください。</p>
+
+<p>Contextual identities は現在その他のブラウザーではサポートされていません。</p>
+
+<p>この API を使うには、 <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json </a>ファイル内で "contextualIdentities" <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>を入れます。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("contextualIdentities.ContextualIdentity")}}</dt>
+ <dd>contextual identity に関する情報を含みます。</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("contextualIdentities.create()")}}</dt>
+ <dd>新しい contextual identity を作成します</dd>
+ <dt>{{WebExtAPIRef("contextualIdentities.get()")}}</dt>
+ <dd>cookie ストア ID を引数に、単一の contextual identity を取得します</dd>
+ <dt>{{WebExtAPIRef("contextualIdentities.query()")}}</dt>
+ <dd>すべての contextual identities を取得、あるいは特定の名前の全 contextual identities を取得します</dd>
+ <dt>{{WebExtAPIRef("contextualIdentities.update()")}}</dt>
+ <dd>既存のcontextual identity のプロパティを更新します</dd>
+ <dt>{{WebExtAPIRef("contextualIdentities.remove()")}}</dt>
+ <dd>contextual identity を削除します</dd>
+ <dt>
+ <h2 id="Events" name="Events">イベント</h2>
+ </dt>
+ <dt>{{WebExtAPIRef("contextualIdentities.onCreated")}}</dt>
+ <dd>contextual identity 作成時に発火します</dd>
+ <dt>{{WebExtAPIRef("contextualIdentities.onRemoved")}}</dt>
+ <dd>contextual identity 削除時に発火します</dd>
+ <dt>{{WebExtAPIRef("contextualIdentities.onUpdated")}}</dt>
+ <dd>1つ以上の contextual identity のプロパティが更新された時に発火します</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.contextualIdentities")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/cookies/cookie/index.html b/files/ja/mozilla/add-ons/webextensions/api/cookies/cookie/index.html
new file mode 100644
index 0000000000..b308cb0f6a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/cookies/cookie/index.html
@@ -0,0 +1,111 @@
+---
+title: cookies.Cookie
+slug: Mozilla/Add-ons/WebExtensions/API/cookies/Cookie
+tags:
+ - API
+ - Add-ons
+ - Cookies
+ - Extensions
+ - Non-standard
+ - Reference
+ - Type
+ - WebExtensions
+ - cookie
+translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/Cookie
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>{{WebExtAPIRef("cookies")}} API の <code>Cookie</code> 型はHTTP cookie の情報を持ちます。</p>
+
+<h2 id="型">型</h2>
+
+<p>以下のプロパティを含むオブジェクトです。</p>
+
+<dl class="reference-values">
+ <dt><code>domain</code></dt>
+ <dd>cookie の所属するドメイン (例えば "www.google.com" や "example.com") を示す文字列を持つ <code>string</code> 型です。</dd>
+ <dt><code>expirationDate</code>{{optional_inline}}</dt>
+ <dd>cookie の有効期限をUNIX時刻からの秒数で持つ <code>number</code> 型です。セッション cookie はこのプロパティを持っていません。</dd>
+ <dt><code>firstPartyDomain</code></dt>
+ <dd>cookie に関連付けられたファーストパーティドメインを表す文字列を格納している <code>string</code> 型です。 cookie のFirst-party isolationが無効の間は空文字列になります。詳細は <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/cookies#First-party_isolation">First-party isolation</a> をご覧ください。</dd>
+ <dt><code>hostOnly</code></dt>
+ <dd><code>boolean</code> 型です。cookie がホストオンリークッキー (リクエストのホストが cookie の指定ドメインと完全一致している場合のみ送信) である場合に <code>true</code> 、でなければ <code>false</code> になります。</dd>
+ <dt><code>httpOnly</code></dt>
+ <dd><code>boolean</code> 型です。 cookieに HttpOnly 属性 ( cookie をクライアント側スクリプトから参照できなくする属性) が付与されている場合に <code>true</code> 、でなければ <code>false</code> が格納されます。</dd>
+ <dt><code>name</code></dt>
+ <dd>cookie の名前が格納される <code>string</code> 型です。</dd>
+ <dt><code>path</code></dt>
+ <dd>cookie のパスが格納される <code>string</code> 型です。</dd>
+ <dt><code>secure</code></dt>
+ <dd><code>boolean</code> 型です。 cookie に secure 属性(暗号化通信でのみ cookie を送信する属性)が付与されている場合に <code>true</code> 、でなければ <code>false</code> になります。</dd>
+ <dt><code>session</code></dt>
+ <dd><code>boolean</code> 型です。 cookie がセッション cookie ( セッション限りで破棄される cookie )である場合に <code>true</code> 、でなければ <code>false</code> が付与されます。</dd>
+ <dt><code>storeId</code></dt>
+ <dd>この cookie が格納されている cookie ストアのIDを格納する <code>string</code> 型です。{{WebExtAPIRef("cookies.getAllCookieStores()")}}によって提供されます。</dd>
+ <dt><code>value</code></dt>
+ <dd> cookie の値を格納する <code>string</code> 型です。</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.cookies.Cookie")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>cookies API のほとんどは入力パラメータまたは戻り値の一部として使用される <code>Cookie</code> オブジェクトを含みます。例えば {{WebExtAPIRef("cookies.getAll()")}} は <code>Cookie</code> オブジェクトの配列を返します。</p>
+
+<p>以下の例ではすべての cookie を取得し、コンソールログに  <code>Cookie</code> オブジェクト中のいくつかのプロパティを出力します。</p>
+
+<pre class="brush: js">function logCookies(cookies) {
+ for (cookie of cookies) {
+ console.log(`Domain: ${cookie.domain}`);
+ console.log(`Name: ${cookie.name}`);
+ console.log(`Value: ${cookie.value}`);
+ console.log(`Persistent: ${!cookie.session}`);
+ }
+}
+
+var gettingAll = browser.cookies.getAll({});
+gettingAll.then(logCookies);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/cookies#type-Cookie"><code>chrome.cookies</code></a> API に基づいています。 また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/cookies/index.html b/files/ja/mozilla/add-ons/webextensions/api/cookies/index.html
new file mode 100644
index 0000000000..63788a4292
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/cookies/index.html
@@ -0,0 +1,143 @@
+---
+title: cookies
+slug: Mozilla/Add-ons/WebExtensions/API/cookies
+tags:
+ - API
+ - Add-ons
+ - Cookies
+ - Extensions
+ - Interface
+ - Reference
+ - dard
+translation_of: Mozilla/Add-ons/WebExtensions/API/cookies
+---
+<div>{{AddonSidebar}}</div>
+
+<p>拡張機能に cookie の取得と設定と、変更された時の通知を可能にします。</p>
+
+<p>この API を使用するには、<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> ファイルで "cookies" の <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API パーミッション</a> があることと、同様にアクセスする cookie を持つ <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">host パーミッション</a> も必要になります。<a href="/ja/Add-ons/WebExtensions/API/cookies#Permissions">cookie パーミッション</a>を見てください。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("cookies.Cookie")}}</dt>
+ <dd>HTTP cookieの情報を表す。</dd>
+ <dt>{{WebExtAPIRef("cookies.CookieStore")}}</dt>
+ <dd>ブラウザーの cookie store を表す。</dd>
+ <dt>{{WebExtAPIRef("cookies.OnChangedCause")}}</dt>
+ <dd>cookie の変更理由を表す。</dd>
+</dl>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("cookies.get()")}}</dt>
+ <dd>1つの cookie の情報を取得する。</dd>
+ <dt>{{WebExtAPIRef("cookies.getAll()")}}</dt>
+ <dd>与えられたフィルターにマッチするすべての cookies を取得する。</dd>
+ <dt>{{WebExtAPIRef("cookies.set()")}}</dt>
+ <dd>与えられた cookie データ を cookie に設定する; おなじ cookies が存在すれば上書きする。</dd>
+ <dt>{{WebExtAPIRef("cookies.remove()")}}</dt>
+ <dd>指定した名前の cookie を削除する。</dd>
+ <dt>{{WebExtAPIRef("cookies.getAllCookieStores()")}}</dt>
+ <dd>すべての cookie stores を一覧する。</dd>
+</dl>
+
+<h2 id="Event_handlers" name="Event_handlers">イベントハンドラー</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("cookies.onChanged")}}</dt>
+ <dd>cookie が設定、削除された時に発火する。</dd>
+</dl>
+
+<h2 id="Permissions" name="Permissions">パーミッション</h2>
+
+<p>この API を使うには、アドオンは manifest で "cookies" の <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API パーミッション</a> を指定せねばならず、同様に cookie がアクセスするあらゆるサイトの <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">host パーミッション</a>も要ります。アドオンは host パーミッションにマッチするURLから読み書きされる cookie を読み書きできます。例えば:</p>
+
+<dl>
+ <dt><code>http://*.example.com/</code></dt>
+ <dd>
+ <p>この host パーミッションを持つアドオンは下記ができます:</p>
+
+ <ul>
+ <li><code>www.example.com</code> のあらゆるパスの、非セキュア型 cookie を読む</li>
+ <li>セキュア/非セキュア問わず、<code>www.example.com</code> のあらゆるパスの cookie に書き込む</li>
+ </ul>
+
+ <p><em>下記はできません</em>:</p>
+
+ <ul>
+ <li><code>www.example.com</code> のセキュア型cookie を読む</li>
+ </ul>
+ </dd>
+ <dt><code>http://www.example.com/</code></dt>
+ <dd>
+ <p>この host パーミッションを持つアドオンは下記ができます:</p>
+
+ <ul>
+ <li><code>www.example.com</code> のあらゆるパスの、非セキュア型cookie を読む</li>
+ <li><code>.example.com</code>のあらゆるパスの、非セキュア型cookie を読む</li>
+ <li>セキュア/非セキュア問わず、<code>www.example.com</code>のあらゆるパスの cookie に書き込む</li>
+ <li>セキュア/非セキュア問わず、<code>.example.com</code>のあらゆるパスの cookie に書き込む</li>
+ </ul>
+
+ <p><em>下記はできません</em>:</p>
+
+ <ul>
+ <li><code>foo.example.com</code> の cookie の読み書き</li>
+ <li><code>foo.www.example.com</code> の cookie の読み書き</li>
+ </ul>
+ </dd>
+ <dt><code>*://*.example.com/</code></dt>
+ <dd>
+ <p>この host パーミッションを持つアドオンは下記ができます:</p>
+
+ <ul>
+ <li>セキュア/非セキュア問わず、<code>www.example.com</code> のあらゆるパスの cookie の読み書き</li>
+ </ul>
+ </dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.cookies")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/cookies"><code>chrome.cookies</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/eval/index.html b/files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/eval/index.html
new file mode 100644
index 0000000000..5ed0d6580f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/eval/index.html
@@ -0,0 +1,211 @@
+---
+title: devtools.inspectedWindow.eval()
+slug: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval
+translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>devtools が接続されているウィンドウで JavaScript を実行します。</p>
+
+<p>これは {{WebExtAPIRef("tabs.executeScript()")}} を使用してコンテンツスクリプトを添付することに似ていますが、主に2つの違いがあります。</p>
+
+<p>第1に、JavaScript は<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval#ヘルパー" id="Helper">ブラウザが通常 devtools コンソール実装で提供する特別なコマンド</a>のセットを使用できます。たとえば、"$0" を使用してインスペクタで現在選択されている要素を参照します。</p>
+
+<p>次に、実行する JavaScript はページが読み込んだスクリプトによってページに加えられた変更を確認できます。これは、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#DOM_access">ページスクリプトが読み込まれなかった場合に存在するページを表示する</a>コンテンツスクリプトとは対照的です。ただし、コンテンツスクリプトによって提供される分離は意図的なセキュリティ機能であり、DOM 関数とプロパティを再定義することにより、悪意のあるまたは単に非協力的な Web ページがWebExtensions API を混乱または破壊することを困難にすることを目的としています。つまり <code>eval()</code> を使用してこの保護を放棄する場合は非常に注意する必要があり、<code>eval()</code> を使用する必要がない限りコンテンツスクリプトを使用する必要があります。</p>
+
+<p>スクリプトは、ページのメインフレームでデフォルトで評価されます。スクリプトは、JSON として表現できる値に評価する必要があります (たとえば、関数または関数を含むオブジェクトには評価されない可能性があることを意味します)。デフォルトでは、スクリプトはページに添付されたコンテンツスクリプトを表示しません。</p>
+
+<p>"about:addons" などの特権ブラウザウィンドウで <code>eval()</code> を呼び出すことはできません。</p>
+
+<p>オプションで <code>options</code> パラメータを指定できます。<code>options</code> パラメータには、異なるフレームまたは添付コンテンツスクリプトのコンテキストでスクリプトを評価するオプションが含まれます。Firefox はまだ <code>options</code> パラメータをサポートしていないことに注意してください。</p>
+
+<p><code>eval()</code> 関数は、スクリプトの評価結果またはエラーを解決する <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返します。</p>
+
+<h2 id="ヘルパー">ヘルパー</h2>
+
+<p>The script gets access to a number of objects that help the injected script interact with the developer tools. The following helpers are currently supported:</p>
+
+<dl>
+ <dt><code>$0</code></dt>
+ <dd>Contains a reference to the element that's currently selected in the devtools Inspector.</dd>
+ <dt><code>inspect()</code></dt>
+ <dd>Given an object, if it is an DOM element in the page, selects it in the devtools Inspector, otherwise it creates an object preview in the webconsole.</dd>
+</dl>
+
+<p><a href="#Examples">See some examples.</a></p>
+
+<h2 id="Syntax">Syntax</h2>
+
+<pre class="syntaxbox brush:js">var evaluating = browser.devtools.inspectedWindow.eval(
+ expression, // string
+ options // object
+)
+</pre>
+
+<h3 id="Parameters">Parameters</h3>
+
+<dl>
+ <dt><code>expression</code></dt>
+ <dd><code>string</code>. The JavaScript expression to evaluate. The string must evaluate to a object that can be represented as JSON, or an exception will be thrown. For example, <code>expression</code> must not evaluate to a function.</dd>
+ <dt><code>options</code>{{optional_inline}}</dt>
+ <dd><code>object</code>. Options for the function (Note that Firefox does not yet support this options), as follows:</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>frameURL</code>{{optional_inline}}</dt>
+ <dd><code>string</code>. The URL of the frame in which to evaluate the expression. If this is omitted, the expression is evaluated in the main frame of the window.</dd>
+ <dt><code>useContentScriptContext</code>{{optional_inline}}</dt>
+ <dd><code>boolean</code>. If <code>true</code>, evaluate the expression in the context of any content scripts that this extension has attached to the page. If you set this option, then you must have actually attached some content scripts to the page, or a Devtools error will be thrown.</dd>
+ <dt><code>contextSecurityOrigin</code> {{optional_inline}}</dt>
+ <dd><code>string</code>. Evaluate the expression in the context of a content script attached by a different extension, whose origin matches the value given here. This overrides <code>useContentScriptContext</code>.</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="Return_value">Return value</h3>
+
+<p>A <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> that will be fulfilled with an <code>array</code> containing two elements.</p>
+
+<p>If no error occurred, element 0 will contain the result of evaluating the expression, and element 1 will be <code>undefined</code>.</p>
+
+<p>If an error occurred, element 0 will be <code>undefined</code>, and element 1 will contain an object giving details about the error. Two different sorts of errors are distinguished:</p>
+
+<ul>
+ <li>errors encountered evaluating the JavaScript (for example, syntax errors in the expression). In this case, element 1 will contain:
+ <ul>
+ <li>a boolean property <code>isException</code>, set to <code>true</code></li>
+ <li>a string property <code>value</code>, giving more details.</li>
+ </ul>
+ </li>
+ <li>other errors (for example, an expression that evaluates to an object that can't be represented as JSON). In this case, element 1 will contain:
+ <ul>
+ <li>a boolean property <code>isError</code>, set to <code>true</code></li>
+ <li>a string property <code>code</code> containing an error code.</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="ブラウザの対応状況">ブラウザの対応状況</h2>
+
+<p>{{Compat("webextensions.api.devtools.inspectedWindow.eval")}}</p>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<h2 id="例">例</h2>
+
+<p>This tests whether jQuery is defined in the inspected window, and logs the result. Note that this wouldn't work in a content script, because even if jQuery were defined, the content script would not see it.</p>
+
+<pre class="brush: js">function handleError(error) {
+ if (error.isError) {
+ console.log(`Devtools error: ${error.code}`);
+ } else {
+ console.log(`JavaScript error: ${error.value}`);
+ }
+}
+
+function handleResult(result) {
+ console.log(result);
+ if (result[0] !== undefined) {
+ console.log(`jQuery: ${result[0]}`);
+ } else if (result[1]) {
+ handleError(result[1]);
+ }
+}
+
+const checkjQuery = "typeof jQuery != 'undefined'";
+
+evalButton.addEventListener("click", () =&gt; {
+ browser.devtools.inspectedWindow.eval(checkjQuery)
+ .then(handleResult);
+});</pre>
+
+<h3 id="Helper_examples">Helper examples</h3>
+
+<p>This uses the <code>$0</code> helper to set the background color of the element that's currently selected in the Inspector:</p>
+
+<pre class="brush: js">const evalButton = document.querySelector("#reddinate");
+const evalString = "$0.style.backgroundColor = 'red'";
+
+function handleError(error) {
+ if (error.isError) {
+ console.log(`Devtools error: ${error.code}`);
+ } else {
+ console.log(`JavaScript error: ${error.value}`);
+ }
+}
+
+function handleResult(result) {
+ if (result[1]) {
+ handleError(result[1]);
+ }
+}
+
+evalButton.addEventListener("click", () =&gt; {
+ browser.devtools.inspectedWindow.eval(evalString)
+ .then(handleResult);
+});
+</pre>
+
+<p>This uses the <code>inspect()</code> helper to select the first &lt;h1&gt; element in the page:</p>
+
+<pre class="brush: js">const inspectButton = document.querySelector("#inspect");
+const inspectString = "inspect(document.querySelector('h1'))";
+
+function handleError(error) {
+ if (error.isError) {
+ console.log(`Devtools error: ${error.code}`);
+ } else {
+ console.log(`JavaScript error: ${error.value}`);
+ }
+}
+
+function handleResult(result) {
+ if (result[1]) {
+ handleError(result[1]);
+ }
+}
+
+inspectButton.addEventListener("click", () =&gt; {
+ browser.devtools.inspectedWindow.eval(inspectString)
+ .then(handleResult);
+});
+</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/devtools"><code>chrome.devtools</code></a> API.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/index.html b/files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/index.html
new file mode 100644
index 0000000000..e7a8f7181d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/index.html
@@ -0,0 +1,79 @@
+---
+title: devtools.inspectedWindow
+slug: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Reference
+ - WebExtensions
+ - devtools.inspectedWindow
+translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow
+---
+<div>{{AddonSidebar}}</div>
+
+<div class="note">
+<p>このページは Firefox 54 に存在する WebExtensions devtools APIs を記述しています。このAPI は <a class="external external-icon" href="https://developer.chrome.com/extensions/devtools" rel="noopener">Chrome devtools APIs</a> に基づいていますが、Firefoxでは実装されていない多くの機能があり、よってここに文書化されていません。現在欠けている機能を見るには、 <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Using_the_devtools_APIs#Limitations_of_the_devtools_APIs">Limitations of the devtools APIs</a> を見てください。</p>
+</div>
+
+<p><code>devtools.inspectedWindow</code> API によって開発ツール拡張機能では開発ツールが割当てられたウィンドウと相互作用できます。</p>
+
+<p>すべての <code>devtools</code> API と同様に、この API はmanifest.json <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a> キー内に定義されたドキュメントや、拡張機能が作成するその他の開発ツールドキュメント(例えば拡張機能が作ったパネル自身のドキュメント)の中だけでコードを利用できます。詳細は <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools">developer tools の拡張</a> を見てください。</p>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt><code><a href="/ja/Add-ons/WebExtensions/API/devtools.inspectedWindow/tabId">devtools.inspectedWindow.tabId</a></code></dt>
+ <dd>開発ツールが付属しているウィンドウの ID</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">Functions</h2>
+
+<dl>
+ <dt><code><a href="/ja/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval">devtools.inspectedWindow.eval()</a></code></dt>
+ <dd>ターゲットウィンドウ内の  JavaScript を評価する</dd>
+ <dt><code><a href="/ja/Add-ons/WebExtensions/API/devtools.inspectedWindow/reload">devtools.inspectedWindow.reload()</a></code></dt>
+ <dd>ターゲットウィンドウのドキュメントを再読み込みする</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.devtools.inspectedWindow")}}{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/devtools_inspectedWindow"><code>chrome.devtools.inspectedWindow</code></a> API に基づいています。また、このドキュメントは bookmarks.json における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/tabid/index.html b/files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/tabid/index.html
new file mode 100644
index 0000000000..6837e95e36
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/tabid/index.html
@@ -0,0 +1,77 @@
+---
+title: devtools.inspectedWindow.tabId
+slug: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/tabId
+translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/tabId
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>devtools のこのインスタンスがアタッチされる {{WebExtAPIRef("tabs.Tab", "tab")}} の ID。番号で表されます。</p>
+
+<p>これは拡張機能のバックグラウンドページに送信できるため、バックグラウンドページは {{WebExtAPIRef("tabs")}} API を使用してタブと対話できます:</p>
+
+<pre class="brush: js">// devtools-panel.js
+
+const scriptToAttach = "document.body.innerHTML = 'Hi from the devtools';";
+
+attachContentScriptButton.addEventListener("click", () =&gt; {
+ browser.runtime.sendMessage({
+ tabId: browser.devtools.inspectedWindow.tabId,
+ script: scriptToAttach
+ });
+});</pre>
+
+<pre class="brush: js">// background.js
+
+function handleMessage(request, sender, sendResponse) {
+ browser.tabs.executeScript(request.tabId, {
+ code: request.script
+ });
+}
+
+browser.runtime.onMessage.addListener(handleMessage);</pre>
+
+<h2 id="ブラウザの対応状況">ブラウザの対応状況</h2>
+
+<p>{{Compat("webextensions.api.devtools.inspectedWindow.tabId")}}</p>
+
+<p class="hidden">このページの互換性テーブルは構造化データから生成されます。データに貢献したい場合は、<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックして、プルリクエストを送信してください。</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/devtools"><code>chrome.devtools</code></a> API に基づいています。</p>
+
+<p>Microsoft Edge の互換性データは Microsoft Corporation によって提供され、Creative Commons Attribution 3.0 United States License に含まれています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/devtools.network/index.html b/files/ja/mozilla/add-ons/webextensions/api/devtools.network/index.html
new file mode 100644
index 0000000000..b5d97b1b1e
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/devtools.network/index.html
@@ -0,0 +1,74 @@
+---
+title: devtools.network
+slug: Mozilla/Add-ons/WebExtensions/API/devtools.network
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Reference
+ - WebExtensions
+ - devtools.network
+translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.network
+---
+<div>{{AddonSidebar}}</div>
+
+<div class="note">
+<p>このページは Firefox 54 に存在する WebExtensions devtools APIs を記述しています。このAPI は <a class="external external-icon" href="https://developer.chrome.com/extensions/devtools" rel="noopener">Chrome devtools APIs</a> に基づいていますが、Firefoxでは実装されていない多くの機能があり、よってここに文書化されていません。現在欠けている機能を見るには、 <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Using_the_devtools_APIs#Limitations_of_the_devtools_APIs">Limitations of the devtools APIs</a> を見てください。</p>
+</div>
+
+<p><code>devtools.network</code> API によって開発ツール拡張機能では開発ツールが付属しているウィンドウ(インスペクト対象ウィンドウ)に関連するネットワークリクエストの情報を取得できます。</p>
+
+<p>すべての <code>devtools</code> API と同様に、この API はmanifest.json <a class="new" href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page" rel="nofollow">devtools_page</a> キー内に定義されたドキュメントや、拡張機能が作成するその他の開発ツールドキュメント(例えば拡張機能が作ったパネル自身のドキュメント)の中だけでコードを利用できます。これ以上は <a class="new" href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools" rel="nofollow">開発ツールを拡張する</a>を見てください。</p>
+
+<h2 id="Events" name="Events">Events</h2>
+
+<dl>
+ <dt><code><a href="/ja/Add-ons/WebExtensions/API/devtools.network/onNavigated">devtools.network.onNavigated</a></code></dt>
+ <dd>ユーザーが新規ページのインスペクト対象ウィンドウに移動した時に発火します</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.devtools.network")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/devtools_network"><code>chrome.devtools.network</code></a> API に基づいています。また、このドキュメントは bookmarks.json における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+
+<p> </p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/devtools.panels/index.html b/files/ja/mozilla/add-ons/webextensions/api/devtools.panels/index.html
new file mode 100644
index 0000000000..efb826a25f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/devtools.panels/index.html
@@ -0,0 +1,105 @@
+---
+title: devtools.panels
+slug: Mozilla/Add-ons/WebExtensions/API/devtools.panels
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Reference
+ - WebExtensions
+ - devtools.panels
+translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.panels
+---
+<div>{{AddonSidebar}}</div>
+
+<div class="note">
+<p>このAPI は <a href="https://developer.chrome.com/extensions/devtools">Chrome devtools APIs</a> に基づいていますが、Firefoxでは実装されていない多くの機能があり、よってここに文書化されていません。現在欠けている機能を見るには、 <a href="/ja/Add-ons/WebExtensions/Using_the_devtools_APIs#Limitations_of_the_devtools_APIs">Limitations of the devtools APIs</a> を見てください。</p>
+</div>
+
+<p><code>devtools.panels</code> API によって開発ツール拡張機能では開発ツールウィンドウ内のユーザーインターフェイスの定義ができます。</p>
+
+<p>開発ツールウィンドウにはいくつもの個別のツールがあります - JavaScript デバッガー、ネットワークモニター、などが。最上位のタブの行でユーザーは色々なツールを切り替えられます。ツールのUIをホストするこのウィンドウは「パネル」と呼ばれます。</p>
+
+<p><code>devtools.panels</code> API にて開発ツールウィンドウ内の新規パネルを作成できます。</p>
+
+<p>すべての <code>devtools</code> API と同様に、この API はmanifest.json <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a> キー内に定義されたドキュメントや、拡張機能が作成するその他の開発ツールドキュメント(例えばパネル自身のドキュメント)の中だけでコードを利用できます。これ以上は <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools">開発ツールを拡張する</a>を見てください。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt><code><a href="/ja/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel">devtools.panels.ElementsPanel</a></code></dt>
+ <dd>ブラウザーの開発ツールの HTML/CSS インスペクターを表す</dd>
+ <dt><code><a href="/ja/Add-ons/WebExtensions/API/devtools.panels/ExtensionPanel">devtools.panels.ExtensionPanel</a></code></dt>
+ <dd>拡張機能によって作られた開発ツールパネルを表す</dd>
+ <dt><code><a href="/ja/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane">devtools.panels.ExtensionSidebarPane</a></code></dt>
+ <dd>ブラウザーの開発ツールの HTML/CSS インスペクターに、拡張機能が追加したペインを表す</dd>
+</dl>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt><code><a href="/ja/Add-ons/WebExtensions/API/devtools.panels/elements">devtools.panels.elements</a></code></dt>
+ <dd><code><a href="/ja/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel">ElementsPanel</a></code> オブジェクトの参照</dd>
+ <dt><code><a href="/ja/Add-ons/WebExtensions/API/devtools.panels/themeName">devtools.panels.themeName</a></code></dt>
+ <dd>現在の開発ツールテーマの名前</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt><code><a href="/ja/Add-ons/WebExtensions/API/devtools.panels/create">devtools.panels.create()</a></code></dt>
+ <dd>開発ツールを作成する</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt><code><a href="/ja/Add-ons/WebExtensions/API/devtools.panels/onThemeChanged">devtools.panels.onThemeChanged</a></code></dt>
+ <dd>開発ツールテーマが変更された時に発火する</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.devtools.panels", 2)}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a> API に基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+
+<p> </p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/downloads/download/index.html b/files/ja/mozilla/add-ons/webextensions/api/downloads/download/index.html
new file mode 100644
index 0000000000..daf99a07a2
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/downloads/download/index.html
@@ -0,0 +1,127 @@
+---
+title: downloads.download()
+slug: Mozilla/Add-ons/WebExtensions/API/downloads/download
+translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/download
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>{{WebExtAPIRef("downloads")}} API の <strong><code>download()</code></strong> 関数ではURLとそのほかのオプションの設定を行うことでファイルのダウンロードをすることができます。</p>
+
+<ul>
+ <li>HTTPもしくはHTTPSのプロトコルを使用したURLを指定した場合、対象のホスト名に対応する全てのcookieを含んだリクエストが送られます。</li>
+ <li><code>filename</code> と <code>saveAs</code> が指定されている場合、指定された<code>filename</code>が設定された[名前をつけて保存]のダイアログが開きます。</li>
+</ul>
+
+<p>この関数は非同期に実行され、<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>を返します。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">var downloading = browser.downloads.download(
+ options // object
+)
+</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>options</code></dt>
+ <dd>この<code>object</code>ではダウンロードしたいファイルやその他のダウンロードに関する設定を指定します。指定できるプロパティは以下です。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>body</code>{{optional_inline}}</dt>
+ <dd>リクエストのbodyを<code>string</code>で指定します。</dd>
+ <dt><code>conflictAction</code>{{optional_inline}}</dt>
+ <dd>A string representing the action you want taken if there is a filename conflict, as defined in the {{WebExtAPIRef('downloads.FilenameConflictAction')}} type (defaults to "uniquify" when it is not specified).</dd>
+ <dt><code>filename</code>{{optional_inline}}</dt>
+ <dd>A <code>string</code> representing a file path relative to the default downloads directory — this provides the location where you want the file to be saved, and what filename you want to use. Absolute paths, empty paths, and paths containing back-references (<code>../</code>) will cause an error. If omitted, this value will default to the filename already given to the download file, and a location immediately inside the downloads directory.</dd>
+ <dt><code>headers</code>{{optional_inline}}</dt>
+ <dd>An <code>array</code> of <code>objects</code> representing extra HTTP headers to send with the request if the URL uses the HTTP[s] protocol. Each header is represented as a dictionary object containing the keys <code>name</code> and either <code>value</code> or <code>binaryValue</code>, restricted to those allowed by <code><a href="/en-US/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a></code>.</dd>
+ <dt><code>incognito</code>{{optional_inline}}</dt>
+ <dd>A <code>boolean</code>: if present and set to true, then associate this download with a private browsing session. This means that it will only appear in the download manager for any private windows that are currently open.</dd>
+ <dt><code>method</code>{{optional_inline}}</dt>
+ <dd>HTTP[S]を使用したURLを指定した際、HTTPメソッドを<code>string</code>で指定します。GETもしくはPOSTを設定できます。</dd>
+ <dt><code>saveAs</code>{{optional_inline}}</dt>
+ <dd>
+ <p>A <code>boolean</code> that specifies whether to provide a file chooser dialog to allow the user to select a filename (<code>true</code>), or not (<code>false</code>).</p>
+
+ <p>If this option is omitted, the browser will show the file chooser or not based on the general user preference for this behavior (in Firefox this preference is labeled "Always ask you where to save files" in about:preferences, or <code>browser.download.useDownloadDir</code> in about:config).</p>
+ </dd>
+ <dt><code>url</code></dt>
+ <dd>ダウンロードするURLを<code>string</code>で指定します。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p><code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>が返却されます。ダウンロードが成功した場合、new {{WebExtAPIRef("downloads.DownloadItem")}}のidが格納されたpromiseを受け取ります。対して、promiseがrejectされた場合は、エラーメッセージを受け取ります。</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p> </p>
+
+<p>{{Compat("webextensions.api.downloads.download")}}</p>
+
+<p> </p>
+
+<h2 id="例">例</h2>
+
+<p>以下のダウンロードの例ではファイル名と保存場所を指定し、<code>conflictAction</code>に<code>uniquify</code>を指定しています。</p>
+
+<pre class="brush: js">function onStartedDownload(id) {
+ console.log(`Started downloading: ${id}`);
+}
+
+function onFailed(error) {
+ console.log(`Download failed: ${error}`);
+}
+
+var downloadUrl = "https://example.org/image.png";
+
+var downloading = browser.downloads.download({
+ url : downloadUrl,
+ filename : 'my-image-again.png',
+ conflictAction : 'uniquify'
+});
+
+downloading.then(onStartedDownload, onFailed);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>このAPIはChromiumの <a href="https://developer.chrome.com/extensions/downloads#method-download"><code>chrome.downloads</code></a> APIを元にしています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/downloads/index.html b/files/ja/mozilla/add-ons/webextensions/api/downloads/index.html
new file mode 100644
index 0000000000..98dcaef054
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/downloads/index.html
@@ -0,0 +1,134 @@
+---
+title: downloads
+slug: Mozilla/Add-ons/WebExtensions/API/downloads
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - downloads
+translation_of: Mozilla/Add-ons/WebExtensions/API/downloads
+---
+<div>{{AddonSidebar}}</div>
+
+<p>拡張機能にブラウザーのダウンロードマネージャーとのやりとりを可能にします。このAPI モジュールを、ファイルマネージャーでのファイルのダウンロード、キャンセル、停止、ダウンロードの再開、ダウンロード済みのファイルの表示に使用できます。</p>
+
+<p>このAPIを使うには <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> ファイルで指定する "downloads" <a href="/JA/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API パーミッション</a>が必要です。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("downloads.FilenameConflictAction")}}</dt>
+ <dd>ダウンロードされたファイル名が既存ファイルと衝突する場合の動作オプション定義</dd>
+ <dt>{{WebExtAPIRef("downloads.InterruptReason")}}</dt>
+ <dd>ダウンロードが中断された理由の集合を定義</dd>
+ <dt>{{WebExtAPIRef("downloads.DangerType")}}</dt>
+ <dd>ダウンロード可能なファイルに関連した想定される危険性への警告の集合を定義</dd>
+ <dt>{{WebExtAPIRef("downloads.State")}}</dt>
+ <dd>現在のダウンロードが取りうるさまざまな状態を定義</dd>
+ <dt>{{WebExtAPIRef("downloads.DownloadItem")}}</dt>
+ <dd>ダウンロード済みのファイルを表現する</dd>
+ <dt>{{WebExtAPIRef("downloads.StringDelta")}}</dt>
+ <dd>2つの文字列の差異を表現する</dd>
+ <dt>{{WebExtAPIRef("downloads.DoubleDelta")}}</dt>
+ <dd>2つの倍精度実数の差異を表現する</dd>
+ <dt>{{WebExtAPIRef("downloads.BooleanDelta")}}</dt>
+ <dd>2つの真偽値の差異を表現する</dd>
+ <dt>{{WebExtAPIRef("downloads.DownloadTime")}}</dt>
+ <dd>ダウンロード完了にかかった時間を表現する</dd>
+ <dt>{{WebExtAPIRef("downloads.DownloadQuery")}}</dt>
+ <dd>ダウンロードマネージャーで特定のダウンロードを検索するのに使われるパラメーターを定義</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("downloads.download()")}}</dt>
+ <dd>URL とオプション設定を与えて、ファイルをダウンロードします</dd>
+ <dt>{{WebExtAPIRef("downloads.search()")}}</dt>
+ <dd>ブラウザーのダウンロードマネージャーで使える {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} に問い合わせて、指定した検索条件にマッチするものを返します</dd>
+ <dt>{{WebExtAPIRef("downloads.pause()")}}</dt>
+ <dd>ダウンロードを停止します</dd>
+ <dt>{{WebExtAPIRef("downloads.resume()")}}</dt>
+ <dd>停止したダウンロードを再開します</dd>
+ <dt>{{WebExtAPIRef("downloads.cancel()")}}</dt>
+ <dd>ダウンロードをキャンセルします</dd>
+ <dt>{{WebExtAPIRef("downloads.getFileIcon()")}}</dt>
+ <dd>指定したダウンロードのアイコンを取得します</dd>
+ <dt>{{WebExtAPIRef("downloads.open()")}}</dt>
+ <dd>関連付けられたアプリケーションでダウンロード済みのファイルを開きます</dd>
+ <dt>{{WebExtAPIRef("downloads.show()")}}</dt>
+ <dd>プラットフォームのファイルマネージャーアプリケーションを開いて、ダウンロードフォルダー内のファイルを表示します</dd>
+ <dt>{{WebExtAPIRef("downloads.showDefaultFolder()")}}</dt>
+ <dd>プラットフォームのファイルマネージャーアプリケーションを開いて、デフォルトのダウンロードフォルダーを表示します</dd>
+ <dt>{{WebExtAPIRef("downloads.erase()")}}</dt>
+ <dd>ダウンロード済みのファイルをディスクから消去することなく、ブラウザーのダウンロード履歴からマッチした {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} を消去します</dd>
+ <dt>{{WebExtAPIRef("downloads.removeFile()")}}</dt>
+ <dd>ブラウザーのダウンロード履歴ではなく、ダウンロード済みのファイルをディスクから消去します</dd>
+ <dt>{{WebExtAPIRef("downloads.acceptDanger()")}}</dt>
+ <dd>危険なダウンロードを受け入れるかキャンセルするかを、ユーザーに確認します</dd>
+ <dt>{{WebExtAPIRef("downloads.drag()")}}</dt>
+ <dd>ダウンロード済みのファイルを他のアプリケーションにドラッグし始めます</dd>
+ <dt>{{WebExtAPIRef("downloads.setShelfEnabled()")}}</dt>
+ <dd>現在のブラウザープロファイルに関連するすぺてのウィンドウの下のグレーの棚を有効化/無効化します。この棚は少なくとも1つの拡張機能が無効化すると無効になります。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("downloads.onCreated")}}</dt>
+ <dd>ダウンロード開始時に {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} オブジェクトと共に発火します</dd>
+ <dt>{{WebExtAPIRef("downloads.onErased")}}</dt>
+ <dd>ダウンロードが履歴から消去された時に <code>downloadId</code> と共に発火します</dd>
+ <dt>{{WebExtAPIRef("downloads.onChanged")}}</dt>
+ <dd><code>bytesReceived</code> を除くいかなる {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} のプロパティが変わった時、このイベントは <code>downloadId</code> や変更したプロパティを含むオブジェクトと共に発火します</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.downloads")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a> API に基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+
+<p> </p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/events/index.html b/files/ja/mozilla/add-ons/webextensions/api/events/index.html
new file mode 100644
index 0000000000..7b911a1f0a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/events/index.html
@@ -0,0 +1,74 @@
+---
+title: events
+slug: Mozilla/Add-ons/WebExtensions/API/events
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - events
+translation_of: Mozilla/Add-ons/WebExtensions/API/events
+---
+<div>{{AddonSidebar}}</div>
+
+<p>イベントをディスパッチする API から使われる共通の型です。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("events.Rule")}}</dt>
+ <dd>イベント処理用の宣言的ルールを記述します。</dd>
+ <dt>{{WebExtAPIRef("events.Event")}}</dt>
+ <dd>Chrome イベントにリスナーを追加、削除できるオブジェクト。</dd>
+ <dt>{{WebExtAPIRef("events.UrlFilter")}}</dt>
+ <dd>いろいろな条件で URL をフィルターする。所与の条件のいずれかがマッチした場合、フィルター全体がマッチする。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.events")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/events"><code>chrome.events</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/events.json"><code>events.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+
+<p> </p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/extension/index.html b/files/ja/mozilla/add-ons/webextensions/api/extension/index.html
new file mode 100644
index 0000000000..49c768d793
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/extension/index.html
@@ -0,0 +1,105 @@
+---
+title: extension
+slug: Mozilla/Add-ons/WebExtensions/API/extension
+tags:
+ - API
+ - Add-ons
+ - Extension
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/extension
+---
+<div>{{AddonSidebar}}</div>
+
+<p>拡張機能に関連するユーティリティ。拡張機能のリソースパッケージのURLを取得したり、拡張機能のページの <code><a href="/ja/docs/Web/API/Window">Window</a></code> オブジェクトを取得したり、いろいろな設定の値を取得したりします。注意として、このモジュールのメッセージ APIs は非推奨で、 <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime">runtime</a></code> モジュールの同様な API が好まれます。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("extension.ViewType")}}</dt>
+ <dd>拡張機能ビューの型</dd>
+</dl>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("extension.lastError")}}</dt>
+ <dd>同期型の拡張機能APIがエラーに終わった場合のコールバックの寿命をセットします。エラーが起きなかったら lastError は <var>undefined</var>.になります。</dd>
+ <dt>{{WebExtAPIRef("extension.inIncognitoContext")}}</dt>
+ <dd>incognito タブ内でコンテンツスクリプトが実行されたり、 incognito プロセス内で拡張機能ページが実行されたら true になります。後者は 'split' incognito_behavior の場合だけです。</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("extension.getURL()")}}</dt>
+ <dd>拡張機能がインストールされたディレクトリーの相対パスを完全修飾 URL に変換する</dd>
+ <dt>{{WebExtAPIRef("extension.getViews()")}}</dt>
+ <dd>今の拡張機能内で実行されているページの <code><a href="/ja/docs/Web/API/Window">Window</a></code> オブジェクトを返す</dd>
+ <dt>{{WebExtAPIRef("extension.getBackgroundPage()")}}</dt>
+ <dd>今の拡張機能内で実行されているバックグラウンドページの <code><a href="/ja/docs/Web/API/Window">Window</a></code> オブジェクトを返す。拡張機能がバックグラウンドページを持たない場合は null を返す</dd>
+ <dt>{{WebExtAPIRef("extension.isAllowedIncognitoAccess()")}}</dt>
+ <dd>拡張機能が Incognito-モード (ユーザーが制御する 'Incognito を許可' のチェックボックスで定義される) にアクセスする状態を取得する</dd>
+ <dt>{{WebExtAPIRef("extension.isAllowedFileSchemeAccess()")}}</dt>
+ <dd>拡張機能が 'file://' スキーム(ユーザーが制御する 'File URLs のアクセスを許可' のチェックボックスで定義される) にアクセスする状態を取得する</dd>
+ <dt>{{WebExtAPIRef("extension.setUpdateUrlData()")}}</dt>
+ <dd>拡張機能の更新URL内で使われる ap CGI パラメーターをセットする。この値はブラウザーのベンダーストアでホストされる拡張機能では無視される</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("extension.onRequest")}}</dt>
+ <dd>拡張機能のプロセスかコンテンツスクリプトのいずれかからリクエストが送られた時に発火します</dd>
+ <dt>{{WebExtAPIRef("extension.onRequestExternal")}}</dt>
+ <dd>その他の拡張機能からリクエストが送られた時に発火します</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.extension")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a>における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+
+<p> </p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/extensiontypes/imagedetails/index.html b/files/ja/mozilla/add-ons/webextensions/api/extensiontypes/imagedetails/index.html
new file mode 100644
index 0000000000..b3f77ef0ec
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/extensiontypes/imagedetails/index.html
@@ -0,0 +1,75 @@
+---
+title: extensionTypes.ImageDetails
+slug: Mozilla/Add-ons/WebExtensions/API/extensionTypes/ImageDetails
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - ImageDetails
+ - Non-standard
+ - Reference
+ - Type
+ - WebExtensions
+ - extensionTypes
+translation_of: Mozilla/Add-ons/WebExtensions/API/extensionTypes/ImageDetails
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>画像のフォーマットと品質に関する詳細。</p>
+
+<h2 id="Type" name="Type">型</h2>
+
+<p>この型はオブジェクトです。以下のプロパティを持ちます。</p>
+
+<dl class="reference-values">
+ <dt><code>format</code>{{optional_inline}}</dt>
+ <dd>{{WebExtAPIRef('extensionTypes.ImageFormat')}} 型。出力される画像のフォーマット。デフォルトは <code>"png"</code>。</dd>
+ <dt><code>quality</code>{{optional_inline}}</dt>
+ <dd><code>integer</code> 型。フォーマットが <code>"jpeg"</code> の場合、出力される画像の品質はこの値により変化する。0 から 100 の間の数値であり、0 から 1 の間の数値に変換されて <code><a href="/ja/docs/Web/API/HTMLCanvasElement/toDataURL">HTMLCanvasElement.toDataURL()</a></code> の引数 <code>encoderOptions</code> として使われる。省略された場合は、92 が使われる。品質を下げると、出力される画像の視覚的な変化が大きくなり、画像の格納に必要なバイト数も小さくなる。PNG 画像の場合、この値は無視される。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.extensionTypes.ImageDetails")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/extensionTypes#type-ImageDetails"><code>chrome.extensionTypes</code></a> API に基づいています。このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/extension_types.json"><code>extension_types.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/extensiontypes/index.html b/files/ja/mozilla/add-ons/webextensions/api/extensiontypes/index.html
new file mode 100644
index 0000000000..3c6424f619
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/extensiontypes/index.html
@@ -0,0 +1,76 @@
+---
+title: extensionTypes
+slug: Mozilla/Add-ons/WebExtensions/API/extensionTypes
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - extensionTypes
+translation_of: Mozilla/Add-ons/WebExtensions/API/extensionTypes
+---
+<div>{{AddonSidebar}}</div>
+
+<p>その他の WebExtension API で使われる共通な型</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("extensionTypes.ImageFormat")}}</dt>
+ <dd>画像フォーマット</dd>
+ <dt>{{WebExtAPIRef("extensionTypes.ImageDetails")}}</dt>
+ <dd>画像のフォーマットと画質の詳細</dd>
+ <dt>{{WebExtAPIRef("extensionTypes.RunAt")}}</dt>
+ <dd>タブに JavaScript か CSS が挿入されてほんのすぐ</dd>
+ <dt><code>extensionTypes.CSSOrigin</code></dt>
+ <dd><code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/tabs/insertCSS">tabs.insertCSS</a></code> で挿入された CSS スタイルシートが "author" か "user" のスタイルシートのどちらであるかを示す</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.extensionTypes")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/extensionTypes"><code>chrome.extensionTypes</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/extension_types.json"><code>extension_types.json</code></a>における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+
+<p> </p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/extensiontypes/runat/index.html b/files/ja/mozilla/add-ons/webextensions/api/extensiontypes/runat/index.html
new file mode 100644
index 0000000000..eb04888c5f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/extensiontypes/runat/index.html
@@ -0,0 +1,76 @@
+---
+title: extensionTypes.RunAt
+slug: Mozilla/Add-ons/WebExtensions/API/extensionTypes/RunAt
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Non-standard
+ - Reference
+ - RunAt
+ - Type
+ - WebExtensions
+ - extensionTypes
+translation_of: Mozilla/Add-ons/WebExtensions/API/extensionTypes/RunAt
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>JavaScript や CSS がどの時点でタブに挿入されるか。</p>
+
+<h2 id="型">型</h2>
+
+<p>この型の値は文字列です。とりうる値は、<code>"document_start"</code>, <code>"document_end"</code>, <code>"document_idle"</code> です。</p>
+
+<ul>
+ <li><code>"document_start"</code>: <code>loading</code> に対応します。DOM はまだ読み込み中の状態です。</li>
+ <li><code>"document_end"</code>: <code>interactive</code> に対応します。DOM の読み込みは終わりましたが、スクリプトや画像といったリソースはまだ読み込み中です。</li>
+ <li><code>"document_idle"</code>: <code>complete</code> に対応します。ドキュメントとその全てのリソースの読み込みが完了しました。</li>
+</ul>
+
+<p>デフォルトの値は <code>"document_idle"</code> です。</p>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.extensionTypes.RunAt")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/extensionTypes#type-RunAt"><code>chrome.extensionTypes</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/extension_types.json"><code>extension_types.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/find/find/index.html b/files/ja/mozilla/add-ons/webextensions/api/find/find/index.html
new file mode 100644
index 0000000000..e33d2cf4f9
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/find/find/index.html
@@ -0,0 +1,298 @@
+---
+title: find.find()
+slug: Mozilla/Add-ons/WebExtensions/API/find/find
+translation_of: Mozilla/Add-ons/WebExtensions/API/find/find
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>テキストによるタブ内の検索をします。</p>
+
+<p>次のことができます。</p>
+
+<ul>
+ <li>標準の HTTP(S)ページ、特権ページ(about:debuggingなど)の検索</li>
+ <li>tab idを使って 特定の 1タブのみ指定。</li>
+ <li>ページ内の全frame</li>
+ <li>大文字・小文字の区別検索、単語単位検索のみ(訳注:正規表現はなし)</li>
+</ul>
+
+<p>デフォルトではマッチ件数ぐらいしか返ってきませんが、タブ内でのより多くの情報を得るため、次のオプションを指定することができます。</p>
+
+<ul>
+ <li><code>includeRangeData</code></li>
+ <li><code>includeRectData</code></li>
+</ul>
+
+<p>結果を内部的に保持しているため、ハイライト機能は次に上書き<code>(find()</code>)されるまで次の関数で起動できます。</p>
+
+<ul>
+ <li>{{WebExtAPIRef("find.highlightResults()")}},</li>
+</ul>
+
+<p>この関数は asynchronous/ 非同期 関数で <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返します。</p>
+
+<h2 id="Syntax">Syntax</h2>
+
+<pre class="syntaxbox brush:js">browser.find.find(
+ queryphrase, // string
+ options // optional object
+)
+</pre>
+
+<h3 id="Parameters">Parameters</h3>
+
+<dl class="reference-values">
+ <dt><code>queryphrase</code></dt>
+ <dd><code>string</code>. 検索語。</dd>
+ <dt><code>options</code>{{optional_inline}}</dt>
+ <dd>
+ <p><code>object</code>. An object specifying additional options. It may take any of the following properties, all optional:</p>
+
+ <dl class="reference-values">
+ <dt><code>tabId</code></dt>
+ <dd><code>integer</code>. ID of the tab to search. Defaults to the active tab.</dd>
+ <dt><code>caseSensitive</code></dt>
+ <dd><code>boolean</code>. If true, the search is case-sensitive. Defaults to <code>false</code>.</dd>
+ <dt><code>entireWord</code></dt>
+ <dd><code>boolean</code>. Match only entire words: so "Tok" will not be matched inside "Tokyo". Defaults to <code>false</code>.</dd>
+ <dt><code>includeRangeData</code></dt>
+ <dd><code>boolean</code>. Include range data in the response, which describe where in the page DOM the match was found. Defaults to <code>false</code>.</dd>
+ <dt><code>includeRectData</code></dt>
+ <dd><code>boolean</code>. Include rectangle data in the response, which describes where in the rendered page the match was found. Defaults to <code>false</code>.</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="Return_value">Return value</h3>
+
+<p>A <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> that will be fulfilled with an object containing up to three properties:</p>
+
+<dl class="reference-values">
+ <dt><code>count</code></dt>
+ <dd><code>integer</code>. The number of results found.</dd>
+ <dt><code>rangeData</code>{{optional_inline}}</dt>
+ <dd>
+ <p><code>array</code>. If <code>includeRangeData</code> was given in the <code>options</code> parameter, then this property will be included. It is provided as an array of <code>RangeData</code> objects, one for each match. <code>それぞれのRangeData</code> はDOM ツリー構造をしています。検索語の周りを表示することなどにも使えます。</p>
+
+ <p>次の <code>rectData</code>, も同様に配列で <code>rangeData[i]</code> と <code>rectData[i]</code>は1対1で対応します。.</p>
+
+ <p>Each <code>RangeData</code> contains the following properties:</p>
+
+ <dl class="reference-values">
+ <dt><code>framePos</code></dt>
+ <dd>マッチしたframe番号(訳注: iframeごとで変わる番号). 0 は通常のページ部分で親です。 Note that the order of objects in the <code>rangeData</code> array will sequentially line up with the order of frame indexes: for example, <code>framePos</code> for the first sequence of <code>rangeData</code> objects will be 0, <code>framePos</code> for the next sequence will be 1, and so on.</dd>
+ <dt><code>startTextNodePos</code></dt>
+ <dd>テキスト Nodeの 開始側Index(訳注:直接この値をAPI一本で活用できないため、下記のサンプルを参照)</dd>
+ <dt><code>endTextNodePos</code></dt>
+ <dd>テキスト Nodeの 終端側Index.</dd>
+ <dt><code>startOffset</code></dt>
+ <dd>開始Node内の 初めの文字列の位置.</dd>
+ <dt><code>endOffset</code></dt>
+ <dd>終端Node内の 終わりの文字列の位置</dd>
+ </dl>
+ </dd>
+ <dt><code>rectData</code>{{optional_inline}}</dt>
+ <dd>
+ <p><code>array</code>. 呼び出し時に<code>optionsで</code> <code>includeRectData</code> 引数を与えると結果を返します。 <code>RectData</code> objectsの配列です。それらはマッチしたワードを含む、client rectangles を返します。拡張機能でハイライトなどに使えるでしょう。.</p>
+
+ <p>Each <code>RectData</code> object はそれぞれ 1つのマッチに対して2つのプロパティを持ちます。</p>
+
+ <dl class="reference-values">
+ <dt><code>rectsAndTexts</code></dt>
+ <dd>1対1の関係となる2つの配列を持ちます:
+ <ul>
+ <li><code>rectList</code>: 4つの integer をもつ配列: <code>top</code>, <code>left</code>, <code>bottom</code>, <code>right</code>. その位置情報はviewportにおける左上からの位置です。</li>
+ <li><code>textList</code>: 上記<code>rectList[i]</code>に含まれた <code>textList[i]</code> (string)を持つ配列です。</li>
+ </ul>
+
+ <p>例えば Webページ上で:</p>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15582/rects-1.png" style="display: block; height: 227px; margin-left: auto; margin-right: auto; width: 488px;"> "You may"を探すと2つの矩形エリアで表現されます。:</p>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15583/rects-2.png" style="display: block; height: 227px; margin-left: auto; margin-right: auto; width: 488px;"> <code>RectData</code> はこのようにマッチし、 <code>rectsAndTexts.rectList</code> と <code>rectsAndTexts.textList</code>は次のようになります。</p>
+
+ <ul>
+ <li><code>textList[0]</code> = "You ",  <code>rectList[0]</code> はHTML上の境界を表す矩形エリアを含みます。</li>
+ <li><code>textList[1]</code> = "may",  <code>rectList[1]</code>も"may"について同様です。</li>
+ </ul>
+ </dd>
+ <dt><code>text</code></dt>
+ <dd>マッチしたテキスト全体、上の例では"You may"が丸ごと入ります。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.find.find", 10)}}</p>
+
+<h2 id="Examples">Examples</h2>
+
+<h3 id="Basic_examples">Basic examples</h3>
+
+<p>Search the active tab for "banana", log the number of matches, and highlight them:</p>
+
+<pre class="brush: js">function found(results) {
+ console.log(`There were: ${results.count} matches.`);
+ if (results.count &gt; 0) {
+ browser.find.highlightResults();
+ }
+}
+
+browser.find.find("banana").then(found);</pre>
+
+<p>Search for "banana" across all tabs (note that this requires the "tabs" <a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions">permission</a>, because it accesses <code>tab.url</code>):</p>
+
+<pre class="brush: js">async function findInAllTabs(allTabs) {
+ for (let tab of allTabs) {
+ let results = await browser.find.find("banana", {tabId: tab.id});
+ console.log(`In page "${tab.url}": ${results.count} matches.`)
+ }
+}
+
+browser.tabs.query({}).then(findInAllTabs);</pre>
+
+<h3 id="Using_rangeData">Using rangeData</h3>
+
+<p>In this example the extension uses <code>rangeData</code> to get the context in which the match was found. The context is the complete <code>textContent</code> of the node in which the match was found. If the match spanned nodes, the context is the concatenation of the <code>textContent</code> of all spanned nodes.</p>
+
+<p>Note that for simplicity, this example doesn't handle pages that contain frames. To support this you'd need to split <code>rangeData</code> into groups, one per frame, and execute the script in each frame.</p>
+
+<p>The background script:</p>
+
+<pre class="brush: js">// background.js
+
+async function getContexts(matches) {
+
+ // get the active tab ID
+ let activeTabArray = await browser.tabs.query({
+ active: true, currentWindow: true
+ });
+ let tabId = activeTabArray[0].id;
+
+ // execute the content script in the active tab
+ await browser.tabs.executeScript(tabId, {file: "get-context.js"});
+ // ask the content script to get the contexts for us
+ let contexts = await browser.tabs.sendMessage(tabId, {
+ ranges: matches.rangeData
+ });
+ for (let context of contexts) {
+ console.log(context);
+ }
+
+}
+
+browser.browserAction.onClicked.addListener((tab) =&gt; {
+ browser.find.find("example", {includeRangeData: true}).then(getContexts);
+});
+</pre>
+
+<p>The content script:</p>
+
+<pre class="brush: js">/**
+ * Get all the text nodes into a single array
+ */
+function getNodes() {
+ let walker = document.createTreeWalker(document, window.NodeFilter.SHOW_TEXT, null, false);
+ let nodes = [];
+ while(node = walker.nextNode()) {
+ nodes.push(node);
+ }
+
+ return nodes;
+}
+
+/**
+ * Gets all text nodes in the document, then for each match, return the
+ * complete text content of nodes that contained the match.
+ * If a match spanned more than one node, concatenate the textContent
+ * of each node.
+ */
+function getContexts(ranges) {
+
+ let contexts = [];
+ let nodes = getNodes();
+
+ for (let range of ranges) {
+ let context = nodes[range.startTextNodePos].textContent;
+ let pos = range.startTextNodePos;
+ while (pos &lt; range.endTextNodePos) {
+ pos++;
+ context += nodes[pos].textContent;
+ }
+ contexts.push(context);
+ }
+ return contexts;
+}
+
+browser.runtime.onMessage.addListener((message, sender, sendResponse) =&gt; {
+ sendResponse(getContexts(message.ranges));
+});
+</pre>
+
+<h3 id="Using_rectData">Using rectData</h3>
+
+<p>In this example the extension uses <code>rectData</code> to "redact" the matches, by adding black DIVs over the top of their bounding rectangles:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15584/redacted.png" style="display: block; height: 416px; margin-left: auto; margin-right: auto; width: 625px;">Note that in many ways this is a poor way to redact pages.</p>
+
+<p>The background script:</p>
+
+<pre class="brush: js">// background.js
+
+async function redact(matches) {
+
+ // get the active tab ID
+ let activeTabArray = await browser.tabs.query({
+ active: true, currentWindow: true
+ });
+ let tabId = activeTabArray[0].id;
+
+ // execute the content script in the active tab
+ await browser.tabs.executeScript(tabId, {file: "redact.js"});
+ // ask the content script to redact matches for us
+ await browser.tabs.sendMessage(tabId, {rects: matches.rectData});
+}
+
+browser.browserAction.onClicked.addListener((tab) =&gt; {
+ browser.find.find("banana", {includeRectData: true}).then(redact);
+});
+</pre>
+
+<p>The content script:</p>
+
+<pre class="brush: js">// redact.js
+
+/**
+ * Add a black DIV where the rect is.
+ */
+function redactRect(rect) {
+ var redaction = document.createElement("div");
+ redaction.style.backgroundColor = "black";
+ redaction.style.position = "absolute";
+ redaction.style.top = `${rect.top}px`;
+ redaction.style.left = `${rect.left}px`;
+ redaction.style.width = `${rect.right-rect.left}px`;
+ redaction.style.height = `${rect.bottom-rect.top}px`;
+ document.body.appendChild(redaction);
+}
+
+/**
+ * Go through every rect, redacting them.
+ */
+function redactAll(rectData) {
+ for (match of rectData) {
+ for (rect of match.rectsAndTexts.rectList) {
+ redactRect(rect);
+ }
+ }
+}
+
+browser.runtime.onMessage.addListener((message) =&gt; {
+ redactAll(message.rects);
+});
+</pre>
+
+<p>{{WebExtExamples}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/find/index.html b/files/ja/mozilla/add-ons/webextensions/api/find/index.html
new file mode 100644
index 0000000000..903eef3507
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/find/index.html
@@ -0,0 +1,32 @@
+---
+title: find
+slug: Mozilla/Add-ons/WebExtensions/API/find
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Reference
+ - WebExtensions
+ - find
+translation_of: Mozilla/Add-ons/WebExtensions/API/find
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ウェブページのテキストを検索し、マッチしたものをハイライトします。</p>
+
+<p>この API を使うには "find" <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>が必要です。</p>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("find.find()")}}</dt>
+ <dd>ウェブページのテキストを検索する</dd>
+ <dt>{{WebExtAPIRef("find.highlightResults()")}}</dt>
+ <dd>最後に検索にマッチした集合をハイライトする</dd>
+ <dt>{{WebExtAPIRef("find.removeHighlighting()")}}</dt>
+ <dd>あらゆるハイライトを削除する</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.find", 1, 1)}} {{WebExtExamples("h2")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/history/historyitem/index.html b/files/ja/mozilla/add-ons/webextensions/api/history/historyitem/index.html
new file mode 100644
index 0000000000..d698e6101e
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/history/historyitem/index.html
@@ -0,0 +1,83 @@
+---
+title: history.HistoryItem
+slug: Mozilla/Add-ons/WebExtensions/API/history/HistoryItem
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - History
+ - HistoryItem
+ - Non-standard
+ - Reference
+ - Type
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/history/HistoryItem
+---
+<p>{{AddonSidebar()}}</p>
+
+<p><code>HistoryItem</code> オブジェクトはブラウザー履歴でのページ情報を提供します。</p>
+
+<h2 id="Type" name="Type">型</h2>
+
+<p>これは下記のプロパティを持つオブジェクトです:</p>
+
+<dl class="reference-values">
+ <dt><code>id</code></dt>
+ <dd><code>string</code>。アイテムに固有のID。</dd>
+ <dt><code>url</code> {{optional_inline}}</dt>
+ <dd><code>string</code>。ページのURL。</dd>
+ <dt><code>title</code> {{optional_inline}}</dt>
+ <dd><code>string</code>。ページのタイトル。</dd>
+ <dt><code>lastVisitTime</code> {{optional_inline}}</dt>
+ <dd><code>number</code>。ページが最後に読み込まれた日付と時間で、epochからのミリ秒で表現される。</dd>
+ <dt><code>visitCount</code> {{optional_inline}}</dt>
+ <dd><code>number</code>。ユーザーがページを訪問した回数。</dd>
+ <dt><code>typedCount</code> {{optional_inline}}</dt>
+ <dd><code>number</code>。ユーザーがアドレスをタイプしてページに移動したきた回数。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.history.HistoryItem")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝</strong><strong>辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/history#type-HistoryItem"><code>chrome.history</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/history/index.html b/files/ja/mozilla/add-ons/webextensions/api/history/index.html
new file mode 100644
index 0000000000..20f5a6e995
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/history/index.html
@@ -0,0 +1,132 @@
+---
+title: history
+slug: Mozilla/Add-ons/WebExtensions/API/history
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - History
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/history
+---
+<div> {{AddonSidebar}}</div>
+
+<p>ブラウザー履歴とやりとりする <code>history</code> API を使用します。</p>
+
+<div class="note">
+<p>downloads は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/history/HistoryItem" title="A HistoryItem object provides information about a page in the browser history."><code>HistoryItem</code></a> オブジェクトとして扱われるのに注意します。このため、ダウンロードのために <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/history/onVisited" title="Fired each time the user visits a page. A history.HistoryItem object is passed to the listener. This event fires before the page has loaded."><code>history.onVisited</code></a> も発火します。</p>
+</div>
+
+<p>ブラウザー履歴はユーザーが訪れたページの時間順の記録です。history API では次の事ができます:</p>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/API/history/search">ブラウザー履歴に出てくるページの検索</a></li>
+ <li><a href="/ja/Add-ons/WebExtensions/API/history/deleteUrl">ブラウザー履歴から個々のページを削除</a></li>
+ <li><a href="/ja/Add-ons/WebExtensions/API/history/addUrl">ブラウザー履歴にページを追加</a></li>
+ <li><a href="/ja/Add-ons/WebExtensions/API/history/deleteAll">ブラウザー履歴から全ページを削除</a></li>
+</ul>
+
+<p>しかしながら、ユーザーは1つのページを何度も訪問することがあるので、このAPI は「訪問数」の概念もあります。したがってこの API を次のようにも使えます:</p>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/API/history/getVisits">ユーザーが特定のページを訪問した完全なセットを取得する</a></li>
+ <li><a href="/ja/Add-ons/WebExtensions/API/history/deleteRange">所定の期間に訪問したあらゆるページの訪問を削除する</a></li>
+</ul>
+
+<p>このAPIを使うには <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> ファイルで指定する "history" <a href="https://developer.mozilla.org/JA/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">パーミッション</a>が必要です。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("history.TransitionType")}}</dt>
+ <dd>ブラウザーがあるページにどのように移動したのかを記述</dd>
+ <dt>{{WebExtAPIRef("history.HistoryItem")}}</dt>
+ <dd>
+ <p>ブラウザー履歴のあるページに関する情報を提供</p>
+ </dd>
+ <dt>{{WebExtAPIRef("history.VisitItem")}}</dt>
+ <dd>
+ <p>ページへの単一の訪問を記述</p>
+ </dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("history.search()")}}</dt>
+ <dd>ブラウザー履歴を検索して、所与の条件にマッチする <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/History/HistoryItem" title="A HistoryItem object provides information about one result from a history query."><code>history.HistoryItem</code></a> オブジェクトを得る</dd>
+ <dt>{{WebExtAPIRef("history.getVisits()")}}</dt>
+ <dd>所定のページへの訪問についての情報を取得する</dd>
+ <dt>{{WebExtAPIRef("history.addUrl()")}}</dt>
+ <dd>ブラウザー履歴に所定のページへの訪問のレコードを追加する</dd>
+ <dt>{{WebExtAPIRef("history.deleteUrl()")}}</dt>
+ <dd>ブラウザー履歴から 所定のURLへのすべての訪問を削除する</dd>
+ <dt>{{WebExtAPIRef("history.deleteRange()")}}</dt>
+ <dd>所定の時間範囲でユーザーが訪問したすべてのページを削除する</dd>
+ <dt>{{WebExtAPIRef("history.deleteAll()")}}</dt>
+ <dd>ブラウザー履歴からすべての訪問を削除する</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("history.onTitleChanged")}}</dt>
+ <dd>
+ <div>ユーザーがあるページに訪問してタイトルが記録された時に発火します</div>
+ </dd>
+ <dt>{{WebExtAPIRef("history.onVisited")}}</dt>
+ <dd>ユーザーがあるページに {{WebExtAPIRef("history.HistoryItem")}} を提供しつつそのページを訪問した時に発火します</dd>
+ <dt>{{WebExtAPIRef("history.onVisitRemoved")}}</dt>
+ <dd>
+ <p>ある URL がブラウザー履歴から完全に削除された時に発火します</p>
+ </dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.history")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.html b/files/ja/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.html
new file mode 100644
index 0000000000..f34d266ad8
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.html
@@ -0,0 +1,115 @@
+---
+title: i18n.detectLanguage()
+slug: Mozilla/Add-ons/WebExtensions/API/i18n/detectLanguage
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - detectLanguage
+ - i18n
+translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/detectLanguage
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>提供されたテキストの言語を <a href="https://github.com/CLD2Owners/cld2">Compact Language Detector</a> (CLD) を利用して検出します。</p>
+
+<p>これは、<code><a href="/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox brush:js">var detectingLanguages = browser.i18n.detectLanguage(
+ text // string
+)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>text</code></dt>
+ <dd><code>文字列</code>。翻訳されるユーザー入力の文字列です。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p>結果オブジェクトで解決される <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>。結果オブジェクトは 2 個のプロパティを持ちます:</p>
+
+<dl class="reference-values">
+ <dt><code>isReliable</code></dt>
+ <dd><code>真偽値</code>。検出された言語が確かかどうかを示します。</dd>
+ <dt><code>languages</code></dt>
+ <dd>オブジェクトの <code>配列</code>。配列の各項目はさらに 2 個のプロパティを持ちます:</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>language</code></dt>
+ <dd>{{WebExtAPIRef('i18n.LanguageCode')}}。検出された言語です。</dd>
+ <dt><code>percentage</code></dt>
+ <dd><code>整数値</code>。検出された言語で入力された文字列の割り合い。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.i18n.detectLanguage")}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js">function onLanguageDetected(langInfo) {
+ for (lang of langInfo.languages) {
+ console.log("Language is: " + lang.language);
+ console.log("Percentage is: " + lang.percentage);
+ }
+}
+
+var text = "L'homme est né libre, et partout il est dans les fers."
+
+var detecting = browser.i18n.detectLanguage(text);
+detecting.then(onLanguageDetected);
+
+</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は、Chromium の <a href="https://developer.chrome.com/extensions/i18n#method-detectLanguage"><code>chrome.i18n</code></a> API を基にしています。このドキュメンテーションは、Chromium コード内の <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> に由来しています。</p>
+
+<p>Microsoft Edge 互換性データは、Microsoft Corporation より供給され、Creative Commons Attribution 3.0 United States License の下で含まれています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.html b/files/ja/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.html
new file mode 100644
index 0000000000..636e86d94d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.html
@@ -0,0 +1,92 @@
+---
+title: i18n.getAcceptLanguages()
+slug: Mozilla/Add-ons/WebExtensions/API/i18n/getAcceptLanguages
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - getAcceptLanguages
+ - i18n
+translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/getAcceptLanguages
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>ブラウザーの <a href="/ja/docs/Web/HTTP/Content_negotiation#The_Accept-Language_header">accept-languages</a> を取得します。これは、ブラウザーに使用されているロケールとは異なります。ロケールを取得するには、{{WebExtAPIRef('i18n.getUILanguage')}} を使用してください。</p>
+
+<p>これは、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox brush:js">var gettingAcceptLanguages = browser.i18n.getAcceptLanguages()
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>なし。</p>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p><code>{{WebExtAPIRef('i18n.LanguageCode')}}</code> オブジェクトの <code>配列</code> で処理が完了した <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.i18n.getAcceptLanguages")}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js">function onGot(languages) {
+ console.log(languages);
+ //e.g. Array [ "en-US", "en" ]
+}
+
+var gettingAcceptLanguages = browser.i18n.getAcceptLanguages();
+gettingAcceptLanguages.then(onGot);
+</pre>
+
+<p> </p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は、Chromium の <a href="https://developer.chrome.com/extensions/i18n#method-getAcceptLanguages"><code>chrome.i18n</code></a> API を基にしています。このドキュメンテーションは、Chromium コード内の <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> に由来しています。</p>
+
+<p>Microsoft Edge 互換性データは、Microsoft Corporation より供給され、Creative Commons Attribution 3.0 United States License の下で含まれています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/getmessage/index.html b/files/ja/mozilla/add-ons/webextensions/api/i18n/getmessage/index.html
new file mode 100644
index 0000000000..c28d4a83ad
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/getmessage/index.html
@@ -0,0 +1,119 @@
+---
+title: i18n.getMessage()
+slug: Mozilla/Add-ons/WebExtensions/API/i18n/getMessage
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - getMessage
+ - i18n
+translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/getMessage
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>指定したメッセージのローカライズされた文字列を取得します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox brush:js">browser.i18n.getMessage(
+ messageName, // 文字列
+ substitutions // 任意
+)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>messageName</code></dt>
+ <dd><code>文字列</code>。messages.json で指定されたメッセージ名です。messages.json 内にメッセージを見つけられない場合は:</dd>
+ <dd>
+ <ul>
+ <li>Firefox は "" を返し、エラーログを出力します。</li>
+ <li>Chrome は "" を返し、エラーログを出力しません。</li>
+ </ul>
+ </dd>
+ <dt><code>substitutions</code>{{optional_inline}}</dt>
+ <dd><code>文字列</code> または <code>文字列</code> の <code>配列</code>。単一の置換文字列、または置換文字列の配列です。</dd>
+ <dd>Chrome では、9 個より多くの置換文字列を与えると、<code>getMessage()</code> は <code>undefined</code> を返します。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p><code>文字列</code>。現在のロケール向けにローカライズされたメッセージ。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.i18n.getMessage")}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p><code>target.url</code> を置換文字列として渡し、<code>"messageContent"</code> のローカライズされた文字列を取得します:</p>
+
+<pre class="brush: js">var message = browser.i18n.getMessage("messageContent", target.url);
+console.log(message);
+</pre>
+
+<p>これは、_locales/en/messages.json ファイルに含まれた次の内容で動作します:</p>
+
+<pre class="brush: json">{
+ "messageContent": {
+ "message": "You clicked $URL$.",
+ "description": "Tells the user which link they clicked.",
+ "placeholders": {
+ "url" : {
+ "content" : "$1",
+ "example" : "https://developer.mozilla.org"
+ }
+ }
+ }
+}</pre>
+
+<p><code>target.url</code> が "https://developer.mozilla.org" である場合、"en" ロケールでのメッセージの値は次のようになります:</p>
+
+<pre>"You clicked https://developer.mozilla.org."</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は、Chromium の <a href="https://developer.chrome.com/extensions/i18n#method-getMessage"><code>chrome.i18n</code></a> API を基にしています。このドキュメンテーションは、Chromium コード内の <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> に由来しています。</p>
+
+<p>Microsoft Edge 互換性データは、Microsoft Corporation より供給され、Creative Commons Attribution 3.0 United States License の下で含まれています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.html b/files/ja/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.html
new file mode 100644
index 0000000000..51161c8496
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.html
@@ -0,0 +1,84 @@
+---
+title: i18n.getUILanguage()
+slug: Mozilla/Add-ons/WebExtensions/API/i18n/getUILanguage
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - getUILanguage
+ - i18n
+translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/getUILanguage
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>ブラウザーの UI 言語を取得します。これは、優先されるユーザー言語を返す {{WebExtAPIRef('i18n.getAcceptLanguages')}} とは異なります。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox brush:js">browser.i18n.getUILanguage()
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<p>なし。</p>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p><code>文字列</code>。{{WebExtAPIRef("i18n.LanguageCode")}} によるブラウザーの UI 言語コード。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.i18n.getUILanguage")}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush: js">var uiLanguage = browser.i18n.getUILanguage();
+console.log(uiLanguage);
+
+//e.g. "ja"</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は、Chromium の <a href="https://developer.chrome.com/extensions/i18n#method-getUILanguage"><code>chrome.i18n</code></a> API を基にしています。このドキュメンテーションは、Chromium コード内の <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> に由来しています。</p>
+
+<p>Microsoft Edge 互換性データは、Microsoft Corporation より供給され、Creative Commons Attribution 3.0 United States License の下で含まれています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/index.html b/files/ja/mozilla/add-ons/webextensions/api/i18n/index.html
new file mode 100644
index 0000000000..deba5c0bf5
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/index.html
@@ -0,0 +1,94 @@
+---
+title: i18n
+slug: Mozilla/Add-ons/WebExtensions/API/i18n
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - i18n
+translation_of: Mozilla/Add-ons/WebExtensions/API/i18n
+---
+<div>{{AddonSidebar}}</div>
+
+<p>拡張機能を国際化する関数です。これらの API は、拡張機能に同梱したロケールファイルからローカライズ文字列を取得したり、ブラウザーの現在の言語や、その <a href="/ja/docs/Web/HTTP/Content_negotiation#The_Accept-Language_header">Accept-Language ヘッダー</a> を調べるために使用します。</p>
+
+<p id="See_also">拡張機能で i18n を使用するための詳細は、以下の記事を参照してください:</p>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Internationalization">Internationalization</a>: WebExtension の i18n システムを使うためのガイド。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/i18n/Locale-Specific_Message_reference">ロケール固有のメッセージ参照</a>: 拡張機能が <code>messages.json</code> と呼ばれるファイルで供給するロケール固有の文字列。このページは、<code>messages.json</code> の書式について書かれています。</li>
+</ul>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("i18n.LanguageCode")}}</dt>
+ <dd><code>"en-US"</code> や "<code>fr</code>" などの <a href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.10">言語タグ</a>。</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("i18n.getAcceptLanguages()")}}</dt>
+ <dd>ブラウザーの <a href="/ja/docs/Web/HTTP/Content_negotiation#The_Accept-Language_header">accept-languages</a> を取得します。これは、ブラウザーに使用されているロケールとは異なります。ロケールを取得するには、{{WebExtAPIRef('i18n.getUILanguage')}} を使用してください。</dd>
+ <dt>{{WebExtAPIRef("i18n.getMessage()")}}</dt>
+ <dd>指定したメッセージのローカライズ文字列を取得します。</dd>
+ <dt>{{WebExtAPIRef("i18n.getUILanguage()")}}</dt>
+ <dd>ブラウザーの UI 言語を取得します。これは、優先されるユーザー言語を返す {{WebExtAPIRef('i18n.getAcceptLanguages')}} とは異なります。</dd>
+ <dt>{{WebExtAPIRef("i18n.detectLanguage()")}}</dt>
+ <dd>提供されたテキストの言語を <a href="https://github.com/CLD2Owners/cld2">Compact Language Detector</a> を利用して検出します。</dd>
+</dl>
+
+<dl>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの実装状況</h2>
+
+<p>{{Compat("webextensions.api.i18n")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<dl>
+</dl>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は、Chromium の <a href="https://developer.chrome.com/extensions/i18n"><code>chrome.i18n</code></a> API を基にしています。このドキュメンテーションは、Chromium コード内の <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> に由来しています。</p>
+
+<p>Microsoft Edge 互換性データは、Microsoft Corporation より供給され、Creative Commons Attribution 3.0 United States License の下で含まれています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/languagecode/index.html b/files/ja/mozilla/add-ons/webextensions/api/i18n/languagecode/index.html
new file mode 100644
index 0000000000..2ed7796e1f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/languagecode/index.html
@@ -0,0 +1,68 @@
+---
+title: i18n.LanguageCode
+slug: Mozilla/Add-ons/WebExtensions/API/i18n/LanguageCode
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - LanguageCode
+ - Non-standard
+ - Reference
+ - Type
+ - WebExtensions
+ - i18n
+translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/LanguageCode
+---
+<div>{{AddonSidebar()}}</div>
+
+<p><code>"en-US"</code> や "<code>fr</code>" などの <a href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.10">言語タグ</a>。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<p>この型の値は文字列です。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.i18n.LanguageCode")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は、Chromium の <a href="https://developer.chrome.com/extensions/i18n#type-LanguageCode"><code>chrome.i18n</code></a> API を基にしています。このドキュメンテーションは、Chromium コード内の <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> に由来しています。</p>
+
+<p>Microsoft Edge 互換性データは、Microsoft Corporation より供給され、Creative Commons Attribution 3.0 United States License の下で含まれています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.html b/files/ja/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.html
new file mode 100644
index 0000000000..adcde0288c
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.html
@@ -0,0 +1,127 @@
+---
+title: ロケール固有のメッセージ参照
+slug: Mozilla/Add-ons/WebExtensions/API/i18n/Locale-Specific_Message_reference
+tags:
+ - Internationalization
+ - Localization
+ - Reference
+ - String
+ - WebExtensions
+ - i18n
+ - message
+ - message.json
+ - placeholders
+translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/Locale-Specific_Message_reference
+---
+<p>国際化対応 (i18n) した拡張機能は、ロケール固有のメッセージを提供する少なくとも 1 個の <code>messages.json</code> というファイルを持っています。このページでは、<code>messages.json</code> の書式を説明します。</p>
+
+<div class="note">
+<p><strong>補足</strong>: 拡張機能を国際化する方法についての情報は、<a href="/ja/Add-ons/WebExtensions/WebExtension_i18n">i18n</a> ガイドを参照してください。</p>
+</div>
+
+<h2 id="messages.json_example">messages.json example</h2>
+
+<p>次のコードは、<a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n example</a> 拡張機能から取られた <code>messages.json ファイル</code> の例示です。"<em>name</em>" と "message" のフィールドのみが必須です。</p>
+
+<pre class="brush: json">{
+ "extensionName": {
+ "message": "Notify link clicks i18n",
+ "description": "Name of the extension."
+ },
+
+ "extensionDescription": {
+ "message": "ユーザーがリンクをクリックしたときに通知を表示します。",
+ "description": "Description of the extension."
+ },
+
+ "notificationTitle": {
+ "message": "クリック通知",
+ "description": "Title of the click notification."
+ },
+
+ "notificationContent": {
+ "message": "$URL$ をクリックしました。",
+ "description": "Tells the user which link they clicked.",
+ "placeholders": {
+ "url" : {
+ "content" : "$1",
+ "example" : "https://developer.mozilla.org"
+ }
+ }
+ }
+}</pre>
+
+<h2 id="Placement" name="Placement">ファイルの配置</h2>
+
+<p><code>messages.json</code> ファイルは、サポートされたロケール名 (<code>en</code>, <code>de</code>, <code>ja</code> など) のディレクトリー内に置く必要があります。さらにこれらは、拡張機能のルートディレクトリ内の <code>_locales</code> と呼ばれるディレクトリー内に置く必要があります。</p>
+
+<h2 id="Member_details" name="Member_details">メンバーの詳細</h2>
+
+<p>このセクションは、<code>messages.json</code> 内に記述される各メンバーについて説明します。</p>
+
+<h3 id="name" name="name">name</h3>
+
+<p>各トップレベルのメンバーは、ローカライズするメッセージ文字列の name の後に名付けられます。例えば、上記の例の <code>"extensionName"</code> や <code>"notificationContent"</code> です。name は大文字と小文字が区別され、ローカライズされたメッセージテキストを受け取るためのキーとして振る舞います。</p>
+
+<p>name には、次の文字が使用できます:</p>
+
+<ul>
+ <li>A-Z</li>
+ <li>a-z</li>
+ <li>0-9</li>
+ <li>_ (アンダースコア)</li>
+ <li>@</li>
+</ul>
+
+<p class="note"><strong>注記:</strong> @@ で始まる name を定義してはいけません。この名前は <a href="/ja/Add-ons/WebExtensions/Internationalization#Predefined_messages">事前定義されたメッセージ</a> で予約されています。</p>
+
+<h3 id="message" name="message">message</h3>
+
+<p><code>"message"</code> メンバーは、{{anch("placeholders")}} を含むことのできるローカライズされた文字列を含みます。次のように使用します:</p>
+
+<ul>
+ <li><em>$placeholder_name$</em> (大文字と小文字を区別) は、文字列に特定のプレースホルダー (例えば、上記の例の $URL$) を挿入します。</li>
+ <li><code>$1</code>, <code>$2</code>,<code> $3</code> 等は、{{WebExtAPIRef("i18n.getMessage()")}} 呼び出し時に取得した値を文字列に直接挿入します。</li>
+</ul>
+
+<p>他の注意すべき点:</p>
+
+<ul>
+ <li>文字列の前後に現れるいくつかのドル記号は、その個数から 1 を引いた数分のドル記号に置き換えられます。つまり、$$ は $ に、$$$ は $$ になります。</li>
+ <li>ロケールファイルの読み込み時に、<code>/\$([a-z0-9_@]+)\$/i</code> と一致するトークンは、文字列の "置き換え" オブジェクトからの一致する値に置き換えられます。これらの置換は、メッセージ内の任意の <code>/\$\d/</code> トークンの処理よりも優先して行われます。</li>
+ <li>ロケール文字列が使用される時に、<code>/\$\d+/</code> と一致するトークンは、{{WebExtAPIRef("i18n.getMessage()")}} に渡される replacement に置き換えられます。</li>
+ <li><code>getMessage()</code> は、placeholder/substitution の呼び出しを 9 個までしか処理しません。</li>
+</ul>
+
+<h3 id="description" name="description">description</h3>
+
+<p>{{optional_inline}}</p>
+
+<p><code>"description"</code> メンバーは、文字列に最適な訳語を作成する助けとなる情報を翻訳者に提供するために、メッセージ文字列の内容についての説明を含みます。</p>
+
+<h3 id="placeholders" name="placeholders">placeholders</h3>
+
+<p>{{optional_inline}}</p>
+
+<p><code>"placeholders"</code> メンバーは、メッセージ内で使用されるいくつかのプレースホルダー補助文字列を定義します。これらは、翻訳してほしくないハードコードされたアイテムや変数を参照するアイテムに利用できます。</p>
+
+<p>各プレースホルダー補助文字列の定義は、それ自身がいくつかの値を持っています:</p>
+
+<pre class="brush: json">"url" : {
+ "content" : "$1",
+ "example" : "https://developer.mozilla.org"
+}</pre>
+
+<h4 id="placeholder_name" name="placeholder_name">プレースホルダー名</h4>
+
+<p>プレースホルダー名は、補助文字列内の placeholder を表すために使用します (<code>"url"</code> は <code>$url$</code> になります)。これは、大文字と小文字が区別され、メッセージ文字列と同じ文字が使用できます {{anch("name")}}。</p>
+
+<h4 id="content" name="content">content</h4>
+
+<p>"content" アイテムは、placeholder の内容を定義します。これは、"My placeholder" などハードコードされた文字列にすることができますが、{{WebExtAPIRef("i18n.getMessage()")}} 呼び出しから取得した値も含められます。詳しい情報は、<a href="/ja/Add-ons/WebExtensions/Internationalization#Retrieving_message_strings_from_JavaScript">JavaScript からメッセージ文字列を取得する</a> を参照してください。</p>
+
+<h4 id="example" name="example">example</h4>
+
+<p>{{optional_inline}}</p>
+
+<p>任意の "example" アイテムは、プレースホルダーがエンドユーザーにどのように表示されるかの例を示すことによって翻訳者を助けるためのものです。これにより、翻訳者がファイルをローカライズするときに最適な選択ができるようになるでしょう。</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.html b/files/ja/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.html
new file mode 100644
index 0000000000..1fa8642b11
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.html
@@ -0,0 +1,55 @@
+---
+title: identity.getRedirectURL()
+slug: Mozilla/Add-ons/WebExtensions/API/identity/getRedirectURL
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Identity
+ - Method
+ - Reference
+ - WebExtensions
+ - getRedirectURL
+translation_of: Mozilla/Add-ons/WebExtensions/API/identity/getRedirectURL
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>リダイレクト URL として利用可能な URL を生成します。</p>
+
+<p>この URL は、アドオン ID から生成されるため、使用したい場合、<code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings">browser_specific_settings</a></code> キーを使用してアドオン ID を明示的に設定する必要があるでしょう (設定しない場合、アドオンを<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">一時的にインストール</a>するたびに、異なるリダイレクト URL を取得することになります)。</p>
+
+<p>リダイレクトURL については、<a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/identity#Getting_the_redirect_URL">リダイレクトURL を取得する</a>を参照してください。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">var redirectURL = browser.identity.getRedirectURL()
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<p>なし</p>
+
+<h3 id="返り値">返り値</h3>
+
+<p>リダイレクト URL を含む文字列</p>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.identity.getRedirectURL")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>リダイレクト URL を取得する:</p>
+
+<pre class="brush: js">var redirectURL = browser.identity.getRedirectURL();</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/identity"><code>chrome.identity</code></a> API に基づいています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/identity/index.html b/files/ja/mozilla/add-ons/webextensions/api/identity/index.html
new file mode 100644
index 0000000000..29d946d813
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/identity/index.html
@@ -0,0 +1,106 @@
+---
+title: identity
+slug: Mozilla/Add-ons/WebExtensions/API/identity
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Identity
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/identity
+---
+<div>{{AddonSidebar}}</div>
+
+<p>identity API を使って <a href="https://oauth.net/2/">OAuth2</a> の認証コードやアクセストークンを取得し、拡張機能が OAuth2 での認証 (Google や Facebook アカウントなど) をサポートするサービスからユーザーデータを取得できるようにします。</p>
+
+<p>OAuth2 フローがどのように機能するかの詳細は、サービスプロバイダーごとに異なるため、特定のサービスプロバイダーにおいてこの API を使用するには、各サービスごとのドキュメントを参照する必要があります。例:</p>
+
+<ul>
+ <li><a href="https://developers.google.com/identity/protocols/OAuth2UserAgent">https://developers.google.com/identity/protocols/OAuth2UserAgent</a></li>
+ <li><a href="https://developer.github.com/v3/oauth/">https://developer.github.com/v3/oauth/</a></li>
+</ul>
+
+<p>identity API は {{WebExtAPIRef("identity.launchWebAuthFlow()")}} 関数を提供します。この関数は、必要に応じて、サービスのユーザー認証を行い、また、拡張機能にデータへのアクセスを認可するかどうかをユーザーに確認します。処理が完了すると、プロバイダーによって、アクセストークンか認可コードのどちらかが取得されます。</p>
+
+<p>そして、OAuth2 フローを実施して取得した検証済みアクセストークンを、HTTP リクエスト内で使用することで、拡張機能はユーザーから認可された範囲でデータにアクセスできるようになります。</p>
+
+<p>この API を利用するためには、"identity" <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API のパーミッション</a>が必要です。</p>
+
+<h2 id="Setup" name="Setup">セットアップ</h2>
+
+<p>拡張機能を公開する前に、いくつかの設定が必要です。</p>
+
+<h3 id="Getting_the_redirect_URL" name="Getting_the_redirect_URL">リダイレクトURL を取得する</h3>
+
+<p><a href="https://www.oauth.com/oauth2-servers/redirect-uris/">リダイレクト URL </a>は、アクセストークンまたは認可コードを拡張機能に配布するための {{WebExtAPIRef("identity.launchWebAuthFlow()")}} のエンドポイントを意味します。</p>
+
+<p>{{WebExtAPIRef("identity.getRedirectURL()")}}を呼び出すことでリダイレクトURL を取得できます。この関数は、アドオン ID からリダイレクト URL を生成するため、使用したい場合、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings">browser_specific_settings</a></code> キーを使用してアドオン ID を明示的に設定する必要があるでしょう (設定しない場合、アドオンを<a href="/ja/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">一時的にインストール</a>するたびに、異なるリダイレクト URL を取得することになります)。</p>
+
+<p><code>identity.getRedirectURL()</code> によって返されるリダイレクト URL の利用が必須というわけではありません。独自の URL を指定することもできます。サービスがリダイレクトするものであれば何でもかまいません。ただし、ドメインは自分で管理しているものでなければいけません。</p>
+
+<p>リダイレクト URL は 2 つの場面で利用されます:</p>
+
+<ul>
+ <li>拡張機能を OAuth2 クライアントとして登録するとき</li>
+ <li><code>identity.launchWebAuthFlow()</code> の <code>url</code> 引数に URL パラメーターとして渡すとき</li>
+</ul>
+
+<h3 id="Registering_your_extension" name="Registering_your_extension">拡張機能を登録する</h3>
+
+<p>サービスプロバイダー経由で OAuth2 を使用する前に、プロバイダーに対して、拡張機能を OAuth2 クライアントとして登録する必要があります。</p>
+
+<p>サービスプロバイダーごとにやり方が異なることがありますが、一般的には、プロバイダーの ウェブサイトにおいて、拡張機能を登録することを意味します。この登録手順の中で、自身のリダイレクトURLを登録し、プロバイダーからクライアント ID (場合によっては、シークレットも) を受け取ります。そして、この両方を {{WebExtAPIRef("identity.launchWebAuthFlow()")}} に渡す必要があります。</p>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("identity.getRedirectURL()")}}</dt>
+ <dd>リダイレクト URL を取得します。</dd>
+ <dt>{{WebExtAPIRef("identity.launchWebAuthFlow()")}}</dt>
+ <dd>ウェブ認証フローを開始します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.api.identity")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/identity"><code>chrome.identity</code></a> API に基づいています。</p>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従います。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/idle/index.html b/files/ja/mozilla/add-ons/webextensions/api/idle/index.html
new file mode 100644
index 0000000000..e92112e732
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/idle/index.html
@@ -0,0 +1,88 @@
+---
+title: idle
+slug: Mozilla/Add-ons/WebExtensions/API/idle
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Idle
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/idle
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ユーザーのシステムがアイドル状態、ロックされた状態、アクティブな状態であるのを発見します。</p>
+
+<p>この API を使うには "idle" <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>が必要です。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("idle.IdleState")}}</dt>
+ <dd>
+ <p>端末のアイドル状態を記す文字列</p>
+ </dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("idle.queryState()")}}</dt>
+ <dd>システムがロックされたら <code>"locked"</code> を、ユーザーが指定した時間の間に何も入力しない場合は <code>"idle"</code> を、その他では <code>"active"</code> を返す。</dd>
+ <dt>{{WebExtAPIRef("idle.setDetectionInterval()")}}</dt>
+ <dd>{{WebExtAPIRef("idle.onStateChanged")}} イベントでシステムがアイドル状態であると決定する間隔をセットします。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("idle.onStateChanged")}}</dt>
+ <dd>システム状態が変化したら発火します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.api.idle")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/idle"><code>chrome.idle</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/idle.json"><code>idle.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/index.html b/files/ja/mozilla/add-ons/webextensions/api/index.html
new file mode 100644
index 0000000000..8a375f01eb
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/index.html
@@ -0,0 +1,55 @@
+---
+title: JavaScript API 群
+slug: Mozilla/Add-ons/WebExtensions/API
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API
+---
+<div>{{AddonSidebar}}</div>
+
+<div>
+<p>WebExtension 用の JavaScript API は拡張機能の<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">バックグラウンドスクリプト</a>と、その他の拡張機能にバンドルした文書 (<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Browser_action">ブラウザーアクション</a>や<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Page_actions">ページアクション</a>ポップアップや<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Sidebars">サイドバー</a>や<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Options_pages">オプションページ</a>や<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/chrome_url_overrides">新規タブページ</a>を含む) で使用できます。いくつかの API は拡張機能の<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Content_scripts">コンテンツスクリプト</a>からもアクセスできます (<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Content_scripts#WebExtension_APIs">コンテンツスクリプトガイドの表</a>を見てください)。</p>
+
+<p>もっと強力な API を使うには、拡張機能の <code>manifest.json</code> で<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/permissions">パーミッションをリクエストする</a>必要があります。</p>
+
+<p><code>browser</code> 名前空間内で API にアクセスできます:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">logTabs</span><span class="punctuation token">(</span>tabs<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>tabs<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">query</span><span class="punctuation token">(</span><span class="punctuation token">{</span>currentWindow<span class="punctuation token">:</span> <span class="keyword token">true</span><span class="punctuation token">}</span><span class="punctuation token">,</span> logTabs<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+</div>
+
+<div>
+<p>API の多くは非同期で、 {{JSxRef("Promise")}} を返します:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">logCookie</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">logError</span><span class="punctuation token">(</span>e<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>e<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">let</span> setCookie <span class="operator token">=</span> browser<span class="punctuation token">.</span>cookies<span class="punctuation token">.</span><span class="keyword token">set</span><span class="punctuation token">(</span>
+ <span class="punctuation token">{</span>url<span class="punctuation token">:</span> <span class="string token">"https://developer.mozilla.org/"</span><span class="punctuation token">}</span>
+<span class="punctuation token">)</span><span class="punctuation token">;</span>
+setCookie<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>logCookie<span class="punctuation token">,</span> logError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+</div>
+
+<div>
+<p>これは Google Chrome の拡張機能システムでは違っていて、<code>browser</code> の代わりに <code>chrome</code> 名前空間を使い、promise や非同期関数の代わりにコールバックを使っているのに注意してください。移植の助けとして、WebExtensions API の Firefox 実装は <code>browser</code> と promise と同様に <code>chrome</code> とコールバックもサポートします。Mozilla は <code>browser</code> と promise を使うコードが Chrome で変更なく動作する polyfill も書いています: <a class="external external-icon" href="https://github.com/mozilla/webextension-polyfill">https://github.com/mozilla/webextension-polyfill</a>.</p>
+
+<p>Firefox は <code>chrome</code> 名前空間の下でコールバックを使う API も実装しています。これにより Chrome 向けのコードをここに文書化された API を使って、Firefox で大部分変更なしに実行させることができます。</p>
+
+<p>Microsoft Edge は <code>browser</code> 名前空間を使いますが、promise ベースの非同期 API はサポートされていません。Edge では当面、非同期 API はコールバックを使うのが必須です。</p>
+
+<p>すべてのブラウザーがすべての API をサポートしているわけではありません: 詳しくは<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">  JavaScript API のブラウザーサポート</a>をご覧ください。</p>
+
+<h2 id="JavaScript_API_listing" name="JavaScript_API_listing">JavaScript API 一覧</h2>
+
+<p>下記の JavaScript API の完全な一覧をご覧ください:</p>
+</div>
+
+<div>{{LandingPageListSubpages}}</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/management/index.html b/files/ja/mozilla/add-ons/webextensions/api/management/index.html
new file mode 100644
index 0000000000..06042d1093
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/management/index.html
@@ -0,0 +1,112 @@
+---
+title: management
+slug: Mozilla/Add-ons/WebExtensions/API/management
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Reference
+ - WebExtensions
+ - management
+translation_of: Mozilla/Add-ons/WebExtensions/API/management
+---
+<div>{{AddonSidebar}}</div>
+
+<p>インストール済みのアドオンの管理情報を取得します。</p>
+
+<p><code>management</code> API で次のことができます</p>
+
+<ul>
+ <li>インストール済みのアドオンの管理情報の取得</li>
+ <li>アドオンの有効化・無効化</li>
+ <li>アドオンのアンインストール</li>
+ <li>特定のアドオンやマニフェストのパーミッション警告を調べる</li>
+ <li>アドオンのインストール・有効・無効の状態に関する通知の取得</li>
+</ul>
+
+<p>操作のほとんどは "management" <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/permissions">API パーミッション</a>を要求します。他のアドオンへのアクセスを提供しない操作はこのパーミッションを要求しません。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("management.ExtensionInfo")}}</dt>
+ <dd>インストール済みアドオンの管理情報を持つオブジェクト</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("management.getAll()")}}</dt>
+ <dd>すべてのインストール済みアドオンの管理情報を返します。</dd>
+ <dt>{{WebExtAPIRef("management.get()")}}</dt>
+ <dd>指定した ID のアドオンの管理情報を返します。</dd>
+ <dt>{{WebExtAPIRef("management.getSelf()")}}</dt>
+ <dd>この関数を呼び出したアドオン自身の管理情報を返します。</dd>
+ <dt>{{WebExtAPIRef("management.install()")}}</dt>
+ <dd><a href="https://addons.mozilla.org">addons.mozilla.org</a> で与えられた URL にある、特定のテーマをインストールします。</dd>
+ <dt>{{WebExtAPIRef("management.uninstall()")}}</dt>
+ <dd>指定した ID のアドオンをアンインストールします。</dd>
+ <dt>{{WebExtAPIRef("management.uninstallSelf()")}}</dt>
+ <dd>この関数を呼び出したアドオン自身をアンインストールします。</dd>
+ <dt>{{WebExtAPIRef("management.getPermissionWarningsById()")}}</dt>
+ <dd>指定した ID のアドオンのパーミッション警告一覧を取得します。</dd>
+ <dt>{{WebExtAPIRef("management.getPermissionWarningsByManifest()")}}</dt>
+ <dd>指定したマニフェストストリングに対して表示されるパーミッション警告一覧を取得します。</dd>
+ <dt>{{WebExtAPIRef("management.setEnabled()")}}</dt>
+ <dd>指定した ID のアドオンを有効化・無効化します。</dd>
+ <dt>
+ <h2 id="Events" name="Events">イベント</h2>
+ </dt>
+ <dt>{{WebExtAPIRef("management.onInstalled")}}</dt>
+ <dd>アドオンがインストールされた時に発火します。</dd>
+ <dt>{{WebExtAPIRef("management.onUninstalled")}}</dt>
+ <dd>アドオンがアンインストールされた時に発火します。</dd>
+ <dt>{{WebExtAPIRef("management.onEnabled")}}</dt>
+ <dd>アドオンが有効化された時に発火します。</dd>
+ <dt>{{WebExtAPIRef("management.onDisabled")}}</dt>
+ <dd>アドオンが無効化された時に発火します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.api.management")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a> API に基づいています。この文書は Chromium code の <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> から派生しています。</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2012 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/menus/index.html b/files/ja/mozilla/add-ons/webextensions/api/menus/index.html
new file mode 100644
index 0000000000..5cb7281ea6
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/menus/index.html
@@ -0,0 +1,197 @@
+---
+title: menus
+slug: Mozilla/Add-ons/WebExtensions/API/menus
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - contextMenus
+ - menus
+translation_of: Mozilla/Add-ons/WebExtensions/API/menus
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ブラウザーのメニューシステムに項目を追加します。</p>
+
+<p>この API は、Chromeのエクステンションでコンテキストメニューに項目を追加できる機能である<a href="https://developer.chrome.com/extensions/contextMenus">"contextMenus"</a> APIをモデルにしています。この <code>browser.menus</code> API はChromeのAPIにいくつかの機能を追加しています。</p>
+
+<p>Firefox 55 より前ではこの API は <code>contextMenus</code> という名前でした。その名称は一応エイリアスにしています。そのため <code>contextMenus</code> という名称を使ってFirefoxや他のブラウザでも動くコードを書くことできます。</p>
+
+<p>このAPIを使用するためには <code>menus</code>  <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> 必要です。 <code>menus</code> の代わりにエイリアスの <code>contextMenus</code> を使用することができますが、もし使用するのであれば<code>browser.contextMenus</code> でAPIにアクセスしなければなりません。.</p>
+
+<p>この API は<code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/menus/getTargetElement">menus.getTargetElement()</a></code>以外はコンテンツスクリプトからは使用できません。バックグラウンドページからは使えます。</p>
+
+<h2 id="Creating_menu_items" name="Creating_menu_items">メニューアイテムをつくる</h2>
+
+<p>To create a menu item call the {{WebExtAPIRef("menus.create()")}} method. You pass this method an object containing options for the item, including the item ID, item type, and the contexts in which it should be shown.</p>
+
+<p>Listen for clicks on your menu item by adding a listener to the {{WebExtAPIRef("menus.onClicked")}} event. This listener will be passed a {{WebExtAPIRef("menus.OnClickData")}} object containing the event's details.</p>
+
+<p>You can create four different types of menu item, based on the value of the <code>type</code> property you supply in the options to <code>create()</code>:</p>
+
+<ul>
+ <li>"normal": a menu item that just displays a label</li>
+ <li>"checkbox": a menu item that represents a binary state. It displays a checkmark next to the label. Clicking the item toggles the checkmark. The click listener will be passed two extra properties: "checked", indicating whether the item is checked now, and "wasChecked", indicating whether the item was checked before the click event.</li>
+ <li>"radio": a menu item that represents one of a group of choices. Just like a checkbox, this also displays a checkmark next to the label, and its click listener is passed "checked" and "wasChecked". However, if you create more than one radio item, then the items function as a group of radio items: only one item in the group can be checked, and clicking an item makes it the checked item.</li>
+ <li>"separator": a line separating a group of items.</li>
+</ul>
+
+<p>If you have created more than one context menu item or more than one tools menu item, then the items will be placed in a submenu. The submenu's parent will be labeled with the name of the extension. For example, here's an extension called "Menu demo" that's added two context menu items:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15431/menus-1.png" style="display: block; height: 406px; margin-left: auto; margin-right: auto; width: 500px;"></p>
+
+<h2 id="Icons" name="Icons">アイコン</h2>
+
+<p>If you've specified icons for your extension using the <a href="/ja/Add-ons/WebExtensions/manifest.json/icons">"icons" manifest key</a>, your menu item will display the specified icon next to its label. The browser will try to choose a 16x16 pixel icon for a normal display or a 32x32 pixel icon for a high-density display:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15433/menus-2.png" style="display: block; height: 409px; margin-left: auto; margin-right: auto; width: 500px;"></p>
+
+<p>Only for items in a submenu, you can specify custom icons by passing the <code>icons</code> option to {{WebExtAPIRef("menus.create()")}}:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15435/menus-3.png" style="display: block; height: 396px; margin-left: auto; margin-right: auto; width: 500px;"></p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<p>Here's a context menu containing 4 items: a normal item, two radio items with separators on each side, and a checkbox. The radio items are given custom icons.</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15437/menus-4.png" style="display: block; height: 790px; margin-left: auto; margin-right: auto; width: 500px;">You could create a submenu like this using code like:</p>
+
+<pre class="brush: js">browser.menus.create({
+ id: "remove-me",
+ title: browser.i18n.getMessage("menuItemRemoveMe"),
+ contexts: ["all"]
+}, onCreated);
+
+browser.menus.create({
+ id: "separator-1",
+ type: "separator",
+ contexts: ["all"]
+}, onCreated);
+
+browser.menus.create({
+ id: "greenify",
+ type: "radio",
+ title: browser.i18n.getMessage("menuItemGreenify"),
+ contexts: ["all"],
+ checked: true,
+ icons: {
+ "16": "icons/paint-green-16.png",
+ "32": "icons/paint-green-32.png"
+ }
+}, onCreated);
+
+browser.menus.create({
+ id: "bluify",
+ type: "radio",
+ title: browser.i18n.getMessage("menuItemBluify"),
+ contexts: ["all"],
+ checked: false,
+ icons: {
+ "16": "icons/paint-blue-16.png",
+ "32": "icons/paint-blue-32.png"
+ }
+}, onCreated);
+
+browser.menus.create({
+ id: "separator-2",
+ type: "separator",
+ contexts: ["all"]
+}, onCreated);
+
+var checkedState = true;
+
+browser.menus.create({
+ id: "check-uncheck",
+ type: "checkbox",
+ title: browser.i18n.getMessage("menuItemUncheckMe"),
+ contexts: ["all"],
+ checked: checkedState
+}, onCreated);</pre>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("menus.ContextType")}}</dt>
+ <dd>The different contexts a menu can appear in.</dd>
+ <dt>{{WebExtAPIRef("menus.ItemType")}}</dt>
+ <dd>The type of menu item: "normal", "checkbox", "radio", "separator".</dd>
+ <dt>{{WebExtAPIRef("menus.OnClickData")}}</dt>
+ <dd>Information sent when a menu item is clicked.</dd>
+</dl>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("menus.ACTION_MENU_TOP_LEVEL_LIMIT")}}</dt>
+ <dd>The maximum number of top level extension items that can be added to a menu item whose ContextType is "browser_action" or "page_action".</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("menus.create()")}}</dt>
+ <dd>新しいメニューアイテムをつくります。</dd>
+ <dt>{{WebExtAPIRef("menus.update()")}}</dt>
+ <dd>以前に作られたメニューアイテムを更新します。</dd>
+ <dt>{{WebExtAPIRef("menus.remove()")}}</dt>
+ <dd>メニューアイテムを削除します。</dd>
+ <dt>{{WebExtAPIRef("menus.removeAll()")}}</dt>
+ <dd>この拡張機能によって追加されたすべてのメニューアイテムを削除します。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("menus.onClicked")}}</dt>
+ <dd>メニューアイテムがクリックされたときに発火。</dd>
+ <dt>{{WebExtAPIRef("menus.onHidden")}}</dt>
+ <dd>ブラウザがメニューを隠したときに発火。</dd>
+ <dt>{{WebExtAPIRef("menus.onShown")}}</dt>
+ <dd>ブラウザがメニューを見せたときに発火。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{ Compat("webextensions.api.menus", 1, "true") }}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/contextMenus"><code>chrome.contextMenus</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> in the Chromium code.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/menus/onclicked/index.html b/files/ja/mozilla/add-ons/webextensions/api/menus/onclicked/index.html
new file mode 100644
index 0000000000..3e3fdff8eb
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/menus/onclicked/index.html
@@ -0,0 +1,108 @@
+---
+title: menus.onClicked
+slug: Mozilla/Add-ons/WebExtensions/API/menus/onClicked
+translation_of: Mozilla/Add-ons/WebExtensions/API/menus/onClicked
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>メニューアイテムがクリックされたときに発火します。</p>
+
+<p>他のブラウザとの互換性のためにFirefoxはこのイベントを名前空間<code>contextMenus</code>と<code>menu</code>を経由して利用可能にしています。</p>
+
+<h2 id="書式">書式</h2>
+
+<pre class="syntaxbox brush:js">browser.menus.onClicked.addListener(listener)
+browser.menus.onClicked.removeListener(listener)
+browser.menus.onClicked.hasListener(listener)
+</pre>
+
+<p>イベントは3つの関数を持ちます:</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>このイベントのリスナーを追加します。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>リスニングを停止します。引数<code>listener</code>は削除するリスナーです。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code>が登録されているかどうかを調べます。<code>true</code>が返ればリスニング中、そうでなければ<code>false</code>が返ります。</dd>
+</dl>
+
+<h2 id="addListenerの書式">addListenerの書式</h2>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>イベントが起こったときに呼ばれる関数です。以下の引数を渡されます:</p>
+
+ <dl class="reference-values">
+ <dt><code>info</code></dt>
+ <dd>{{WebExtAPIRef('menus.OnClickData')}}. Information about the item clicked and the context where the click happened.</dd>
+ </dl>
+
+ <dl class="reference-values">
+ <dt><code>tab</code></dt>
+ <dd>{{WebExtAPIRef('tabs.Tab')}}. The details of the tab where the click took place. If the click did not take place in or on a tab, this parameter will be missing.</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.menus.onClicked", 10)}}</p>
+
+<h2 id="例">例</h2>
+
+<p>この例はメニューアイテムのクリックをリッスンし、アイテムのIDとタブのIDをログします:</p>
+
+<pre class="brush: js">browser.menus.create({
+ id: "click-me",
+ title: "Click me!",
+ contexts: ["all"]
+});
+
+browser.menus.onClicked.addListener((info, tab) =&gt; {
+ console.log("Item " + info.menuItemId + " clicked " +
+ "in tab " + tab.id);
+});</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/contextMenus#event-onClicked"><code>chrome.contextMenus</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> in the Chromium code.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/notifications/create/index.html b/files/ja/mozilla/add-ons/webextensions/api/notifications/create/index.html
new file mode 100644
index 0000000000..32a0986940
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/notifications/create/index.html
@@ -0,0 +1,139 @@
+---
+title: notifications.create()
+slug: Mozilla/Add-ons/WebExtensions/API/notifications/create
+translation_of: Mozilla/Add-ons/WebExtensions/API/notifications/create
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>通知を生成、表示します。</p>
+
+<p>Pass a {{WebExtAPIRef("notifications.NotificationOptions")}} to define the notification's content and behavior.</p>
+
+<p>You can optionally provide an ID for the notification. If you omit the ID, an ID will be generated. You can use the ID to {{WebExtAPIRef("notifications.update()", "update")}} or {{WebExtAPIRef("notifications.clear()", "clear")}} the notification.</p>
+
+<p>This is an asynchronous function that returns a <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>.</p>
+
+<div class="warning">
+<p>If you call <code>notifications.create()</code> more than once in rapid succession, Firefox may end up not displaying any notification at all.</p>
+</div>
+
+<h2 id="書式">書式</h2>
+
+<pre class="syntaxbox brush:js">var creating = browser.notifications.create(
+ id, // optional string
+ options // NotificationOptions
+)
+</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>id</code>{{optional_inline}}</dt>
+ <dd><code>string</code>. This is used to refer to this notification in {{WebExtAPIRef("notifications.update()")}}, {{WebExtAPIRef("notifications.clear()")}}, and event listeners. If you omit this argument or pass an empty string, then a new ID will be generated for this notification. If the ID you provide matches the ID of an existing notification from this extension, then the other notification will be cleared.</dd>
+ <dt><code>options</code></dt>
+ <dd>{{WebExtAPIRef('notifications.NotificationOptions')}}. Defines the notification's content and behavior.</dd>
+</dl>
+
+<h3 id="返り値">返り値</h3>
+
+<p>A <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> that will be fulfilled when the notification is created and the display process has been started, which is before the notification is actually displayed to the user. It is fulfilled with a string representing the notification's ID.</p>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.notifications.create")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>Create and display a basic notification periodically, using an {{WebExtAPIRef("alarms", "alarm")}}. Clicking the browser action dismisses the notification.</p>
+
+<p>Note that you'll need the "alarms" <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> to create alarms (as well as the "notifications" permission to create notifications).</p>
+
+<pre class="brush: js">var cakeNotification = "cake-notification"
+
+/*
+
+CAKE_INTERVAL is set to 6 seconds in this example.
+Such a short period is chosen to make the extension's behavior
+more obvious, but this is not recommended in real life.
+Note that in Chrome, alarms cannot be set for less
+than a minute.
+
+*/
+var CAKE_INTERVAL = 0.1;
+
+browser.alarms.create("", {periodInMinutes: CAKE_INTERVAL});
+
+browser.alarms.onAlarm.addListener(function(alarm) {
+ browser.notifications.create(cakeNotification, {
+ "type": "basic",
+ "iconUrl": browser.extension.getURL("icons/cake-96.png"),
+ "title": "Time for cake!",
+ "message": "Something something cake"
+ });
+});
+
+browser.browserAction.onClicked.addListener(()=&gt; {
+ var clearing = browser.notifications.clear(cakeNotification);
+ clearing.then(() =&gt; {
+ console.log("cleared");
+ });
+});</pre>
+
+<p>Display a similar notification, but add buttons naming cakes, and log the selected cake when a button is clicked:</p>
+
+<pre class="brush: js">var cakeNotification = "cake-notification"
+
+/*
+
+CAKE_INTERVAL is set to 6 seconds in this example.
+Such a short period is chosen to make the extension's behavior
+more obvious, but this is not recommended in real life.
+Note that in Chrome, alarms cannot be set for less
+than a minute.
+
+*/
+var CAKE_INTERVAL = 0.1;
+
+var buttons = [
+ {
+ "title": "Chocolate"
+ }, {
+ "title": "Battenberg"
+ }
+];
+
+browser.alarms.create("", {periodInMinutes: CAKE_INTERVAL});
+
+browser.alarms.onAlarm.addListener(function(alarm) {
+ browser.notifications.create(cakeNotification, {
+ "type": "basic",
+ "iconUrl": browser.extension.getURL("icons/cake-96.png"),
+ "title": "Time for cake!",
+ "message": "Something something cake",
+ "buttons": buttons
+ });
+});
+
+browser.browserAction.onClicked.addListener(()=&gt; {
+ var clearing = browser.notifications.clear(cakeNotification);
+ clearing.then(() =&gt; {
+ console.log("cleared");
+ });
+});
+
+browser.notifications.onButtonClicked.addListener((id, index) =&gt; {
+ browser.notifications.clear(id);
+ console.log("You chose: " + buttons[index].title);
+});
+</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/notifications#method-create"><code>chrome.notifications</code></a> API.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/notifications/index.html b/files/ja/mozilla/add-ons/webextensions/api/notifications/index.html
new file mode 100644
index 0000000000..16b2c2c8fa
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/notifications/index.html
@@ -0,0 +1,66 @@
+---
+title: notifications
+slug: Mozilla/Add-ons/WebExtensions/API/notifications
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Notifications
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/notifications
+---
+<div>{{AddonSidebar}}</div>
+
+<p>OS の通知メカニズムを使って、ユーザーへの通知を表示します。この API は OS の通知メカニズムを使うため、OS とユーザー設定によって通知の現れ方やふるまいは変わってきます。</p>
+
+<p>この API を使うには "notifications" <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>が必要です。</p>
+
+<p>すべてのデスクトップOSで通知は同じ見た目です。次のようなものです:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/16856/notification.png" style="display: block; margin: 0 auto;"></p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("notifications.NotificationOptions")}}</dt>
+ <dd>通知の中身を定義します。</dd>
+ <dt>{{WebExtAPIRef("notifications.TemplateType")}}</dt>
+ <dd>通知の種類。例えば、通知に画像を含められるかなどを定義します。</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("notifications.clear()")}}</dt>
+ <dd>IDに基づいた特定の通知をクリアします。</dd>
+ <dt>{{WebExtAPIRef("notifications.create()")}}</dt>
+ <dd>新規の通知を作成、表示します。</dd>
+ <dt>{{WebExtAPIRef("notifications.getAll()")}}</dt>
+ <dd>すべての通知を取得します。</dd>
+ <dt>{{WebExtAPIRef("notifications.update()")}}</dt>
+ <dd>通知を更新します。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("notifications.onButtonClicked")}}</dt>
+ <dd>ユーザーが通知内のボタンをクリックしたときに発火します。</dd>
+ <dt>{{WebExtAPIRef("notifications.onClicked")}}</dt>
+ <dd>ユーザーが通知内のボタン以外をクリックしたときに発火します。</dd>
+ <dt>{{WebExtAPIRef("notifications.onClosed")}}</dt>
+ <dd>通知が閉じたとき、システムかユーザーいずれかがやめた場合にも、発火します。</dd>
+ <dt>{{WebExtAPIRef("notifications.onShown")}}</dt>
+ <dd>通知が表示されるとすぐに発火します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.api.notifications")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a> API.</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/omnibox/index.html b/files/ja/mozilla/add-ons/webextensions/api/omnibox/index.html
new file mode 100644
index 0000000000..47218f7f51
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/omnibox/index.html
@@ -0,0 +1,70 @@
+---
+title: omnibox
+slug: Mozilla/Add-ons/WebExtensions/API/omnibox
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Reference
+ - WebExtensions
+ - omnibox
+translation_of: Mozilla/Add-ons/WebExtensions/API/omnibox
+---
+<div>{{AddonSidebar}}</div>
+
+<p>拡張機能に、ユーザーがアドレスバーに入力した時のカスタマイズされた振る舞いを有効にします。</p>
+
+<p>ユーザーがブラウザーのアドレスバーにフォーカスした時、ブラウザーは、タイプした内容に応じたサジェストページを含んだドロップダウンリストを表示します。これはユーザーにとって、例えば履歴やブックマークからのページにすぐにアクセスできる方法を与えます。</p>
+
+<p>omnibox API は、ユーザーが拡張機能で定義されたキーワードを入力した時に、ドロップダウンに表示されるサジェストを拡張機能がカスタマイズする方法を提供します。これは下記のように動作します:</p>
+
+<ol>
+ <li>まず、拡張機能は <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> ファイルに "<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/omnibox">omnibox</a>" キーを入れないといけません、ここでキーワードを定義します。</li>
+ <li>ユーザーがアドレスバーにフォーカスしてキーワードに続いてスペースをタイプした時、拡張機能は {{WebExtAPIRef("omnibox.onInputStarted")}} イベントを受け取ります。</li>
+ <li>オプションとして、拡張機能は {{WebExtAPIRef("omnibox.setDefaultSuggestion()")}} を呼んでアドレスバーのドロップダウンに最初に表示されるサジェストを定義します。</li>
+ <li>ユーザーがこの後にも文字をタイプし続けると、拡張機能は {{WebExtAPIRef("omnibox.onInputChanged")}} イベントを受け取ります。イベントリスナーはユーザーがタイプした現在の値を受けて、アドレスバーのドロップダウンにサジェストを生成できます。拡張機能が {{WebExtAPIRef("omnibox.setDefaultSuggestion()")}} を使ったデフォルトのサジェストをセットした場合、これがドロップダウンの最初に出てきます。</li>
+ <li>ユーザーがサジェストを受け入れたら、拡張機能は {{WebExtAPIRef("omnibox.onInputEntered")}} イベントを受け取ります。イベントリスナーは受け入れられたサジェストを受け取ります。</li>
+ <li>ユーザーがドロップダウンを止めたら、拡張機能は {{WebExtAPIRef("omnibox.onInputCancelled")}} イベントを受け取ります。</li>
+</ol>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("omnibox.OnInputEnteredDisposition")}}</dt>
+ <dd>Describes the recommended method to handle the selected suggestion: open in the current tab, open in a new foreground tab, or open in a new background tab.</dd>
+ <dt>{{WebExtAPIRef("omnibox.SuggestResult")}}</dt>
+ <dd>Object representing a suggestion to add to the address bar drop-down.</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("omnibox.setDefaultSuggestion()")}}</dt>
+ <dd>Defines the first suggestion that appears in the drop-down when the user enters the keyword for your extension, followed by a space.</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("omnibox.onInputStarted")}}</dt>
+ <dd>Fired when a the user focuses the address bar and types your extension's omnibox keyword, followed by a space.</dd>
+ <dt>{{WebExtAPIRef("omnibox.onInputChanged")}}</dt>
+ <dd>Fired whenever the user's input changes, after they have focused the address bar and typed your extension's omnibox keyword, followed by a space.</dd>
+ <dt>{{WebExtAPIRef("omnibox.onInputEntered")}}</dt>
+ <dd>Fired when the user accepts one of your extension's suggestions.</dd>
+ <dt>{{WebExtAPIRef("omnibox.onInputCancelled")}}</dt>
+ <dd>Fired when the user dismisses the address bar drop-down, after they have focused the address bar and typed your extension's omnibox keyword.</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.omnibox")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/omnibox"><code>chrome.omnibox</code></a> API.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/pageaction/index.html b/files/ja/mozilla/add-ons/webextensions/api/pageaction/index.html
new file mode 100644
index 0000000000..9aa608ef46
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/pageaction/index.html
@@ -0,0 +1,106 @@
+---
+title: pageAction
+slug: Mozilla/Add-ons/WebExtensions/API/pageAction
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - pageAction
+translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction
+---
+<div>{{AddonSidebar}}</div>
+
+<p><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Page_actions">ページアクション</a> は、ブラウザーのアドレスバーの中のクリックできるアイコンです。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/12960/page-action.png" style="display: block; height: 262px; margin-left: auto; margin-right: auto; width: 850px;"></p>
+
+<p>You can listen for clicks on the icon, or specify a <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Popups">popup</a> that will open when the icon is clicked.</p>
+
+<p>If you specify a popup, you can define its contents and behavior using HTML, CSS, and JavaScript, just like a normal web page. JavaScript running in the popup gets access to all the same WebExtension APIs as your background scripts.</p>
+
+<p>You can define most of a page action's properties declaratively using the <a href="/ja/Add-ons/WebExtensions/manifest.json/page_action">page_action key</a> in your <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a>, but can also redefine them programmatically using this API.</p>
+
+<p>Page actions are for actions that are only relevant to particular pages. If your icon should always be available, use a <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_action">browser action</a> instead.</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("pageAction.ImageDataType")}}</dt>
+ <dd>Pixel data for an image.</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("pageAction.show()")}}</dt>
+ <dd>Shows the page action for a given tab.</dd>
+ <dt>{{WebExtAPIRef("pageAction.hide()")}}</dt>
+ <dd>Hides the page action for a given tab.</dd>
+ <dt>{{WebExtAPIRef("pageAction.setTitle()")}}</dt>
+ <dd>Sets the page action's title. This is displayed in a tooltip over the page action.</dd>
+ <dt>{{WebExtAPIRef("pageAction.getTitle()")}}</dt>
+ <dd>Gets the page action's title.</dd>
+ <dt>{{WebExtAPIRef("pageAction.setIcon()")}}</dt>
+ <dd>Sets the page action's icon.</dd>
+ <dt>{{WebExtAPIRef("pageAction.setPopup()")}}</dt>
+ <dd>Sets the URL for the page action's popup.</dd>
+ <dt>{{WebExtAPIRef("pageAction.getPopup()")}}</dt>
+ <dd>Gets the URL for the page action's popup.</dd>
+ <dt>{{WebExtAPIRef("pageAction.openPopup()")}}</dt>
+ <dd>Opens the page action's popup.</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("pageAction.onClicked")}}</dt>
+ <dd>Fired when a page action icon is clicked. This event will not fire if the page action has a popup.</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.pageAction")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/pageAction"><code>chrome.pageAction</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.html b/files/ja/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.html
new file mode 100644
index 0000000000..aa25bd76aa
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.html
@@ -0,0 +1,104 @@
+---
+title: pageAction.onClicked
+slug: Mozilla/Add-ons/WebExtensions/API/pageAction/onClicked
+translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/onClicked
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>ページアクションのアイコンがクリックされたときに発火します。ページアクションがポップアップを持っているならこのイベントは発火しません。</p>
+
+<p>右クリックのアクションを定義するには、{{WebExtAPIRef('contextMenus')}} APIを"page_action" {{WebExtAPIRef('contextMenus/ContextType', 'context type', '', 'nocode')}}とともに使ってください。</p>
+
+<h2 id="書式">書式</h2>
+
+<pre class="syntaxbox brush:js">browser.pageAction.onClicked.addListener(listener)
+browser.pageAction.onClicked.removeListener(listener)
+browser.pageAction.onClicked.hasListener(listener)
+</pre>
+
+<p>イベントは3つの関数を持ちます:</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>このイベントにリスナーを追加します。Adds a listener to this event.</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>このイベントのリスニングを停止します。引数<code>listener</code>は削除するリスナーです。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code>がイベントに登録されているかを調べます。リスニング中であれば<code>true</code>を、そうれなければ<code>false</code>を返します。</dd>
+</dl>
+
+<h2 id="addListenerの書式">addListenerの書式</h2>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>イベント発生時に呼び出される関数です。関数は次の引数を渡されます:</p>
+
+ <dl class="reference-values">
+ <dt><code>tab</code></dt>
+ <dd>ページアクションがクリックされたタブの{{WebExtAPIRef('tabs.Tab')}}オブジェクト。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.pageAction.onClicked")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>ユーザがページアクションをクリックしたとき、それを隠し、アクティブタブを"<a href="http://chilloutandwatchsomecatgifs.com/">http://chilloutandwatchsomecatgifs.com/</a>"に誘導します:</p>
+
+<pre class="brush: js">var CATGIFS = "http://chilloutandwatchsomecatgifs.com/";
+
+browser.pageAction.onClicked.addListener((tab) =&gt; {
+ browser.pageAction.hide(tab.id);
+ browser.tabs.update({url: CATGIFS});
+});
+
+browser.pageAction.onClicked.addListener(function () {
+});</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/pageAction#event-onClicked"><code>chrome.pageAction</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/permissions/index.html b/files/ja/mozilla/add-ons/webextensions/api/permissions/index.html
new file mode 100644
index 0000000000..852809a01b
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/permissions/index.html
@@ -0,0 +1,89 @@
+---
+title: permissions
+slug: Mozilla/Add-ons/WebExtensions/API/permissions
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Permissions
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/permissions
+---
+<div>{{AddonSidebar}}</div>
+
+<div>拡張機能のインストール後、実行時に特別なパーミッションの要求を可能にする。</div>
+
+<div></div>
+
+<p>拡張機能は強力な WebExtension API の多くにアクセスするパーミッション(アクセス権)を必要とします。manifest.json の <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> に必要なパーミッション記述することで、インストール時にユーザーに対しパーミッションを要求できます。インストール時にパーミッションを要求する主なメリットは次の通りです:</p>
+
+<ul>
+ <li>ユーザーは一度のみアクセス権を要求されます。したがって、混乱しにくくシンプルに決断を下すことができます。</li>
+ <li>拡張機能は必要な時のみAPIに頼ることが可能です。すでに動作していれば、アクセス権は付与されていることになります。</li>
+</ul>
+
+<p>インストールした拡張機能のアクセス権の認証の見た目は、ユーザーにとってシンプルなGUIとは言えません。ユーザーは about:debuggingのページを使用して、"このFirefox"ボタンから"拡張機能"のセクションに行き、参照するアドオンの"マニフェスト URL"のリンクを使用しなければなりません。 このURLは拡張機能で使用されている生のjsonファイルへのリンクです。拡張機能のjsonファイルは"permissions"ブロックを含み、これを確認することによってアドオンが使用しているアクセス権を確認することができます。</p>
+
+<p>拡張機能は実行時に、permissions APIによって追加のパーミッションを求めることができます.These permissions need to be listed in the <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></code> manifest.json key. Note that some permissions are not allowed in <code>optional_permissions</code>. The main advantages of this are:</p>
+
+<ul>
+ <li>the extension can run with a smaller set of permissions except when it actually needs them</li>
+ <li>the extension can handle permission denial in a graceful manner instead of presenting the user with a global "all or nothing" choice at install time. You can still get a lot out of that map extension without giving it access to your location, for example.</li>
+ <li>
+ <p>the extension may need <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">host permissions</a>, but not know at install time exactly which host permissions it needs. For example, the list of hosts may be a user setting. In this scenario, asking for a more specific range of hosts at runtime can be an alternative to asking for "&lt;all_urls&gt;" at install time.</p>
+ </li>
+</ul>
+
+<div>To use the permissions API, decide which permissions your extension can request at runtime, and list them in <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></code>. After this, you can request any permissions that were included in <code>optional_permissions</code>. Requests may only be made in the handler for a user action (for example, a click handler).</div>
+
+<div></div>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("permissions.Permissions")}}</dt>
+ <dd>Represents a set of permissions.</dd>
+</dl>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("permissions.contains()")}}</dt>
+ <dd>Find out whether the extension has the given set of permissions.</dd>
+ <dt>{{WebExtAPIRef("permissions.getAll()")}}</dt>
+ <dd>Get all the permissions this extension currently has.</dd>
+ <dt>{{WebExtAPIRef("permissions.remove()")}}</dt>
+ <dd>Give up a set of permissions.</dd>
+ <dt>{{WebExtAPIRef("permissions.request()")}}</dt>
+ <dd>Ask for a set of permissions.</dd>
+</dl>
+
+<h2 id="Event_handlers" name="Event_handlers">Event handlers</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("permissions.onAdded")}}</dt>
+ <dd>Fired when a new permission is granted.</dd>
+ <dt>{{WebExtAPIRef("permissions.onRemoved")}}</dt>
+ <dd>Fired when a permission is removed.</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.permissions")}}</p>
+
+<h2 id="その他">その他</h2>
+
+<ul>
+ <li><code>manifest.json</code> <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> property</li>
+ <li><code>manifest.json</code> <code><a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></code> property</li>
+</ul>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/permissions"><code>chrome.permissions</code></a> API.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/pkcs11/index.html b/files/ja/mozilla/add-ons/webextensions/api/pkcs11/index.html
new file mode 100644
index 0000000000..902ae2b460
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/pkcs11/index.html
@@ -0,0 +1,40 @@
+---
+title: pkcs11
+slug: Mozilla/Add-ons/WebExtensions/API/pkcs11
+translation_of: Mozilla/Add-ons/WebExtensions/API/pkcs11
+---
+<div>{{AddonSidebar}}</div>
+
+<p><code>pkcs11</code> API は拡張機能にセキュリティモジュール <a href="https://en.wikipedia.org/wiki/PKCS_11">PKCS #11</a> の列挙を可能とし、キーの元と証明書としてブラウザーからアクセスできるようにします。</p>
+
+<p>このAPI を使うには "pkcs11" <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>が必要です。</p>
+
+<h2 id="Provisioning_PKCS_11_modules" name="Provisioning_PKCS_11_modules">Provisioning PKCS #11 modules</h2>
+
+<p>There are two environmental prerequisites for using this API:</p>
+
+<ul>
+ <li>one or more PKCS #11 modules must be installed on the user's computer</li>
+ <li>for each installed PKCS #11 module, there must be a <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Native_manifests">native manifest</a> file that enables the browser to locate the module.</li>
+</ul>
+
+<p>Most probably, the user or device administrator would install the PKCS #11 module, and its installer would install the native manifest file at the same time. Note, though, that the module and manifest can't be installed as part of the extension's own installation process.</p>
+
+<p>For details about the manifest file's contents and location, see <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Native_manifests">Native manifests</a>.</p>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("pkcs11.getModuleSlots()")}}</dt>
+ <dd>For each slot in a module, get its name and whether it contains a token.</dd>
+ <dt>{{WebExtAPIRef("pkcs11.installModule()")}}</dt>
+ <dd>Installs the named PKCS #11 module.</dd>
+ <dt>{{WebExtAPIRef("pkcs11.isModuleInstalled()")}}</dt>
+ <dd>Checks whether the named PKCS #11 module is installed.</dd>
+ <dt>{{WebExtAPIRef("pkcs11.uninstallModule()")}}</dt>
+ <dd>Uninstalls the named PKCS #11 module.</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.pkcs11", 1, 1)}} {{WebExtExamples("h2")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/privacy/index.html b/files/ja/mozilla/add-ons/webextensions/api/privacy/index.html
new file mode 100644
index 0000000000..18b5ed50b5
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/privacy/index.html
@@ -0,0 +1,70 @@
+---
+title: privacy
+slug: Mozilla/Add-ons/WebExtensions/API/privacy
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Privacy
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/privacy
+---
+<div>{{AddonSidebar}}</div>
+
+<p>さまざまなプライバシー関連のブラウザー設定にアクセスや変更を行います。</p>
+
+<p>privacy API を使うには、"privacy" <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API パーミッション</a>が必要です。</p>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("privacy.network")}}</dt>
+ <dd>ネットワーク関連のプライバシー設定にアクセス、編集します。</dd>
+ <dt>{{WebExtAPIRef("privacy.services")}}</dt>
+ <dd>ブラウザーやサードパーティのプライバシー設定にアクセス、編集します。</dd>
+ <dt>{{WebExtAPIRef("privacy.websites")}}</dt>
+ <dd>ウェブサイトのふるまいに関連したプライバシー設定にアクセス、編集します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.privacy", 10, 1)}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/privacy"><code>chrome.privacy</code></a> API.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/proxy/index.html b/files/ja/mozilla/add-ons/webextensions/api/proxy/index.html
new file mode 100644
index 0000000000..8b76402361
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/proxy/index.html
@@ -0,0 +1,150 @@
+---
+title: proxy
+slug: Mozilla/Add-ons/WebExtensions/API/proxy
+tags:
+ - API
+ - Add-ons
+ - Proxy
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/proxy
+---
+<div>{{AddonSidebar}}</div>
+
+<p>拡張された <a href="/ja/Add-ons/WebExtensions/API/proxy#PAC_file_specification">Proxy Auto-Configuration (PAC) file</a> (これはウェブのリクエストをプロキシ化するポリシーを実装します) を実装するのにプロキシ API を使います。この実装は標準の PAC 設計といくつかそれていて、なぜなら PAC ファイルのデファクト仕様は 1995年頃の初期実装から変えられてないためです。仕様を維持している標準化団体はありません。</p>
+
+<p>Google Chrome では<a href="https://developer.chrome.com/extensions/proxy"> 同じく"proxy"という拡張機能API</a> が提供されていて、その機能はこの API と似ていて、拡張機能はプロキシポリシーを使うことができます。しかし、Chrome API の設計はこの API とまったく違います。Chrome の API では拡張機能は PAC ファイルを定義できて、明示的なプロキシルールも定義できます。このため拡張機能 PAC ファイルも使用できて、この API は PAC ファイルアプローチのみをサポートします。この API は Chrome <code>proxy</code> API と互換性がないため、この API は <code>browser</code> 名前空間のみで利用できます。</p>
+
+<p>この API を使うには、"proxy" <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>が必要です。</p>
+
+<h2 id="Communicating_with_PAC_files" name="Communicating_with_PAC_files">PAC ファイルと通信する</h2>
+
+<p>PAC ファイルと拡張機能のバックグラウンドページ(やその他の権限つきページ、ポップアップページのようなもの)とでメッセージを交換できて、その手段は <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage">runtime.sendMessage()</a></code> と <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage">runtime.onMessage</a></code>。</p>
+
+<p>PAC ファイルにメッセージを送るには、<code>toProxyScript</code> オプションをセットしなければなりません:</p>
+
+<pre class="brush: js">// background.js
+
+// Log any messages from the proxy.
+browser.runtime.onMessage.addListener((message, sender) =&gt; {
+  if (sender.url === browser.extension.getURL(proxyScriptURL)) {
+    console.log(message);
+  }
+});
+
+let messageToProxy = {
+ enabled: true,
+ foo: "A string",
+ bar: 1234
+};
+
+browser.runtime.sendMessage(messageToProxy, {toProxyScript: true});</pre>
+
+<pre class="brush: js">// pac.js
+
+browser.runtime.onMessage.addListener((message) =&gt; {
+ if (message.enabled) {
+ browser.runtime.sendMessage("I'm enabled!");
+ }
+});</pre>
+
+<h2 id="PAC_file_specification" name="PAC_file_specification">PAC ファイル仕様</h2>
+
+<p>The basic PAC file syntax is described in the <a href="/ja/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file">PAC documentation</a>, but the implementation used by the proxy API differs from standard PAC design in several ways, which are described in this section.</p>
+
+<h3 id="FindProxyForURL()_return_value" name="FindProxyForURL()_return_value">FindProxyForURL() return value</h3>
+
+<p>The standard <code>FindProxyForURL()</code> <a href="https://developer.mozilla.org/ja/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_%28PAC%29_file#Return_value_format">returns a string</a>. In Firefox 55 and 56, the PAC file used with the proxy API also returns a string. In Firefox 55 <em>only</em>, you must pass an argument to the "DIRECT" return value, even though it doesn't need an argument.</p>
+
+<p>From Firefox 57 onwards, <code>FindProxyForURL()</code> may still return a string, but may alternatively (and preferably) return an array of objects. Each object has the following properties:</p>
+
+<dl>
+ <dt><code>type</code></dt>
+ <dd>String. This must be one of: "http"|"https|"socks4"|"socks"|"direct". "socks" refers to the SOCKS5 protocol.</dd>
+ <dt><code>host</code></dt>
+ <dd>String. Hostname for the proxy to use.</dd>
+ <dt><code>port</code></dt>
+ <dd>String. Port for the proxy.</dd>
+ <dt><code>username</code> {{optional_inline}}</dt>
+ <dd>String. Username for the proxy. This is usable with "socks". For HTTP proxy authorizations, use {{WebExtAPIRef("webRequest.onAuthRequired")}}.</dd>
+ <dt><code>password</code> {{optional_inline}}</dt>
+ <dd>String. Password for the proxy. This is usable with "socks". For HTTP proxy authorizations, use {{WebExtAPIRef("webRequest.onAuthRequired")}}.</dd>
+ <dt><code>proxyDNS</code> {{optional_inline}}</dt>
+ <dd>Boolean. If true, the proxy server is used to resolve certain DNS queries (only usable with "socks4" and "socks"). Defaults to <code>false</code>.</dd>
+ <dt><code>failoverTimeout</code> {{optional_inline}}</dt>
+ <dd>Integer. Number of seconds before timing out and trying the next proxy in the array. Defaults to 1.</dd>
+</dl>
+
+<p>例えば、:</p>
+
+<pre class="brush: js" id="ct-0">const proxySpecification = [
+ {
+ type: "socks",
+ host: "foo.com",
+ port: 1080,
+ proxyDNS: true,
+ failoverTimeout: 5
+ },
+ {
+ type: "socks",
+ host: "bar.com",
+ port: 1060,
+ }
+];</pre>
+
+<p>The first proxy in the array will be tried first. If it does not respond in <code>failoverTimeout</code> seconds, the next will be tried, until the end of the array is reached.</p>
+
+<h3 id="PAC_file_environment" name="PAC_file_environment">PAC ファイル環境</h3>
+
+<p>The global helper functions usually available for PAC files (<code><a href="/ja/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file#isPlainHostName()_2">isPlainHostName()</a></code>, <code><a href="/ja/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file#dnsDomainIs()">dnsDomainIs()</a></code>, and so on) are not available.</p>
+
+<p>Code running in the PAC file does not get access to:</p>
+
+<ul>
+ <li>any DOM functions (例えば、 <a href="/ja/docs/Web/API/Window">window</a> or any of its properties)</li>
+ <li>any WebExtension APIs except <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage">runtime.sendMessage()</a></code> and <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage">runtime.onMessage</a></code></li>
+ <li>the <a href="/ja/docs/Web/API/Console">console API</a> - to log messages from a PAC, send a message to the background script:</li>
+</ul>
+
+<pre class="brush: js">// pac.js
+
+// send the log message to the background script
+browser.runtime.sendMessage(`Proxy-blocker: blocked ${url}`);</pre>
+
+<pre class="brush: js">// background-script.js
+
+function handleMessage(message, sender) {
+ // only handle messages from the proxy script
+ if (sender.url != browser.extension.getURL(proxyScriptURL)) {
+ return;
+ }
+ console.log(message);
+}
+
+browser.runtime.onMessage.addListener(handleMessage);</pre>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("proxy.register()")}}</dt>
+ <dd>所与のプロキシスクリプトを登録する</dd>
+ <dt>{{WebExtAPIRef("proxy.unregister()")}}</dt>
+ <dd>プロキシスクリプトの登録を取り消す。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("proxy.onProxyError")}}</dt>
+ <dd>プロキシスクリプト実行している際にシステムがエラーに遭遇した時に発火します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.proxy")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/runtime/index.html b/files/ja/mozilla/add-ons/webextensions/api/runtime/index.html
new file mode 100644
index 0000000000..f064c9b4a9
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/runtime/index.html
@@ -0,0 +1,167 @@
+---
+title: runtime
+slug: Mozilla/Add-ons/WebExtensions/API/runtime
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - runtime
+translation_of: Mozilla/Add-ons/WebExtensions/API/runtime
+---
+<div>{{AddonSidebar}}</div>
+
+<p>このモジュールは拡張機能と、それを実行する環境についての情報を提供します。</p>
+
+<p>またメッセージ API も提供し、それでは次のことができます:</p>
+
+<ul>
+ <li>拡張機能の別々の部分同士で通信する</li>
+ <li>他の拡張機能と通信する</li>
+ <li>ネイティブアプリケーションと通信する</li>
+</ul>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("runtime.Port")}}</dt>
+ <dd>Represents one end of a connection between two specific contexts, which can be used to exchange messages.</dd>
+ <dt>{{WebExtAPIRef("runtime.MessageSender")}}</dt>
+ <dd>
+ <p>Contains information about the sender of a message or connection request.</p>
+ </dd>
+ <dt>{{WebExtAPIRef("runtime.PlatformOs")}}</dt>
+ <dd>Identifies the browser's operating system.</dd>
+ <dt>{{WebExtAPIRef("runtime.PlatformArch")}}</dt>
+ <dd>Identifies the browser's processor architecture.</dd>
+ <dt>{{WebExtAPIRef("runtime.PlatformInfo")}}</dt>
+ <dd>Contains information about the platform the browser is running on.</dd>
+ <dt>{{WebExtAPIRef("runtime.RequestUpdateCheckStatus")}}</dt>
+ <dd>Result of a call to {{WebExtAPIRef("runtime.requestUpdateCheck()")}}.</dd>
+ <dt>{{WebExtAPIRef("runtime.OnInstalledReason")}}</dt>
+ <dd>The reason that the {{WebExtAPIRef("runtime.onInstalled")}} event is being dispatched.</dd>
+ <dt>{{WebExtAPIRef("runtime.OnRestartRequiredReason")}}</dt>
+ <dd>The reason that the {{WebExtAPIRef("runtime.onRestartRequired")}} event is being dispatched.</dd>
+</dl>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("runtime.lastError")}}</dt>
+ <dd>This value is set when an asynchronous function has an error condition that it needs to report to its caller.</dd>
+ <dt>{{WebExtAPIRef("runtime.id")}}</dt>
+ <dd>The ID of the extension.</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("runtime.getBackgroundPage()")}}</dt>
+ <dd>Retrieves the <a href="/ja/docs/Web/API/Window">Window</a> object for the background page running inside the current extension.</dd>
+ <dt>{{WebExtAPIRef("runtime.openOptionsPage()")}}</dt>
+ <dd>
+ <p>Opens your extension's <a href="/ja/Add-ons/WebExtensions/user_interface/Options_pages">options page</a>.</p>
+ </dd>
+ <dt>{{WebExtAPIRef("runtime.getManifest()")}}</dt>
+ <dd>Gets the complete <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> file, serialized as an object.</dd>
+ <dt>{{WebExtAPIRef("runtime.getURL()")}}</dt>
+ <dd>Given a relative path from the <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> to a resource packaged with the extension, returns a fully-qualified URL.</dd>
+ <dt>{{WebExtAPIRef("runtime.setUninstallURL()")}}</dt>
+ <dd>Sets a URL to be visited when the extension is uninstalled.</dd>
+ <dt>{{WebExtAPIRef("runtime.reload()")}}</dt>
+ <dd>Reloads the extension.</dd>
+ <dt>{{WebExtAPIRef("runtime.requestUpdateCheck()")}}</dt>
+ <dd>Checks for updates to this extension.</dd>
+ <dt>{{WebExtAPIRef("runtime.connect()")}}</dt>
+ <dd>Establishes a connection from a content script to the main extension process, or from one extension to a different extension.</dd>
+ <dt>{{WebExtAPIRef("runtime.connectNative()")}}</dt>
+ <dd>
+ <div>Connects the extension to a native application on the user's computer.</div>
+ </dd>
+ <dt>{{WebExtAPIRef("runtime.sendMessage()")}}</dt>
+ <dd>Sends a single message to event listeners within your extension or a different extension. Similar to {{WebExtAPIRef('runtime.connect')}} but only sends a single message, with an optional response.</dd>
+ <dt>{{WebExtAPIRef("runtime.sendNativeMessage()")}}</dt>
+ <dd>Sends a single message from an extension to a native application.</dd>
+ <dt>{{WebExtAPIRef("runtime.getPlatformInfo()")}}</dt>
+ <dd>Returns information about the current platform.</dd>
+ <dt>{{WebExtAPIRef("runtime.getBrowserInfo()")}}</dt>
+ <dd>Returns information about the browser in which this extension is installed.</dd>
+ <dt>{{WebExtAPIRef("runtime.getPackageDirectoryEntry()")}}</dt>
+ <dd>Returns a DirectoryEntry for the package directory.</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("runtime.onStartup")}}</dt>
+ <dd>Fired when a profile that has this extension installed first starts up. This event is not fired when an incognito profile is started.</dd>
+ <dt>{{WebExtAPIRef("runtime.onInstalled")}}</dt>
+ <dd>Fired when the extension is first installed, when the extension is updated to a new version, and when the browser is updated to a new version.</dd>
+ <dt>{{WebExtAPIRef("runtime.onSuspend")}}</dt>
+ <dd>Sent to the event page just before the extension is unloaded. This gives the extension an opportunity to do some cleanup.</dd>
+ <dt>{{WebExtAPIRef("runtime.onSuspendCanceled")}}</dt>
+ <dd>Sent after {{WebExtAPIRef("runtime.onSuspend")}} to indicate that the extension won't be unloaded after all.</dd>
+ <dt>{{WebExtAPIRef("runtime.onUpdateAvailable")}}</dt>
+ <dd>Fired when an update is available, but isn't installed immediately because the extension is currently running.</dd>
+ <dt>{{WebExtAPIRef("runtime.onBrowserUpdateAvailable")}}</dt>
+ <dd>Fired when an update for the browser is available, but isn't installed immediately because a browser restart is required.</dd>
+ <dt>{{WebExtAPIRef("runtime.onConnect")}}</dt>
+ <dd>Fired when a connection is made with either an extension process or a content script.</dd>
+ <dt>{{WebExtAPIRef("runtime.onConnectExternal")}}</dt>
+ <dd>Fired when a connection is made with another extension.</dd>
+ <dt>{{WebExtAPIRef("runtime.onMessage")}}</dt>
+ <dd>Fired when a message is sent from either an extension process or a content script.</dd>
+ <dt>{{WebExtAPIRef("runtime.onMessageExternal")}}</dt>
+ <dd>Fired when a message is sent from another extension. Cannot be used in a content script.</dd>
+ <dt>{{WebExtAPIRef("runtime.onRestartRequired")}}</dt>
+ <dd>Fired when the device needs to be restarted.</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<div>
+<p>{{Compat("webextensions.api.runtime")}}</p>
+</div>
+
+<div>{{WebExtExamples("h2")}}</div>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/runtime"><code>chrome.runtime</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/runtime/messagesender/index.html b/files/ja/mozilla/add-ons/webextensions/api/runtime/messagesender/index.html
new file mode 100644
index 0000000000..7c508a5376
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/runtime/messagesender/index.html
@@ -0,0 +1,86 @@
+---
+title: runtime.MessageSender
+slug: Mozilla/Add-ons/WebExtensions/API/runtime/MessageSender
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - MessageSender
+ - Non-standard
+ - Reference
+ - Type
+ - WebExtensions
+ - runtime
+translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/MessageSender
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>メッセージや接続要求の送信元に関する情報を持つオブジェクトです。このオブジェクトは、{{WebExtAPIRef("runtime.onMessage()")}} リスナーに渡されます。</p>
+
+<p>また、このオブジェクトは {{WebExtAPIRef("runtime.Port")}} のプロパティでもありますが、{{WebExtAPIRef("runtime.onConnect()")}} または {{WebExtAPIRef("runtime.onConnectExternal()")}} リスナーに渡された <code>Port</code> インスタンスにしか存在しません。</p>
+
+<h2 id="型">型</h2>
+
+<p>この型はオブジェクトです。以下のプロパティを持ちます。</p>
+
+<dl class="reference-values">
+ <dt><code>tab</code>{{optional_inline}}</dt>
+ <dd>{{WebExtAPIRef('tabs.Tab')}} 型。接続を開いた {{WebExtAPIRef('tabs.Tab')}} です。このプロパティが存在するのは、タブ (コンテンツスクリプトを含む) から接続が開かれたときだけです。</dd>
+ <dt><code>frameId</code>{{optional_inline}}</dt>
+ <dd><code>integer</code> 型。接続を開いたフレームです。0 は最上位のフレームを、正の数値は子フレームを表します。このプロパティが存在するのは、<code>tab</code> が設定されるときだけです。</dd>
+ <dt><code>id</code>{{optional_inline}}</dt>
+ <dd><code>string</code> 型。メッセージが拡張機能から送信された場合は、その拡張機能の ID が設定されます。送信側の manifest.json で <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">applications</a> キーを使って明示的に ID が設定されている場合は、<code>id</code> にはその値が使われます。そうでない場合は、送信側の自動生成された ID が使われます。</dd>
+ <dd>バージョン 54 より前の Firefox では、この値には拡張機能の内部 ID が使われることに注意してください (つまり、拡張機能の URL に含まれる <a href="https://ja.wikipedia.org/wiki/UUID">UUID</a> です)。</dd>
+ <dt><code>url</code>{{optional_inline}}</dt>
+ <dd><code>string</code> 型。メッセージを送信したスクリプトを持つページやフレームの URL です。</dd>
+ <dd>送信側が拡張機能のページ (例えば、<a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">バックグラウンド ページ</a>、<a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Sidebars_popups_options_pages">オプションページ</a>、 <a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Browser_actions_2">ブラウザーアクション</a> や <a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Page_actions">ページアクション</a> のポップアップ) に含まれるスクリプトである場合、URL は <code>"moz-extension://&lt;拡張機能の内部 ID&gt;/path/to/page.html"</code> という形式が使われます。送信側がバックグラウンドスクリプトであって、バックグラウンド ページを使っていない場合、URL は <code>"moz-extension://&lt;拡張機能の内部 ID&gt;/_generated_background_page.html"</code> という形式が使われます。</dd>
+ <dd>送信側がウェブページ内のスクリプト (ページに含まれる通常のスクリプトだけでなく、コンテンツスクリプトも含みます) である場合、<code>url</code> はそのウェブページの URL が使われます。スクリプトがフレーム内で動作している場合、<code>url</code> はそのフレームの URL です。</dd>
+ <dt><code>tlsChannelId</code>{{optional_inline}}</dt>
+ <dd><code>string</code> 型。接続を開いたページまたはフレームの TLS チャンネルの ID です。拡張機能によって要求され、可能である場合にのみ設定されます。</dd>
+</dl>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.runtime.MessageSender")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/runtime#type-MessageSender"><code>chrome.runtime</code></a> API に基づいています。このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/runtime/onmessage/index.html b/files/ja/mozilla/add-ons/webextensions/api/runtime/onmessage/index.html
new file mode 100644
index 0000000000..29b0f557bb
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/runtime/onmessage/index.html
@@ -0,0 +1,317 @@
+---
+title: runtime.onMessage
+slug: Mozilla/Add-ons/WebExtensions/API/runtime/onMessage
+tags:
+ - API
+ - Add-ons
+ - Event
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - onmessage
+ - runtime
+translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onMessage
+---
+<div>{{AddonSidebar()}}</div>
+
+<div>このイベントを使って、拡張機能の別の部品からのメッセージを受け取ることができます。例えば、次のような場面で使います。</div>
+
+<div></div>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Content_scripts">コンテンツスクリプト</a>の中で、 <a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">バックグラウンドスクリプト</a>からのメッセージを受け取る。</li>
+ <li>バックグラウントスクリプトの中で、コンテンツスクリプトからのメッセージを受け取る。</li>
+ <li><a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Options_pages">オプションページ</a>や<a href="/ja/Add-ons/WebExtensions/User_interface_components#Popups">ポップアップ</a>のスクリプトの中で、バックグラウンドスクリプトからのメッセージを受け取る。</li>
+ <li>バックグラウンドスクリプトの中で、オプションページやポップアップのスクリプトからのメッセージを受け取る。</li>
+</ul>
+
+<p><code>onMessage</code> リスナーに受信させるメッセージを送るには、{{WebExtAPIRef("runtime.sendMessage()")}}、または (コンテンツスクリプトにメッセージを送るときは) {{WebExtAPIRef("tabs.sendMessage()")}} を使います。</p>
+
+<div class="blockIndicator note">
+<p>同じ種類のメッセージに対する <code>onMessage</code> リスナーを複数作ることは避けてください。複数のリスナーが実行される順番は保証されていないからです。特定のリスナーへのメッセージ伝送を保証したいときは、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#Connection-based_messaging">コネクションベースのメッセージ</a> を使ってください。</p>
+</div>
+
+<p>メッセージ本体の他に、リスナーは次のものを受け取ります。</p>
+
+<ul>
+ <li><code>sender</code> オブジェクト。メッセージ送信側の詳細情報です。</li>
+ <li><code>sendResponse</code> 関数。送信側への返信を送るために使います。</li>
+</ul>
+
+<p>メッセージに対して同期的に返信するには、<code>sendResponse</code> 関数をリスナーの中で実行します。<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/runtime/onMessage#Sending_a_synchronous_response">例を参照してください</a>。</p>
+
+<p>非同期的に返信するには、二つの方法があります。</p>
+
+<ul>
+ <li>イベントリスナーから <code>true</code> を返す。こうすることで、リスナーから復帰した後でも <code>sendResponse</code> 関数が有効なままになるため、後で実行することができます。<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/runtime/onMessage#Sending_an_asynchronous_response_using_sendResponse">例を参照してください</a>。</li>
+ <li>イベントリスナーから <code>Promise</code> を返して、返信が準備できた後にそれを解決する (またはエラーの場合は拒否する)。<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/runtime/onMessage#Sending_an_asynchronous_response_using_a_Promise">例を参照してください</a>。</li>
+</ul>
+
+<div class="warning">
+<p><code>Promise</code> を返すほうがより望ましい方法です。<code>sendResponse</code> は <a href="https://github.com/mozilla/webextension-polyfill/issues/16#issuecomment-296693219">W3C 仕様から削除される予定です</a>。 人気のある <a href="https://github.com/mozilla/webextension-polyfill">webextension-polyfill</a> ライブラリーは、すでに <code>sendResponse</code> 関数を実装から削除しました。</p>
+</div>
+
+<div class="blockIndicator note">
+<p>また、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#Connection-based_messaging">コネクションベースのメッセージ</a>を使うこともできます。</p>
+</div>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">browser.runtime.onMessage.addListener(listener)
+browser.runtime.onMessage.removeListener(listener)
+browser.runtime.onMessage.hasListener(listener)
+</pre>
+
+<p>イベントには 3 つの関数があります。</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>リスナーをこのイベントに追加する。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>このイベントの受け取りを中止する。<code>listener</code> 引数は削除するリスナーです。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code> がこのイベントに登録されているかどうかを確認する。登録されている場合は <code>true</code> を、そうでない場合は <code>false</code> を返す。</dd>
+</dl>
+
+<h2 id="addListener_の構文">addListener の構文</h2>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>function</code></dt>
+ <dd>
+ <p>このイベントが発生したときに実行されるリスナー関数。関数には次の引数が渡される。</p>
+
+ <dl class="reference-values">
+ <dt><code>message</code></dt>
+ <dd><code>object</code> 型。メッセージ本体。これは JSON 化できるオブジェクトです。</dd>
+ </dl>
+
+ <dl class="reference-values">
+ <dt><code>sender</code></dt>
+ <dd>{{WebExtAPIRef('runtime.MessageSender')}} オブジェクト。メッセージの送信側を表します。</dd>
+ </dl>
+
+ <dl class="reference-values">
+ <dt><code>sendResponse</code></dt>
+ <dd>
+ <p>メッセージに対する返信を送るために、最大で一回実行できる関数。この関数は引数を一つ受け取り、それは JSON 化できるオブジェクトのはずです。その引数はメッセージ送信側に返送されます。</p>
+
+ <p>同じドキュメント中に <code>onMessage</code> リスナーが一つ以上ある場合、返信を返すことができるのは一つだけです。</p>
+
+ <p>同期的に返信するには、リスナー関数が復帰する前に <code>sendResponse</code> を実行します。非同期的に返信するには、次のどちらかを実行します。</p>
+
+ <ul>
+ <li><code>sendResponse</code> に対する参照を保持したままリスナー関数から <code>true</code> を返す。そうすると、リスナー関数から復帰した後でも <code>sendResponse</code> を実行できます。</li>
+ <li>リスナー関数から <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返して、返信の準備ができたときにその Promise を解決する。こちらがより好ましい方法です。</li>
+ </ul>
+ </dd>
+ </dl>
+
+ <p>リスナー関数は、Boolean か <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> のいずれかを返します。</p>
+
+ <div class="blockIndicator warning">
+ <p><code>addListener</code> を次のような <code>async</code> 関数を使って実行しないでください。</p>
+
+ <pre><code>browser.runtime.onMessage.addListener(async (data, sender) =&gt; {
+ if (data.type === 'handle_me') return 'done';
+});
+</code></pre>
+
+ <p>このようなリスナーは全ての受け取ったメッセージを消費するため、実際には他のリスナーがメッセージを受信したり処理することを妨げてしまいます。</p>
+
+ <p>非同期的な実装を使いたい場合は、次のように Promise を使ってください。</p>
+
+ <pre><code>browser.runtime.onMessage.addListener((data, sender) =&gt; {
+ if (data.type === 'handle_me') return Promise.resolve('done');
+});
+</code></pre>
+ </div>
+ </dd>
+</dl>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.runtime.onMessage")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<h3 id="単純な使用例">単純な使用例</h3>
+
+<p>次のコンテンツスクリプトは、ウェブページ上のクリックイベントを待ち受けます。リンクがクリックされた場合、対象の URL をバックグラウンドページにメッセージ送信します。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// content-script.js</span>
+
+window<span class="punctuation token">.</span><span class="function token">addEventListener</span><span class="punctuation token">(</span><span class="string token">"click"</span><span class="punctuation token">,</span> notifyExtension<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+<span class="keyword token">function</span> <span class="function token">notifyExtension</span><span class="punctuation token">(</span>e<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>e<span class="punctuation token">.</span>target<span class="punctuation token">.</span>tagName <span class="operator token">!=</span> <span class="string token">"A"</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">return</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ browser<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span><span class="function token">sendMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span><span class="string token">"url"</span><span class="punctuation token">:</span> e<span class="punctuation token">.</span>target<span class="punctuation token">.</span>href<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;
+}</span></code>
+</pre>
+
+<p>バックグラウンドスクリプトはこのメッセージが送信されるまで待ち、<code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/notifications">notifications</a></code> API を使って通知を表示します。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// background-script.js</span>
+
+browser<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span>onMessage<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>notify<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+<span class="keyword token">function</span> <span class="function token">notify</span><span class="punctuation token">(</span>message<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ browser<span class="punctuation token">.</span>notifications<span class="punctuation token">.</span><span class="function token">create</span><span class="punctuation token">(</span><span class="punctuation token">{</span>
+ <span class="string token">"type"</span><span class="punctuation token">:</span> <span class="string token">"basic"</span><span class="punctuation token">,</span>
+ <span class="string token">"iconUrl"</span><span class="punctuation token">:</span> browser<span class="punctuation token">.</span>extension<span class="punctuation token">.</span><span class="function token">getURL</span><span class="punctuation token">(</span><span class="string token">"link.png"</span><span class="punctuation token">)</span><span class="punctuation token">,</span>
+ <span class="string token">"title"</span><span class="punctuation token">:</span> <span class="string token">"リンクをクリックしました!"</span><span class="punctuation token">,</span>
+ <span class="string token">"message"</span><span class="punctuation token">:</span> message<span class="punctuation token">.</span>url
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<h3 id="同期的に返信する">同期的に返信する</h3>
+
+<p>次のコンテンツスクリプトは、ユーザーがページ上をクリックしたとき、バックグラウンドスクリプトにメッセージを送信します。また、バックグラウンドスクリプトから送信された応答があればログ出力します。</p>
+
+<pre class="brush: js">// content-script.js
+
+function handleResponse(message) {
+ console.log(`バックグラウンドスクリプトが応答しました: ${message.response}`);
+}
+
+function handleError(error) {
+ console.log(`Error: ${error}`);
+}
+
+function sendMessage(e) {
+ var sending = browser.runtime.sendMessage({content: "コンテンツスクリプトからのメッセージです"});
+ sending.then(handleResponse, handleError);
+}
+
+window.addEventListener("click", sendMessage);</pre>
+
+<p>これが対応するバックグラウンドスクリプトで、リスナー内部から同期的に応答を返します。</p>
+
+<pre class="brush: js">// background-script.js
+
+function handleMessage(request, sender, sendResponse) {
+ console.log(`コンテンツスクリプトがメッセージを送信しました: ${request.content}`);
+ sendResponse({response: "バックグラウンドスクリプトからの応答です"});
+}
+
+browser.runtime.onMessage.addListener(handleMessage);</pre>
+
+<p>これは同期的に応答を返す別の方法で、Promise.resolve() を使うものです。</p>
+
+<pre class="brush: js">// background-script.js
+
+function handleMessage(request, sender, sendResponse) {
+ console.log(`コンテンツスクリプトがメッセージを送信しました: ${request.content}`);
+ return Promise.resolve({response: "バックグラウンドスクリプトからの応答です"});
+}
+
+browser.runtime.onMessage.addListener(handleMessage);</pre>
+
+<h3 id="非同期的な返信を_sendResponse_により行う">非同期的な返信を sendResponse により行う</h3>
+
+<p>次は直前の例のバックグラウンドスクリプトの別バージョンです。これは、リスナーが復帰した後、非同期的に返信を送ります。リスナーの中の <code>return true;</code> に注目してください。このようにすることで、リスナーが復帰した後に <code>sendResponse</code> 引数を使う意図があることをブラウザーに伝えています。</p>
+
+<pre class="brush: js">// background-script.js
+
+function handleMessage(request, sender, sendResponse) {
+ console.log(`コンテンツスクリプトがメッセージを送信しました: ${request.content}`);
+ setTimeout(() =&gt; {
+ sendResponse({response: "非同期的なバックグラウンドスクリプトからの応答です"});
+ }, 1000);
+ return true;
+}
+
+browser.runtime.onMessage.addListener(handleMessage);
+</pre>
+
+<h3 id="非同期的な返信を_Promise_により行う">非同期的な返信を Promise により行う</h3>
+
+<p>次のコンテンツスクリプトは、まずページ上の &lt;a&gt; リンクを取得し、そしてそのリンクの場所がブックマークされているかどうかを尋ねるメッセージを送信します。このスクリプトは、その場所がブックマークされている場合は <code>true</code> を、そうでない場合は <code>false</code> というような、Boolean 型の応答が返ってくることを想定しています。</p>
+
+<pre class="brush: js">// content-script.js
+
+const firstLink = document.querySelector("a");
+
+function handleResponse(isBookmarked) {
+ if (isBookmarked) {
+ firstLink.classList.add("bookmarked");
+ }
+}
+
+browser.runtime.sendMessage({
+ url: firstLink.href
+}).then(handleResponse);</pre>
+
+<p>これが対応するバックグラウンドスクリプトです。<code>{{WebExtAPIRef("bookmarks.search()")}}</code> を使うことで、リンクがブックマークされているかを確認する <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返します。</p>
+
+<pre class="brush: js">// background-script.js
+
+function isBookmarked(message, sender, response) {
+ return browser.bookmarks.search({
+ url: message.url
+ }).then(function(results) {
+ return results.length &gt; 0;
+ });
+}
+
+browser.runtime.onMessage.addListener(isBookmarked);</pre>
+
+<p>非同期的なハンドラーが Promise を返さない場合、明示的に Promise を作ることができます。これは少し不自然な例ですが、<code><a href="/ja/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout">Window.setTimeout()</a></code> を使って 1 秒の遅延を発生させた後に応答を返します。</p>
+
+<pre class="brush: js">// background-script.js
+
+function handleMessage(request, sender, sendResponse) {
+ return new Promise(resolve =&gt; {
+ setTimeout(() =&gt; {
+ resolve({response: "非同期的なバックグラウンドスクリプトからの応答です"});
+ }, 1000);
+ });
+}
+
+browser.runtime.onMessage.addListener(handleMessage);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/runtime#event-onMessage"><code>chrome.runtime</code></a> API. このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.html b/files/ja/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.html
new file mode 100644
index 0000000000..5436951fd6
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.html
@@ -0,0 +1,96 @@
+---
+title: runtime.openOptionsPage()
+slug: Mozilla/Add-ons/WebExtensions/API/runtime/openOptionsPage
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - openOptionsPage
+ - runtime
+translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/openOptionsPage
+---
+<div>{{AddonSidebar()}}</div>
+
+<div>拡張機能に<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">オプションページ</a>が定義されている場合、このメソッドはそれを開きます。</div>
+
+<div> </div>
+
+<p>これは <code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox brush:js">var openingPage = browser.runtime.openOptionsPage()
+</pre>
+
+<h3 id="Parameters" name="Parameters">パラメータ</h3>
+
+<p>なし。</p>
+
+<h3 id="Return_value" name="Return_value">返り値</h3>
+
+<p>オプションページの作成が成功した時は、引数のない <code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> で、操作が失敗した場合はエラーメッセージつきの rejected が返ります。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.runtime.openOptionsPage")}}</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>ユーザーがブラウザーアクションのアイコンをクリックした時にオプションページを返します:</p>
+
+<pre class="brush: js">function onOpened() {
+ console.log(`Options page opened`);
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var opening = browser.runtime.openOptionsPage();
+opening.then(onOpened, onError);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/runtime#method-openOptionsPage"><code>chrome.runtime</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.html b/files/ja/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.html
new file mode 100644
index 0000000000..522d9240b9
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.html
@@ -0,0 +1,167 @@
+---
+title: runtime.sendMessage()
+slug: Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - runtime
+ - sendMessage
+translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>単一のメッセージを、自分や別の拡張機能が持つイベントリスナーに送信します。</p>
+
+<p>自分自身の拡張機能に送信する場合は、引数 <code>extensionId</code> を省略してください。自らの拡張機能に含まれる全てのページで {{WebExtAPIRef('runtime.onMessage')}} イベントが起動されます。ただし、<code>runtime.sendMessage</code> を実行したフレームは除きます。</p>
+
+<p>別の拡張機能に送信する場合は、引数 <code>extensionId</code> に拡張機能の ID を設定してください。その拡張機能で {{WebExtAPIRef('runtime.onMessageExternal')}} イベントが起動されます。</p>
+
+<p>このメソッドを使ってコンテンツスクリプトにメッセージを送信することはできません。コンテンツスクリプトにメッセージを送信するには、{{WebExtAPIRef('tabs.sendMessage')}} を使ってください。</p>
+
+<ul>
+</ul>
+
+<p>これは、<code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<div class="blockIndicator note">
+<p><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#Connection-based_messaging">コネクションベースのメッセージ</a>を使うこともできます。</p>
+</div>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">var sending = browser.runtime.sendMessage(
+ extensionId, // optional string
+ message, // any
+ options // optional object
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>extensionId</code>{{optional_inline}}</dt>
+ <dd><code>string</code> 型。 メッセージを送信する拡張機能の ID。別の拡張機能にメッセージを送信する場合は、この引数を含めてください。受信させることを意図している拡張機能が manifest.json の <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">applications</a> キーを使って明示的に ID を設定されている場合は、その値を <code>extensionId</code> に指定する必要があります。そうでない場合、受信側の拡張機能のために生成された ID を指定する必要があります。</dd>
+ <dd>もし <code>extensionId</code> が省略された場合、メッセージは自分自身の拡張機能に送信されます。</dd>
+ <dt><code>message</code></dt>
+ <dd><code>any</code> 型。シリアライズされたクローンに構造化できるオブジェクト。</dd>
+ <dt><code>options</code>{{optional_inline}}</dt>
+ <dd><code>object</code> 型。
+ <dl class="reference-values">
+ <dt><code>includeTlsChannelId</code>{{optional_inline}}</dt>
+ <dd><code>boolean</code> 型。接続イベントを待つプロセスのための {{WebExtAPIRef('runtime.onMessageExternal')}} に TLS チャンネル ID が渡されるかどうか。</dd>
+ <dt><code>toProxyScript{{optional_inline}}</code></dt>
+ <dd><code>boolean</code> 型。 メッセージが {{WebExtAPIRef("proxy")}} API を使って読み込まれる PAC ファイル向けである場合、true を指定しなければならない。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<p>引数に指定される値によっては、この API はあいまいです。以降のルールが使われます。</p>
+
+<ul>
+ <li><strong>引数が一つの場合</strong>、それは送信されるメッセージで、内部的に送信されます。</li>
+ <li><strong>引数が二つの場合</strong>
+ <ul>
+ <li>二番目の引数が次のいずれかである場合、引数は <code>(message, options)</code> と解釈され、メッセージは内部的に送信されます。
+ <ol>
+ <li>有効な <code>options</code> オブジェクトである (つまり、ブラウザがサポートする <code>options</code> のプロパティのみを持つオブジェクト)</li>
+ <li>null</li>
+ <li>undefined</li>
+ </ol>
+ </li>
+ <li>それ以外の場合、引数は <code>(extensionId, message)</code> と解釈され、メッセージは  <code>extensionId</code> によって識別された拡張機能に送信されます。</li>
+ </ul>
+ </li>
+ <li><strong>引数が三つの場合</strong>、引数は <code>(extensionId, message, options)</code> と解釈されます。メッセージは <code>extensionId</code> によって識別された拡張機能に送信されます。</li>
+</ul>
+
+<p>Firefox 55 より前では、引数が二つの場合のルールが異なることに注意してください。古いルールでは、最初の引数が文字列である場合、それを <code>extensionId</code> と扱い、二番目の引数をメッセージとして使います。これは、<code>sendMessage()</code> を <code>("my-message", {})</code> のような引数を使って実行する場合、空のメッセージを "my-message" によって識別される拡張機能に送信してしまうということです。新しいルールのもとでは、このような引数を使うと、"my-message" というメッセージを空のオプションオブジェクトを使って内部的に送信します。</p>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p><code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> 型。受信側が応答を送信する場合、その応答を JSON オブジェクトとして使って fulfilled 状態にされます。それ以外の場合、値を持たない fulfilled 状態になります。拡張機能との接続中にエラーが発生した場合、Promise はエラーメッセージを持つ rejected 状態になります。</p>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.runtime.sendMessage")}}</p>
+
+<h2 id="使用例">使用例</h2>
+
+<p>これは、ユーザーがコンテンツのウィンドウをクリックしたときにバックグラウンド スクリプトにメッセージを送信するコンテンツスクリプトです。送信されるメッセージは <code>{greeting: "Greeting from the content script"}</code> で、送信側は応答を受信をすることになっており、それを <code>handleResponse</code> 関数で扱います。</p>
+
+<pre class="brush: js">// content-script.js
+
+function handleResponse(message) {
+ console.log(`Message from the background script: ${message.response}`);
+}
+
+function handleError(error) {
+ console.log(`Error: ${error}`);
+}
+
+function notifyBackgroundPage(e) {
+ var sending = browser.runtime.sendMessage({
+ greeting: "Greeting from the content script"
+ });
+ sending.then(handleResponse, handleError);
+}
+
+window.addEventListener("click", notifyBackgroundPage);</pre>
+
+<p>対応するバックグラウンド スクリプトは次のようなものです。</p>
+
+<pre class="brush: js">// background-script.js
+
+function handleMessage(request, sender, sendResponse) {
+ console.log("Message from the content script: " +
+ request.greeting);
+ sendResponse({response: "Response from background script"});
+}
+
+browser.runtime.onMessage.addListener(handleMessage);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/runtime#method-sendMessage"><code>chrome.runtime</code></a> API に基づいています。このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/sessions/index.html b/files/ja/mozilla/add-ons/webextensions/api/sessions/index.html
new file mode 100644
index 0000000000..870cf96426
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/sessions/index.html
@@ -0,0 +1,134 @@
+---
+title: sessions
+slug: Mozilla/Add-ons/WebExtensions/API/sessions
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - sessions
+translation_of: Mozilla/Add-ons/WebExtensions/API/sessions
+---
+<div>{{AddonSidebar}}</div>
+
+<p>セッション API を使ってブラウザーが動作している間に閉じたタブやウィンドウを一覧、復帰します。</p>
+
+<p>{{WebExtAPIRef("sessions.getRecentlyClosed()")}} 関数は {{WebExtAPIRef("tabs.Tab")}} 配列と{{WebExtAPIRef("windows.Window")}} オブジェクトを返し、これはブラウザーが動作している間に閉じられたタブやウィンドウを {{WebExtAPIRef("sessions.MAX_SESSION_RESULTS")}} で定義される上限まで表します。</p>
+
+<p>ウィンドウやタブの復帰は {{WebExtAPIRef("sessions.restore()")}} 関数を使ってできます。復帰はタブを再オープンするだけではありません: タブの移動履歴を復帰して戻る/進むのボタンが動くようにもします。</p>
+
+<p>この API は拡張機能にタブやウィンドウに関連する追加状態の保存させる関数グループも提供します。それで、タブやウィンドウが閉じられて順次復帰された場合、拡張機能は状態を取得できます。例えば、タブをグループ化する拡張機能は、これを使ってタブがどのグループにいるのかを記憶し、ユーザーがタブを復帰した時に正しいグループに復帰できるようになります。</p>
+
+<p>セッション API を使うには "sessions" <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API パーミッション</a>が必要です。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("sessions.Filter")}}</dt>
+ <dd>{{WebExtAPIRef("sessions.getRecentlyClosed()")}}の呼び出しで返される{{WebExtAPIRef("sessions.Session", "Session")}} オブジェクトの数を制限します。</dd>
+ <dt>{{WebExtAPIRef("sessions.Session")}}</dt>
+ <dd>
+ <p>現在のブラウジングセッションでユーザーが閉じたタブやウィンドウを表します。</p>
+ </dd>
+</dl>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("sessions.MAX_SESSION_RESULTS")}}</dt>
+ <dd><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/sessions/getRecentlyClosed" title="Returns an array Session objects, representing windows and tabs that were closed in the current browsing session (that is: the time since the browser was started)."><code>sessions.getRecentlyClosed()</code></a>の呼び出しで返される最大のセッション数。</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("sessions.forgetClosedTab()")}}</dt>
+ <dd>ブラウザーの最近閉じたタブリストから閉じたタブを削除します。</dd>
+ <dt>{{WebExtAPIRef("sessions.forgetClosedWindow()")}}</dt>
+ <dd>ブラウザーの最近閉じたウィンドウリストから閉じたウィンドウを削除します。</dd>
+ <dt>{{WebExtAPIRef("sessions.getRecentlyClosed()")}}</dt>
+ <dd>{{WebExtAPIRef("sessions.Session", "Session")}} オブジェクトを返します、これは現在のブラウジングセッション(つまり: ブラウザーが起動した以降の)で閉じたウィンドウとタブを表しています。</dd>
+ <dt>{{WebExtAPIRef("sessions.restore()")}}</dt>
+ <dd>
+ <p>閉じたタブやウィンドウを復元します。</p>
+ </dd>
+ <dt>{{WebExtAPIRef("sessions.setTabValue()")}}</dt>
+ <dd>
+ <p>あるタブに関連するキー/バリューペアを保存します。</p>
+ </dd>
+ <dt>{{WebExtAPIRef("sessions.getTabValue()")}}</dt>
+ <dd>
+ <p>あるタブのキーに対応するバリューを取得します。</p>
+ </dd>
+ <dt>{{WebExtAPIRef("sessions.removeTabValue()")}}</dt>
+ <dd>
+ <p>あるタブに関連するキー/バリューペアを削除します。</p>
+ </dd>
+ <dt>{{WebExtAPIRef("sessions.setWindowValue()")}}</dt>
+ <dd>
+ <p>あるウィンドウに関連するキー/バリューペアを保存します。</p>
+ </dd>
+ <dt>{{WebExtAPIRef("sessions.getWindowValue()")}}</dt>
+ <dd>
+ <p>あるウィンドウに関連するキー/バリューペアを保存します。</p>
+ </dd>
+ <dt>{{WebExtAPIRef("sessions.removeWindowValue()")}}</dt>
+ <dd>
+ <p>あるウィンドウに関連するキー/バリューペアを削除します。</p>
+ </dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("sessions.onChanged")}}</dt>
+ <dd>
+ <p>タブかウィンドウが閉じられたときに発火します。</p>
+ </dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.api.sessions")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/sessions"><code>chrome.sessions</code></a> API.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/sidebaraction/index.html b/files/ja/mozilla/add-ons/webextensions/api/sidebaraction/index.html
new file mode 100644
index 0000000000..90c3d8ec73
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/sidebaraction/index.html
@@ -0,0 +1,98 @@
+---
+title: sidebarAction
+slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction
+tags:
+ - API
+ - Extensions
+ - Non-standard
+ - Reference
+ - Sidebar
+ - WebExtensions
+ - sidebarAction
+translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction
+---
+<div>{{AddonSidebar}}</div>
+
+<p>拡張機能のサイドバーのプロパティを取得、設定します。</p>
+
+<p><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Sidebars">サイドバー</a> はブラウザーウィンドウのウェブページの隣の、右側か左側にあるペインです。ブラウザーはユーザーが利用できるサイドバーを見て、表示するサイドバーを選択できる UI を提供します。manifest.json の <code><a href="/ja/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code> キーを使って、拡張機能は自身のサイドバーを定義できます。ここで述べる <code>sidebarAction</code> API を使って、拡張機能はサイドバーのプロパティを設定、取得できます。</p>
+
+<p><code>sidebarAction</code> API は {{WebExtAPIRef("browserAction")}} API と緊密にモデリングされています。</p>
+
+<p>sidebarAction API は Opera の <a href="https://dev.opera.com/extensions/sidebar-action-api/">sidebarAction API</a> を元にしていますが、次のものはサポートされていません: <code>setBadgeText()</code>, <code>getBadgeText()</code>, <code>setBadgeBackgroundColor()</code>, <code>getBadgeBackgroundColor()</code>, <code>onFocus</code>, <code>onBlur</code>.</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("sidebarAction.ImageDataType")}}</dt>
+ <dd>画像のピクセルデータ。<code><a href="/ja/docs/Web/API/ImageData">ImageData</a></code> オブジェクト (例えば、{{htmlelement("canvas")}} 要素からのもの)でなければならない。</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("sidebarAction.setPanel()")}}</dt>
+ <dd>サイドバーのバネルを設定します。</dd>
+ <dt>{{WebExtAPIRef("sidebarAction.getPanel()")}}</dt>
+ <dd>サイドバーのバネルを取得します。</dd>
+ <dt>{{WebExtAPIRef("sidebarAction.setTitle()")}}</dt>
+ <dd>サイドバーのタイトルを設定します。これはブラウザーがサイドバーを一覧するあらゆる UI、例えばメニューに表示されます。</dd>
+ <dt>{{WebExtAPIRef("sidebarAction.getTitle()")}}</dt>
+ <dd>サイドバーのタイトルを取得します。</dd>
+ <dt>{{WebExtAPIRef("sidebarAction.setIcon()")}}</dt>
+ <dd>サイドバーのアイコンを設定します。</dd>
+ <dt>{{WebExtAPIRef("sidebarAction.open()")}}</dt>
+ <dd>サイドバーを開きます。</dd>
+ <dt>{{WebExtAPIRef("sidebarAction.close()")}}</dt>
+ <dd>サイドバーを閉じます。</dd>
+ <dt>{{WebExtAPIRef("sidebarAction.isOpen()")}}</dt>
+ <dd>サイドバーが開いているか否かをチェックします。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.api.sidebarAction")}}</p>
+
+<h2 id="Example_add-ons" name="Example_add-ons">add-ons の例</h2>
+
+<ul>
+ <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/annotate-page">annotate-page</a></li>
+</ul>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Opera's <a href="https://dev.opera.com/extensions/sidebar-action-api/"><code>chrome.sidebarAction</code></a> API.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/index.html b/files/ja/mozilla/add-ons/webextensions/api/storage/index.html
new file mode 100644
index 0000000000..6286012f61
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/storage/index.html
@@ -0,0 +1,109 @@
+---
+title: storage
+slug: Mozilla/Add-ons/WebExtensions/API/storage
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - Storage
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/storage
+---
+<div>{{AddonSidebar}}</div>
+
+<p>拡張機能にデータの保存、取得と、保存項目の変更をリッスンできるようにします。</p>
+
+<p>ストレージのシステムは <a href="/ja/docs/Web/API/Web_Storage_API">Web Storage API</a> に基づいていますが、いくつか相違点があります。とりわけ、以下の違いがあります。</p>
+
+<ul>
+ <li>非同期です。</li>
+ <li>値は拡張機能のスコープで、特定ドメインのスコープではありません (つまりキー/値ペアーの同じ組み合わせが、すべてのバックグラウンドコンテキストとコンテンツスクリプトから利用できます)。</li>
+ <li>保存された値は JSON-ifiable な (JSON化できる) 値で、単なる <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/String">String</a></code> ではありません。とりわけ、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a></code> と <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a></code> も、コンテンツが JSON で表現できる時 (DOM ノードは入りません) を除いて不可です。値を保存する前に JSON <code>Strings</code> に変換する必要はなく、内部で JSON として表現されます、つまり JSON-ifiable である必要があります。</li>
+ <li>複数のキー/値ペアーが同じ API 呼び出しで設定、取得できます。</li>
+</ul>
+
+<p>この API を利用するためには"storage" <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> を <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> に含める必要があります。</p>
+
+<p>各々の拡張機能は独自のストレージ領域を持っています。またそれらは異なる型のストレージに分割することができます。</p>
+
+<p>{{domxref("Window.localStorage")}}とこの API は似ていますが、拡張機能関連のデータを格納する際に拡張コード内で <code>Window.localStorage</code> を使わないことを推奨します。Firefox はプライバシー上の理由で、ブラウザー履歴やデータを消去などをする場合、localStorage API を利用して保存されたデータも消去します。しかし <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/local">storage.local</a></code> API を利用して保存されたデータはこれらの場合でも保持されます。</p>
+
+<div class="note">
+<p>ストレージ領域内は暗号化されていないため、ユーザーの機密情報を保存すべきではありません。</p>
+</div>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("storage.StorageArea")}}</dt>
+ <dd>ストレージ領域を表すオブジェクト</dd>
+ <dt>{{WebExtAPIRef("storage.StorageChange")}}</dt>
+ <dd>ストレージ領域の変更を表すオブジェクト</dd>
+</dl>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<p><code>storage</code> は 3 つのプロパティを持ち、異なる型の利用可能なストレージ領域を表しています。</p>
+
+<dl>
+ <dt>{{WebExtAPIRef("storage.sync")}}</dt>
+ <dd><code>sync</code> ストレージ領域を表します。<code>sync</code> ストレージ内のアイテムはブラウザーによって同期され、異なるデバイス間でも、ログインしているユーザーのブラウザーのすべてのインスタンスを跨いで利用できるようになります。</dd>
+ <dt>{{WebExtAPIRef("storage.local")}}</dt>
+ <dd><code>local</code> ストレージ領域を表します。<code>local</code> ストレージ内のアイテムは拡張機能がインストールされているマシン内のみで扱えます。</dd>
+ <dt>{{WebExtAPIRef("storage.managed")}}</dt>
+ <dd><code>managed</code> ストレージ領域を表します。<code>managed</code> ストレージ内のアイテムはドメイン管理者によってセットされ、拡張機能は読取権限のみを持ちます。そのため、この名前空間を変更しようとするとエラーになります。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("storage.onChanged")}}</dt>
+ <dd>ストレージ領域内のアイテムを 1 つ以上変更した場合に発火します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.api.storage")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a> API に基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/local/index.html b/files/ja/mozilla/add-ons/webextensions/api/storage/local/index.html
new file mode 100644
index 0000000000..e69759effd
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/storage/local/index.html
@@ -0,0 +1,84 @@
+---
+title: storage.local
+slug: Mozilla/Add-ons/WebExtensions/API/storage/local
+translation_of: Mozilla/Add-ons/WebExtensions/API/storage/local
+---
+<div>{{AddonSidebar()}}</div>
+
+<p><code>local</code> ストレージ領域を指します。<code>local</code>ストレージ内のアイテムはその拡張機能がインストールされたマシン内で利用できます。</p>
+
+<p>ブラウザーは拡張機能がローカルストレージエリアに保存できるデータ量を制限します。</p>
+
+<ul>
+ <li>Chromeでは、このAPIを使用して、<a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions#Unlimited_storage">"unlimitedStorage"</a>パーミッションを許可しない場合は5MBまで保存できます。</li>
+ <li>Firefox ではバージョン56以降で"unlimitedStorage"パーミッションを利用できます。保存できるデータ量は現在では制限していませんが、将来的には制限するため、もし大きなデータ量を保存するのであれば"unlimitedStorage"パーミッションを今から使用するとよいでしょう。</li>
+</ul>
+
+<p>拡張機能をアンインストールすると、関連するローカルストレージは削除されます。</p>
+
+<p>またFirefoxでは、"about:config"で"keepUuidOnUninstall"と"keepStorageOnUninstall"の設定を<code>true</code>にすることで、アンインストール時にデータが削除されることを防ぐことができます。 この機能は拡張機能開発のテストのために提供されています。拡張機能自身ではこれらの設定を変更できません。</p>
+
+<p>このAPIは {{domxref("Window.localStorage")}}に似ていますが、拡張機能のコード内で<code>Window.localStorage</code>を使用することは推奨されません。これはユーザがプライバシーのために履歴とデータを削除するなど、FirefoxはlocalStorage APIを用いて拡張機能が保存したデータを削除することがあるためです。</p>
+
+<h2 id="関数">関数</h2>
+
+<p><code>local</code>オブジェクトは{{WebExtAPIRef("storage.StorageArea")}} 型で定義された関数を実装しています。</p>
+
+<dl>
+ <dt>{{WebExtAPIRef("storage.StorageArea.get()")}}</dt>
+ <dd>ストレージ領域から 1つ以上のアイテムを取得します。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.getBytesInUse()")}}</dt>
+ <dd>1つ以上のストレージ領域内に格納されたアイテムが占めるストレージ空間をバイト単位で取得します。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.set()")}}</dt>
+ <dd>1つ以上のアイテムをストレージ領域に格納します。既にアイテムが存在していれば値は上書きされます。 値を格納したとき{{WebExtAPIRef("storage.onChanged")}}イベントが発火します。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.remove()")}}</dt>
+ <dd>ストレージ領域内の1つ以上のアイテムを削除します。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.clear()")}}</dt>
+ <dd>ストレージ領域内の全てのアイテムを削除します。</dd>
+</dl>
+
+<h2 id="ブラウザ互換状況">ブラウザ互換状況</h2>
+
+
+
+<p>{{Compat("webextensions.api.storage.local")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>このAPIはChromiumの <a href="https://developer.chrome.com/extensions/storage#property-local"><code>chrome.storage</code></a> APIに基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a>における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/clear/index.html b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/clear/index.html
new file mode 100644
index 0000000000..b8dc2aec62
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/clear/index.html
@@ -0,0 +1,62 @@
+---
+title: StorageArea.clear()
+slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/clear
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - Storage
+ - StorageArea
+ - WebExtensions
+ - remove
+translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/clear
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>全てのアイテムをストレージ領域から削除します。</p>
+
+<p>この関数は <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">var clearing = browser.storage.&lt;storageType&gt;.clear()
+</pre>
+
+<p><code>&lt;storageType&gt;</code> は {{WebExtAPIRef("storage.sync")}} または {{WebExtAPIRef("storage.local")}} の書き込み可能なストレージタイプです。</p>
+
+<h3 id="引数">引数</h3>
+
+<p>なし</p>
+
+<h3 id="返り値">返り値</h3>
+
+<p>成功時は引数の無い <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返します。 失敗した場合 promise はエラーメッセージと共にリジェクトされます。</p>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+<p>{{Compat("webextensions.api.storage.StorageArea.clear")}}</p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: js">function onCleared() {
+ console.log("OK");
+}
+
+function onError(e) {
+ console.log(e);
+}
+
+var clearStorage = browser.storage.local.clear();
+clearStorage.then(onCleared, onError);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a> APIに基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.html b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.html
new file mode 100644
index 0000000000..d5ea70153c
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.html
@@ -0,0 +1,133 @@
+---
+title: StorageArea.get()
+slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/get
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - Storage
+ - StorageArea
+ - WebExtensions
+ - get
+translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/get
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>ストレージ領域から1つ以上のアイテムを取得します。</p>
+
+<p>この関数は <code style="font-size: 16px !important; line-height: 24px !important;"><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise" style="font-size: 16px !important; line-height: 24px !important;">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox">let gettingItem = browser.storage.&lt;storageType&gt;.get(
+ keys // null, string, object or array of strings
+)
+</pre>
+
+<p><code style="font-size: 16px !important; line-height: 24px !important;">&lt;storageType&gt;</code> は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/sync" style="font-size: 16px !important; line-height: 24px !important;" title="sync ストレージ領域を指します。 sync ストレージ内のアイテムはブラウザーによって同期され、ログイン(Firefox sync や Google アカウントなど)しているブラウザー・デバイスの全てのインスタンスで利用できます。"><code style="font-size: 16px !important; line-height: 24px !important;">storage.sync</code></a> または <a class="new" href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/local" rel="nofollow" style="font-size: 16px !important; line-height: 24px !important;" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code style="font-size: 16px !important; line-height: 24px !important;">storage.local</code></a> の書き込み可能なストレージタイプです。</p>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>keys</code></dt>
+ <dd>取得したいアイテムのキー(文字列・文字列の配列またはデフォルト値を指定するオブジェクト)を指定します。空文字列・オブジェクト・配列を指定すると空のオブジェクトが取得できます。 <code>null</code> か未定義の値を指定するとストレージ全体のアイテムが取得できます。</dd>
+</dl>
+
+<h3 id="返り値">返り値</h3>
+
+<p>成功時は <code style="font-size: 16px !important; line-height: 24px !important;">keys</code> で指定されたストレージ領域内のアイテム全てを含む <code style="font-size: 16px !important; line-height: 24px !important;">results</code> オブジェクトを引数に持つ <code style="font-size: 16px !important; line-height: 24px !important;"><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise" style="font-size: 16px !important; line-height: 24px !important;">Promise</a></code> を返します。 失敗した場合 promise はエラーメッセージと共にリジェクトされます。</p>
+
+<div class="warning">
+<p>52 より前の Firefox バージョンのコンテンツスクリプトで使用する場合、 <code>browser.storage.local.get()</code> で返される Promise は1つのオブジェクトを持つ配列を引数に持ちます。配列内のオブジェクトは上記に記述したようにストレージ領域内の <code>keys</code> を持っています。 The Promise is correctly fulfilled with an Object when used in the background context (background scripts, popups, options pages, etc.). When this API is used as <code>chrome.storage.local.get()</code>, it correctly passes an Object to the callback function.</p>
+</div>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.storage.StorageArea.get")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>あらかじめストレージ領域に2つのアイテムを格納しておきます。</p>
+
+<pre class="brush: js">// "kitten" と "monster" を格納
+browser.storage.local.set({
+ kitten: {name:"Mog", eats:"mice"},
+ monster: {name:"Kraken", eats:"people"}
+});</pre>
+
+<p>次に promise で使う成功時と失敗時のハンドラを定義しておきます。</p>
+
+<pre class="brush: js">function onGot(item) {
+ console.log(item);
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}</pre>
+
+<p><code>keys</code> を指定せずに呼び出すと全て取得します。</p>
+
+<pre class="brush: js">let gettingItem = browser.storage.local.get();
+gettingItem.then(onGot, onError);
+
+// -&gt; Object { kitten: Object, monster: Object }</pre>
+
+<p>空のキーを指定すると何も返しません。</p>
+
+<pre class="brush: js">// 空の配列を指定すると何も返らない
+let gettingItem = browser.storage.local.get([]);
+gettingItem.then(onGot, onError);
+
+// -&gt; Object { }</pre>
+
+<p>オブジェクト名を指定すると、合致するものを返します。</p>
+
+<pre class="brush: js">let gettingItem = browser.storage.local.get("kitten");
+gettingItem.then(onGot, onError);
+
+// -&gt; Object { kitten: Object }</pre>
+
+<p>オブジェクト名の配列を指定すると合致するものを全て返します。</p>
+
+<pre class="brush: js">let gettingItem = browser.storage.local.get(["kitten", "monster", "grapefruit"]);
+gettingItem.then(onGot, onError);
+
+// -&gt; Object { kitten: Object, monster: Object } </pre>
+
+<p>オブジェクト名をキー、デフォルト値をvalueに指定したオブジェクトを指定する場合</p>
+
+<pre class="brush: js">let gettingItem = browser.storage.local.get({
+ kitten: "no kitten",
+ monster: "no monster",
+ grapefruit: {
+ name: "Grape Fruit",
+ eats: "Water"
+ }
+});
+
+// -&gt; Object { kitten: Object, monster: Object, grapefruit: Object }
+</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<h3 id="Chrome_での例">Chrome での例</h3>
+
+<pre class="brush: js">chrome.storage.local.get("kitten", function(items){
+ console.log(items.kitten); // -&gt; {name:"Mog", eats:"mice"}
+});</pre>
+
+<p class="brush: js">Or with an arrow function</p>
+
+<pre class="brush: js">chrome.storage.local.get("kitten", items=&gt;{
+ console.log(items.kitten); // -&gt; {name:"Mog", eats:"mice"}
+});</pre>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a> APIに基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/getbytesinuse/index.html b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/getbytesinuse/index.html
new file mode 100644
index 0000000000..ae2de4bb9e
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/getbytesinuse/index.html
@@ -0,0 +1,53 @@
+---
+title: StorageArea.getBytesInUse()
+slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/getBytesInUse
+tags:
+ - API
+ - Add-ons
+ - Method
+ - Non-standard
+ - Reference
+ - Storage
+ - StorageArea
+ - WebExtensions
+ - getBytesInUse
+translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/getBytesInUse
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>1つ以上のストレージ領域内に格納されたアイテムが占めるストレージ空間をバイト単位で取得します。</p>
+
+<p>この関数は <code><a href="/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">var gettingSpace = browser.storage.&lt;storageType&gt;.getBytesInUse(
+ keys // null, string, or array of strings
+)
+</pre>
+
+<p><code>&lt;storageType&gt;</code> は {{WebExtAPIRef("storage.sync")}} または {{WebExtAPIRef("storage.local")}} の書き込み可能なストレージタイプです。</p>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>keys</code></dt>
+ <dd>ストレージ空間を取得したいアイテムのキー(文字列または文字列の配列)を指定します。 空の文字列か配列を渡すと 0 が返ります。 <code>null</code> を指定すると、ストレージ領域全体の使用中ストレージ空間を返します。</dd>
+</dl>
+
+<h3 id="返り値">返り値</h3>
+
+<p>成功時は <code>keys</code> で指定されたオブジェクトが占めるストレージ空間を持つ整数 <code>bytesUsed</code> を引数に持つ <code><a href="/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返します。失敗した場合 Promise はエラーメッセージと共にリジェクトされます。</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.storage.StorageArea.getBytesInUse")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a> APIに基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/index.html b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/index.html
new file mode 100644
index 0000000000..5a84d5280d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/index.html
@@ -0,0 +1,73 @@
+---
+title: storage.StorageArea
+slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea
+translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>StorageArea はストレージ領域を表すオブジェクトです。</p>
+
+<h2 id="型">型</h2>
+
+<p>StorageAreaはオブジェクト型です。</p>
+
+<h2 id="関数">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("storage.StorageArea.get()")}}</dt>
+ <dd>ストレージ領域から1つ以上のアイテムを取得します。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.getBytesInUse()")}}</dt>
+ <dd>ストレージ領域に格納されている1つ以上のアイテムで使用されているストレージサイズ(バイト単位)を取得します。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.set()")}}</dt>
+ <dd>1つ以上のアイテムをストレージ領域に保存します。既にアイテムが存在する場合は値が上書きされます。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.remove()")}}</dt>
+ <dd>1つ以上のアイテムをストレージ領域から削除します。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.clear()")}}</dt>
+ <dd>全てのアイテムをストレージ領域から削除します。</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.storage.StorageArea")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>このAPIはChromium <a href="https://developer.chrome.com/extensions/storage#type-StorageArea"><code>chrome.storage</code></a> APIに模度づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> におけるChromiumのコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況はMicrosoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States Licenseに従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/remove/index.html b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/remove/index.html
new file mode 100644
index 0000000000..daba7224fb
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/remove/index.html
@@ -0,0 +1,70 @@
+---
+title: StorageArea.remove()
+slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/remove
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - Storage
+ - StorageArea
+ - WebExtensions
+ - remove
+translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/remove
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>1つ以上のアイテムをストレージ領域から削除します。</p>
+
+<p>この関数は <code style="font-size: 16px !important; line-height: 24px !important;"><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise" style="font-size: 16px !important; line-height: 24px !important;">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="Syntax">Syntax</h2>
+
+<pre class="syntaxbox brush:js">let removingItem = browser.storage.&lt;storageType&gt;.remove(
+ keys // string, or array of strings
+)
+</pre>
+
+<p><code>&lt;storageType&gt;</code> は {{WebExtAPIRef("storage.sync")}} または {{WebExtAPIRef("storage.local")}} の書き込み可能なストレージタイプです。</p>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>keys</code></dt>
+ <dd>削除したいアイテムのキー(文字列または文字列の配列)を指定します。</dd>
+</dl>
+
+<h3 id="返り値">返り値</h3>
+
+<p>成功時は引数の無い <code style="font-size: 16px !important; line-height: 24px !important;"><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise" style="font-size: 16px !important; line-height: 24px !important;">Promise</a></code> を返します。 失敗した場合 promise はエラーメッセージと共にリジェクトされます。</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.storage.StorageArea.remove")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>1つのアイテムを削除する例です。</p>
+
+<pre class="brush: js">function onRemoved() {
+ console.log("OK");
+}
+
+function onError(e) {
+ console.log(e);
+}
+
+let removeKitten = browser.storage.remove("kitten");
+removeKitten.then(onRemoved, onError);
+</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a> APIに基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.html b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.html
new file mode 100644
index 0000000000..6860bc9c19
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.html
@@ -0,0 +1,105 @@
+---
+title: StorageArea.set()
+slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/set
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - Storage
+ - StorageArea
+ - WebExtensions
+ - set
+translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/set
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>1つ以上のアイテムをストレージ領域に保存または上書きします。</p>
+
+<p>この API を使用して保存や上書きをする場合、{{WebExtAPIRef("storage.onChanged")}} イベントが発火します。</p>
+
+<p>この関数は <code style="font-size: 16px !important; line-height: 24px !important;"><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise" style="font-size: 16px !important; line-height: 24px !important;">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">let settingItem = browser.storage.&lt;storageType&gt;.set(
+ keys // オブジェクト
+)
+</pre>
+
+<p><code style="font-size: 16px !important; line-height: 24px !important;">&lt;storageType&gt;</code> は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/sync" style="font-size: 16px !important; line-height: 24px !important;" title="sync ストレージ領域を指します。 sync ストレージ内のアイテムはブラウザーによって同期され、ログイン(Firefox sync や Google アカウントなど)しているブラウザー・デバイスの全てのインスタンスで利用できます。"><code style="font-size: 16px !important; line-height: 24px !important;">storage.sync</code></a> または <a class="new" href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/local" rel="nofollow" style="font-size: 16px !important; line-height: 24px !important;" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code style="font-size: 16px !important; line-height: 24px !important;">storage.local</code></a> の書き込み可能なストレージタイプです。</p>
+
+<h3 id="Parameters">Parameters</h3>
+
+<dl>
+ <dt><code>keys</code></dt>
+ <dd>
+ <p>保存したい1つ以上のキー/値ペアを持つオブジェクトを指定します。アイテムが既に存在する場合、値は上書きされます。</p>
+
+ <p>値は <a href="/ja/docs/Glossary/Primitive">primitive 型</a> (整数型・ブール型・文字列) または<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array">配列</a></code> を指定でできます。</p>
+
+ <p>通常は他の型 (<code>Function</code>, <code>Date</code>, <code>RegExp</code>, <code>Set</code>, <code>Map</code>, <code>ArrayBuffer</code>  など)は格納できません。これらのサポートされていない型の中には空のオブジェクトとして復元されたり、 <code>set()</code> がエラーをスローする場合があります。この場合の挙動はブラウザに依存します。</p>
+ </dd>
+</dl>
+
+<h3 id="返り値">返り値</h3>
+
+<p>成功時は引数の無い <code style="font-size: 16px !important; line-height: 24px !important;"><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise" style="font-size: 16px !important; line-height: 24px !important;">Promise</a></code> を返します。 失敗した場合 promise はエラーメッセージと共にリジェクトされます。</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p> </p>
+
+<p>{{Compat("webextensions.api.storage.StorageArea.set")}}</p>
+
+<p> </p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: js">function setItem() {
+ console.log("OK");
+}
+
+function gotKitten(item) {
+ console.log(`${item.kitten.name} has ${item.kitten.eyeCount} eyes`);
+}
+
+function gotMonster(item) {
+ console.log(`${item.monster.name} has ${item.monster.eyeCount} eyes`);
+}
+
+function onError(error) {
+ console.log(error)
+}
+
+// オブジェクトを2つ定義
+var monster = {
+ name: "Kraken",
+ tentacles: true,
+ eyeCount: 10
+}
+
+var kitten = {
+ name: "Moggy",
+ tentacles: false,
+ eyeCount: 2
+}
+
+// オブジェクト2つを格納
+browser.storage.local.set({kitten, monster})
+ .then(setItem, onError);
+
+browser.storage.local.get("kitten")
+ .then(gotKitten, onError);
+browser.storage.local.get("monster")
+ .then(gotMonster, onError);
+</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a class="external external-icon" href="https://developer.chrome.com/extensions/storage" rel="noopener" style="font-size: 18px !important; line-height: 27px !important;"><code style="font-size: 16px !important; line-height: 24px !important;">chrome.storage</code></a> APIに基づいています。また、このドキュメントは <a class="external external-icon" href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json" rel="noopener" style="font-size: 18px !important; line-height: 27px !important;"><code style="font-size: 16px !important; line-height: 24px !important;">storage.json</code></a> における Chromium のコードに基づいています。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/storagechange/index.html b/files/ja/mozilla/add-ons/webextensions/api/storage/storagechange/index.html
new file mode 100644
index 0000000000..f7850012ad
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/storage/storagechange/index.html
@@ -0,0 +1,79 @@
+---
+title: storage.StorageChange
+slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageChange
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Non-standard
+ - Reference
+ - Storage
+ - StorageChange
+ - Type
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageChange
+---
+<div>{{AddonSidebar()}}</div>
+
+<div><code>StorageChange</code> はストレージ領域の変更を表すオブジェクトです。</div>
+
+<div> </div>
+
+<h2 id="型">型</h2>
+
+<p><code>StorageChange</code> オブジェクトは以下のプロパティを持ちます。</p>
+
+<dl class="reference-values">
+ <dt><code>oldValue</code>{{optional_inline}}</dt>
+ <dd>アイテムの変更前の値が存在すれば、この中に入ります。データ型は特定されておらず、何らかのデータ型が入ります。</dd>
+ <dt><code>newValue</code>{{optional_inline}}</dt>
+ <dd>アイテムの変更後の値があれば、この中に入ります。データ型は特定されておらず、何らかのデータ型が入ります。</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.storage.StorageChange")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p> </p>
+
+<p style="font-size: 18px !important; line-height: 27px !important;">この API は Chromium の <a class="external external-icon" href="https://developer.chrome.com/extensions/storage" rel="noopener" style="font-size: 18px !important; line-height: 27px !important;"><code style="font-size: 16px !important; line-height: 24px !important;">chrome.storage</code></a> APIに基づいています。また、このドキュメントは <a class="external external-icon" href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json" rel="noopener" style="font-size: 18px !important; line-height: 27px !important;"><code style="font-size: 16px !important; line-height: 24px !important;">storage.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p style="font-size: 18px !important; line-height: 27px !important;">Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/storage/sync/index.html b/files/ja/mozilla/add-ons/webextensions/api/storage/sync/index.html
new file mode 100644
index 0000000000..f9b796ebfb
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/storage/sync/index.html
@@ -0,0 +1,87 @@
+---
+title: storage.sync
+slug: Mozilla/Add-ons/WebExtensions/API/storage/sync
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Non-standard
+ - Property
+ - Reference
+ - Storage
+ - Sync
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/storage/sync
+---
+<div>{{AddonSidebar()}}</div>
+
+<p><code>sync</code> ストレージ領域を指します。 <code>sync</code> ストレージ内のアイテムはブラウザーによって同期され、ログイン(Firefox sync や Google アカウントなど)しているブラウザー・デバイスの全てのインスタンスで利用できます。</p>
+
+<p>Firefox の場合、ユーザーは <code>"about:preferences"</code> の "Sync 設定" オプションの下にある "アドオン" ボックスにチェックを入れる必要があります。</p>
+
+<p><code>storage.sync</code> の実装はアドオン ID に依存していることに注意してください。もし <code>storage.sync</code> を使うのであれば、 <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings">browser_specific_settings</a></code> manifest.json キーを使用して拡張機能に ID を設定する必要があります。</p>
+
+<p>この API の主な利用例は拡張機能の設定を格納し、異なるプロファイル間で同期させることです。この API は最大100 KB までデータを格納できます。それ以上格納しようとするとエラーメッセージを返して失敗します。 この API は稼働時間やパフォーマンスを保証しません。</p>
+
+<h2 id="関数">関数</h2>
+
+<p><code>sync</code> オブジェクトは {{WebExtAPIRef("storage.StorageArea")}} 型で定義された関数を実装しています。</p>
+
+<dl>
+ <dt>{{WebExtAPIRef("storage.StorageArea.get()", "storage.<var>StorageArea</var>.get()")}}</dt>
+ <dd>ストレージ領域から1つ以上のアイテムを取得します。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.getBytesInUse()", "storage.<var>StorageArea</var>.getBytesInUse()")}}</dt>
+ <dd>1つ以上のストレージ領域内に格納されたアイテムが占めるストレージ空間をバイト単位で取得します。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.set()", "storage.<var>StorageArea</var>.set()")}}</dt>
+ <dd>1つ以上のアイテムをストレージ領域に格納します。既にアイテムが存在していれば値は上書きされます。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.remove()", "storage.<var>StorageArea</var>.remove()")}}</dt>
+ <dd>ストレージ領域内の1つ以上のアイテムを削除します。</dd>
+ <dt>{{WebExtAPIRef("storage.StorageArea.clear()", "storage.<var>StorageArea</var>.clear()")}}</dt>
+ <dd>ストレージ領域内の全てのアイテムを削除します。</dd>
+</dl>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.storage.sync")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>このAPIはChromiumの <a href="https://developer.chrome.com/extensions/storage#property-sync"><code>chrome.storage</code></a> APIに基づいています。また、このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.html
new file mode 100644
index 0000000000..65a036c403
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.html
@@ -0,0 +1,105 @@
+---
+title: tabs.captureVisibleTab()
+slug: Mozilla/Add-ons/WebExtensions/API/tabs/captureVisibleTab
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - captureVisibleTab
+ - tabs
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/captureVisibleTab
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>指定ウィンドウの選択タブの表示領域の画像をエンコードしたデータ URI を作成します。このメソッドを使うには <code>&lt;all_urls&gt;</code> <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a> が必要です (Chrome の場合、<code>activeTab</code> <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a> があり、ユーザーが許可の操作を行えば、このメソッドを使うことができます)。</p>
+
+<p>これは、<code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox brush:js">var capturing = browser.tabs.captureVisibleTab(
+ windowId, // optional integer
+ options // optional extensionTypes.ImageDetails
+)
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>windowId</code>{{optional_inline}}</dt>
+ <dd><code>integer</code> 型。対象となるウィンドウ。デフォルトは現在のウィンドウ。</dd>
+ <dt><code>options</code>{{optional_inline}}</dt>
+ <dd>{{WebExtAPIRef('extensionTypes.ImageDetails')}} 型。</dd>
+</dl>
+
+<h3 id="Return_value" name="Return_value">戻り値</h3>
+
+<p><code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> であり、キャプチャーされたタブの表示領域の画像をエンコードしたデータ URL で fulfilled 状態にされる。このデータ URL は、HTML イメージ要素の 'src' 属性に設定することで、画像を表示できる。もし何らかのエラーが発生した場合、Promise はエラーメッセージによって rejected 状態にされる。</p>
+
+<h2 id="Examples" name="Examples">使用例</h2>
+
+<p>現在のウィンドウの選択されたタブの画像を、デフォルト設定でキャプチャーする。</p>
+
+<pre class="brush: js">function onCaptured(imageUri) {
+ console.log(imageUri);
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+browser.browserAction.onClicked.addListener(function() {
+ var capturing = browser.tabs.captureVisibleTab();
+ capturing.then(onCaptured, onError);
+});
+</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("webextensions.api.tabs.captureVisibleTab")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/tabs#method-captureVisibleTab"><code>chrome.tabs</code></a> API に基づいています。このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/create/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/create/index.html
new file mode 100644
index 0000000000..247bc50464
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/create/index.html
@@ -0,0 +1,131 @@
+---
+title: tabs.create()
+slug: Mozilla/Add-ons/WebExtensions/API/tabs/create
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/create
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>新しいタブを作ります。</p>
+
+<p>これは<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>を返す非同期関数です.</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">var creating = browser.tabs.create(
+ createProperties // object
+)
+</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>createProperties</code></dt>
+ <dd>新しいタブについてのプロパティを与える<code>オブジェクト</code>。これらのプロパティについて詳しくは{{WebExtAPIRef("tabs.Tab")}}を参照してください。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>active</code>{{optional_inline}}</dt>
+ <dd>タブをアクティブにするかどうかを<code>真理値</code>で指定します。ウィンドウがフォーカスされているかには影響されません({{WebExtAPIRef('windows.update')}}も参照)。デフォルト値は<code>true</code>.</dd>
+ <dt><code>cookieStoreId</code> {{optional_inline}}</dt>
+ <dd><code>文字列</code> 。タブのcookie store IDが<code>cookieStoreId</code>のタブを作るときに使用します。このオプションは拡張機能が<code>"cookies"</code> <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a>を持つときのみ使用できます。</dd>
+ <dt><code>index</code>{{optional_inline}}</dt>
+ <dd><code>整数値</code>。ウィンドウ中のタブの位置を指定します。数値はゼロからウィンドウ内のタブの数までです。</dd>
+ <dt><code>openerTabId</code>{{optional_inline}}</dt>
+ <dd><code>整数値</code>。開くタブのIDを指定します。指定した場合、開く側のタブは新しいタブと同じウィンドウにある必要があります。</dd>
+ <dt><code>openInReaderMode</code>{{optional_inline}}</dt>
+ <dd><code>真理値</code>。もし<code>true</code>であれば<a href="/en-US/Add-ons/WebExtensions/API/tabs/toggleReaderMode">リーダーモード</a>で開かれます。 デフォルトは<code>false</code>。</dd>
+ <dt><code>pinned</code>{{optional_inline}}</dt>
+ <dd><code>真理値</code>。タブをピン留めするかを指定します。デフォルトは<code>false</code>。</dd>
+ <dt><code>selected</code>{{optional_inline}}</dt>
+ <dd><code>真理値</code>。ウィンドウ内で選択されるかどうかを指定します。デフォルトは<code>true</code>。
+ <div class="warning">このプロパティは非推奨です。Firefoxではサポートされません。代わりに<code>active</code>を使用してください。</div>
+ </dd>
+ <dt><code>url</code>{{optional_inline}}</dt>
+ <dd><code>文字列</code>。はじめに開くURLを指定します。デフォルトは新しいタブ。</dd>
+ <dd>スキームを含む完全なURLを指定します。(例えば 'www.google.com' → 'http://www.google.com').</dd>
+ <dd>セキュリティの観点からFirefoxでは特権URLは使用できません。</dd>
+ <dd>
+ <ul>
+ <li>chrome: URL</li>
+ <li>javascript: URL</li>
+ <li>data: URL</li>
+ <li>file: URL(ファイルシステム上のファイルなど。拡張機能内にパッケージ化されたファイルは指定できます。下部を参照してください)</li>
+ <li>特権 about: URL (例、 <code>about:config</code>, <code>about:addons</code>, <code>about:debugging</code>)<span style="display: none;"> </span>。ただし非特権 URL (<code>about:blank</code>) は使用できます。</li>
+ <li>新しいタブ (<code>about:newtab</code>) はURLを指定しなければ開かれます。</li>
+ </ul>
+
+ <p>拡張機能内のファイルをロードするためにはmanifest.jsonファイルからの絶対パスで指定します。(例: '/path/to/my-page.html')。もし'/'を省略すると相対パスとして解釈されます。またブラウザによっては、また異なった絶対パスとして解釈されます。</p>
+ </dd>
+ <dt><code>windowId</code>{{optional_inline}}</dt>
+ <dd><code>整数値</code>。新しくタブを作るウィンドウを指定します。デフォルトは現在開いているウィンドウ。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="返り値">返り値</h3>
+
+<p>新しく作ったタブに関する{{WebExtAPIRef('tabs.Tab')}}オブジェクトを引数に持つ<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>が返されます。URLが特権URLであるなどして、タブが作られなかった場合はpromiseはエラーメッセージとともにrejectされます。</p>
+
+<h2 id="ブラウザー互換状況">ブラウザー互換状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.tabs.create", 10)}}</p>
+
+<h2 id="例">例</h2>
+
+<p>"https://example.org" を新しいタブで開きます</p>
+
+<pre class="brush: js">function onCreated(tab) {
+ console.log(`Created new tab: ${tab.id}`)
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+browser.browserAction.onClicked.addListener(function() {
+ var creating = browser.tabs.create({
+ url:"https://example.org"
+ });
+ creating.then(onCreated, onError);
+});</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>このAPIはChromiumの<a href="https://developer.chrome.com/extensions/tabs#method-create"><code>chrome.tabs</code></a> APIに基づいています。 このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> における Chromium のコードに基づいています。</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/duplicate/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/duplicate/index.html
new file mode 100644
index 0000000000..af56c60bce
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/duplicate/index.html
@@ -0,0 +1,98 @@
+---
+title: tabs.duplicate()
+slug: Mozilla/Add-ons/WebExtensions/API/tabs/duplicate
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/duplicate
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>ID で指定されたタブを複製します。</p>
+
+<p>この関数は <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">var duplicating = browser.tabs.duplicate(
+ tabId // integer
+)
+</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>tabId</code></dt>
+ <dd><code>integer</code>. 複製するタブのIDを指定します。</dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>A <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> that will be fulfilled with a {{WebExtAPIRef('tabs.Tab')}} object containing details about the duplicated tab. The <code>Tab</code> object only contains <code>url</code>, <code>title</code> and <code>favIconUrl</code> if the extension has the <a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions"><code>"tabs"</code> permission</a>. If any error occurs the promise will be rejected with an error message.</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.tabs.duplicate")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>1つ目のタブを複製し、新しく作られたタブのIDをログに残す例:</p>
+
+<pre class="brush: js">function onDuplicated(tabInfo) {
+ console.log(tabInfo.id);
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+// Duplicate the first tab in the array
+function duplicateFirstTab(tabs) {console.log(tabs);
+ if (tabs.length &gt; 0) {
+ var duplicating = browser.tabs.duplicate(tabs[0].id);
+ duplicating.then(onDuplicated, onError);
+ }
+}
+
+// Query for all open tabs
+var querying = browser.tabs.query({});
+querying.then(duplicateFirstTab, onError);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromiums の <a href="https://developer.chrome.com/extensions/tabs#method-duplicate"><code>chrome.tabs</code></a> APIに基づいています。 This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/executescript/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/executescript/index.html
new file mode 100644
index 0000000000..82e1ee1686
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/executescript/index.html
@@ -0,0 +1,176 @@
+---
+title: tabs.executeScript()
+slug: Mozilla/Add-ons/WebExtensions/API/tabs/executeScript
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Method
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - executeScript
+ - tabs
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/executeScript
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>JavaScript のコードをページに挿入します。</p>
+
+<p>コードを挿入できるページの URL は、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">マッチパターン</a> により指定できます。 つまり、URL の scheme 部は、"http", "https", "file", "ftp" のいずれかでなければなりません。そして、その URL に対する明示的な <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">host パーミッション</a>、または <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission">activeTab パーミッション</a>が必要です。</p>
+
+<p>また、自らの拡張機能パッケージに含まれるページに対してであれば、次の方法でコードを挿入することも可能です。</p>
+
+<pre class="brush: js">browser.tabs.create({url: "/my-page.html"}).then(() =&gt; {
+ browser.tabs.executeScript({
+ code: `console.log('location:', window.location.href);`
+ });
+});</pre>
+
+<p>この場合、特別なパーミッションは必要ありません。</p>
+
+<p>ブラウザーの組込ページ、例えば about:debugging、about:addons、新規タブを開いた時のページなどには、コードを挿入することは<em>できません</em>。</p>
+
+<p>挿入するスクリプトのことを、コンテンツスクリプトと呼びます。詳細は <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">コンテンツスクリプト</a> で学んでください。</p>
+
+<p>これは、<code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">var executing = browser.tabs.executeScript(
+ tabId, // optional integer
+ details // object
+)
+</pre>
+
+<h3 id="引数">引数</h3>
+
+<dl>
+ <dt><code>tabId</code> {{optional_inline}}</dt>
+ <dd><code>integer</code> 型。 スクリプトを実行するタブの ID。省略時のデフォルトは、現在のウィンドウでアクティブなタブ。</dd>
+ <dt><code>details</code></dt>
+ <dd>実行するスクリプトに関するオブジェクト。次のプロパティを持ちます。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>allFrames</code> {{optional_inline}}</dt>
+ <dd><code>boolean</code> 型。<code>true</code> である場合は、現在のページが持つ全てのフレームにコードが挿入されます。<code>true</code> であり、かつ <code>frameId</code> が設定されている場合はエラーが発生するため、frameId と allFrames は互いに排他的です。<code>false</code> である場合は、最上位のフレームにのみコードが挿入されます。デフォルトは <code>false</code> です。</dd>
+ <dt><code>code</code> {{optional_inline}}</dt>
+ <dd><code>string</code> 型。挿入されるコードを文字列として表現したもの。<strong>注意:</strong> このプロパティを使って信頼できないデータを JavaScript に挿入しないでください。セキュリティの問題につながります。</dd>
+ <dt><code>file</code> {{optional_inline}}</dt>
+ <dd><code>string</code> 型。挿入されるコードを持つファイルへのパス。Firefox では、拡張機能のルートから始まらない相対 URL は、現在のページの URL からの相対位置として解決されます。Chrome では、そのような URL は拡張機能のベース URL からの相対位置として解決されます。複数のブラウザーで動作させるには、拡張機能のルートから始まる相対 URL として指定します。例えば、<code>"/path/to/script.js"</code> のようにします。</dd>
+ <dt><code>frameId</code> {{optional_inline}}</dt>
+ <dd><code>integer</code> 型。コードが挿入されるフレーム。デフォルトは <code>0</code> (最上位のフレーム) です。</dd>
+ <dt><code>matchAboutBlank</code> {{optional_inline}}</dt>
+ <dd><code>boolean</code> 型。<code>true</code> である場合、コードはその親ドキュメントへのアクセスをもつときに、組込の "about:blank" や "about:srcdoc" フレームにも挿入されます。コードをトップレベルの about: フレームに挿入することはできません。デフォルトは <code>false</code> です。</dd>
+ <dt><code>runAt</code> {{optional_inline}}</dt>
+ <dd>{{WebExtAPIRef('extensionTypes.RunAt')}} 型。コードがどの時点でタブに挿入されるかを指定します。デフォルトは "document_idle" です。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>オブジェクト配列を使って fulfilled 状態にされる <code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> です。それぞれのオブジェクトは、フレームに挿入されたスクリプトの結果を表します。</p>
+
+<p>スクリプトの結果とは最後に評価された文のことです。これは、<a href="/ja/docs/Tools/Web_Console">Webコンソール</a>で実行されたスクリプトの出力 (結果であって、<code>console.log()</code> の出力のことではありません) に似ています。例えば、次のようなスクリプトを挿入したとします。</p>
+
+<pre class="brush: js">var foo='my result';foo;</pre>
+
+<p>この場合、結果配列には、文字列 "<code>my result</code>" が含まれます。結果は、<a href="/ja/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">structured clone</a> が可能でなければなりません。最後の文を <code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> にすることもできますが、<a href="https://github.com/mozilla/webextension-polyfill#tabsexecutescript">webextension-polyfill</a> ライブラリではサポートされていません。</p>
+
+<p>エラーが発生した場合、Promise はエラーメッセージを使って rejected 状態にされます。</p>
+
+<h2 id="使用例">使用例</h2>
+
+<p>次の例は、現在アクティブなタブで 1 行のコードスニペットを実行します。</p>
+
+<pre class="brush: js">function onExecuted(result) {
+ console.log(`グリーンにしました`);
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var makeItGreen = 'document.body.style.border = "5px solid green"';
+
+var executing = browser.tabs.executeScript({
+ code: makeItGreen
+});
+executing.then(onExecuted, onError);</pre>
+
+<p>次の例は、ファイルからスクリプトを実行します。このファイルは拡張機能のパッケージに含まれており、"content-script.js" という名前です。そのスクリプトは、現在アクティブなタブで実行されますが、メインのドキュメントだけでなく、全てのサブフレームでも実行されます。</p>
+
+<pre class="brush: js">function onExecuted(result) {
+ console.log(`全てのサブフレームで実行しました`);
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var executing = browser.tabs.executeScript({
+ file: "/content-script.js",
+ allFrames: true
+});
+executing.then(onExecuted, onError);</pre>
+
+<p>次の例は、ファイルからスクリプトを実行します。このファイルは拡張機能のパッケージに含まれており、"content-script.js" という名前です。そのスクリプトは、ID が 2 であるタブで実行されます。</p>
+
+<pre class="brush: js">function onExecuted(result) {
+ console.log(`タブ 2 で実行しました`);
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var executing = browser.tabs.executeScript(
+ 2, {
+ file: "/content-script.js"
+});
+executing.then(onExecuted, onError);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<h2 id="ブラウザー実装状況">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("webextensions.api.tabs.executeScript")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> API に基づいています。このドキュメントは <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> における Chromium のコードに基づいています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/get/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/get/index.html
new file mode 100644
index 0000000000..767b11173d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/get/index.html
@@ -0,0 +1,87 @@
+---
+title: tabs.get()
+slug: Mozilla/Add-ons/WebExtensions/API/tabs/get
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/get
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>タブのIDを指定し、{{WebExtAPIRef("tabs.Tab")}}オブジェクトとしてタブの詳細を取得します。</p>
+
+<p>これは<code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>を返す非同期関数です。</p>
+
+<h2 id="Syntax">Syntax</h2>
+
+<pre class="syntaxbox brush:js">var getting = browser.tabs.get(
+ tabId // integer
+)
+</pre>
+
+<h3 id="Parameters">Parameters</h3>
+
+<dl>
+ <dt><code>tabId</code></dt>
+ <dd><code>integer</code>. 取得するタブのID。</dd>
+</dl>
+
+<h3 id="Return_value">Return value</h3>
+
+<p>A <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> that will be fulfilled with a {{WebExtAPIRef('tabs.Tab')}} object containing information about the tab. If the tab could not be found or some other error occurs, the promise will be rejected with an error message.</p>
+
+<h2 id="Examples">Examples</h2>
+
+<p>タブがアクティブなとき、情報を取得します:</p>
+
+<pre class="brush: js">async function logListener(info) {
+ try {
+ let tabInfo = await browser.tabs.get(info.tabId);
+ console.log(tabInfo);
+ } catch (error) {
+ console.error(error);
+ }
+}
+
+browser.tabs.onActivated.addListener(logListener);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+
+
+<p>{{Compat("webextensions.api.tabs.get")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/tabs#method-get"><code>chrome.tabs</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> in the Chromium code.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/index.html
new file mode 100644
index 0000000000..40f6ced315
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/index.html
@@ -0,0 +1,215 @@
+---
+title: tabs
+slug: Mozilla/Add-ons/WebExtensions/API/tabs
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - tabs
+ - タブ
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ブラウザーのタブシステムとやりとりします。</p>
+
+<p>この API を使って開いているタブの一覧を取得したり、いろいろな条件でフィルターしたり、タブを開き、更新し、移動し、再読み込みし、削除できます。この API ではタブのコンテンツに直接アクセスできませんが、JavaScript と CSS をタブに挿入することは、{{WebExtAPIRef("tabs.executeScript()")}} や {{WebExtAPIRef("tabs.insertCSS()")}} API を使ってできます。</p>
+
+<p>この API の大半の使用に特別なパーミッションは要りませんが:</p>
+
+<ul>
+ <li><code>Tab.url</code> <code>Tab.title</code> <code>Tab.favIconUrl</code>, のアクセスには "tabs" <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>が必要です。また Firefox では URL による{{WebExtAPIRef("tabs.query", "問い合わせ")}}をするのにも "tabs" が必要です。</li>
+ <li>{{WebExtAPIRef("tabs.executeScript()")}} や {{WebExtAPIRef("tabs.insertCSS()")}} を使うには、そのタブの <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">host パーミッション</a>が必要です。</li>
+</ul>
+
+<p>あるいは、これらのパーミッションを一時的に取得することもできますが、それは現在アクティブなタブで明示的なユーザーアクションへの応答する場合のみで、<a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission">"activeTab" パーミッション</a>を要求することで可能です。</p>
+
+<p>タブ操作の多くはタブ ID を使います。タブ ID はブラウザーセッションの単一のタブごとにユニークである保証がされています。ブラウザーが再起動したら、タブ ID を再利用できて、実際そうします。ブラウザーの再起動をまたいでタブ情報を関連づけるには {{WebExtAPIRef("sessions.setTabValue()")}} を使います。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("tabs.MutedInfoReason")}}</dt>
+ <dd>タブがミュートされている、またはミュートが解除されている理由を示す。</dd>
+ <dt>{{WebExtAPIRef("tabs.MutedInfo")}}</dt>
+ <dd>タブがミュートされているかを示す真理値と、最後の変更の理由からなるオブジェクト。</dd>
+ <dt>{{WebExtAPIRef("tabs.PageSettings")}}</dt>
+ <dd>
+ <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/saveAsPDF" title="Saves the current page as a PDF. This will open a dialog, supplied by the underlying operating system, asking the user where they want to save the PDF."><code>tabs.saveAsPDF()</code></a>メソッドにおいて、どのように PDF を描画するかを制御する。</p>
+ </dd>
+ <dt>{{WebExtAPIRef("tabs.Tab")}}</dt>
+ <dd>タブについての情報を含む。</dd>
+ <dt>{{WebExtAPIRef("tabs.TabStatus")}}</dt>
+ <dd>タブの読み込み状況を示す。</dd>
+ <dt>{{WebExtAPIRef("tabs.WindowType")}}</dt>
+ <dd>タブを所有しているウィンドウのタイプを示す。</dd>
+ <dt>{{WebExtAPIRef("tabs.ZoomSettingsMode")}}</dt>
+ <dd>ズームがブラウザーによるものか、拡張機能によるものか、またはズームが許可されていないのかを示す。</dd>
+ <dt>{{WebExtAPIRef("tabs.ZoomSettingsScope")}}</dt>
+ <dd>あるページのズームが、同一生成元の別ページにも適用されるか、タブ内でのみかを示す。</dd>
+ <dt>{{WebExtAPIRef("tabs.ZoomSettings")}}</dt>
+ <dd>ズーム設定{{WebExtAPIRef("tabs.ZoomSettingsMode", "mode")}}, {{WebExtAPIRef("tabs.ZoomSettingsScope", "scope")}}とデフォルトのズーム要因を示す。</dd>
+</dl>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("tabs.TAB_ID_NONE")}}</dt>
+ <dd>ブラウザーのタブでないタブに対する特殊な ID(Windows の開発ツールなど)。</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("tabs.captureTab()")}}</dt>
+ <dd>あるタブの可視エリアの画像をエンコードしたデータURIを作成します。</dd>
+ <dt>{{WebExtAPIRef("tabs.captureVisibleTab()")}}</dt>
+ <dd>特定のウィンドウのアクティブなタブの可視エリアの画像をエンコードしたデータURI を作成します。</dd>
+ <dt>{{WebExtAPIRef("tabs.connect()")}}</dt>
+ <dd>あるタブにおいて、バックグラウンドスクリプト(またはその他ポップアップやオプションページのスクリプトなど特権スクリプト)と <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">content scripts</a> 間でのメッセージのやり取り用の経路を確保します。</dd>
+ <dt>{{WebExtAPIRef("tabs.create()")}}</dt>
+ <dd>新しいタブを作る。</dd>
+ <dt>{{WebExtAPIRef("tabs.detectLanguage()")}}</dt>
+ <dd>タブのコンテンツの言語を検出する</dd>
+ <dt>{{WebExtAPIRef("tabs.discard()")}}</dt>
+ <dd>1つ以上のタブを破棄する。</dd>
+ <dt>{{WebExtAPIRef("tabs.duplicate()")}}</dt>
+ <dd>タブを複製する。</dd>
+ <dt>{{WebExtAPIRef("tabs.executeScript()")}}</dt>
+ <dd>ページに JavaScript コードを挿入する。</dd>
+ <dt>{{WebExtAPIRef("tabs.get()")}}</dt>
+ <dd>特定のタブについて情報を取り出す。</dd>
+ <dt>{{WebExtAPIRef("tabs.getAllInWindow()")}} {{deprecated_inline}}</dt>
+ <dd>特定のウィンドウ内のすべてのタブについての情報を取り出す。</dd>
+ <dt>{{WebExtAPIRef("tabs.getCurrent()")}}</dt>
+ <dd>スクリプトが実行されているタブについての情報を <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/Tabs/Tab" title="This type contains information about a tab."><code>tabs.Tab</code></a> オブジェクトとして取り出す。</dd>
+ <dt>{{WebExtAPIRef("tabs.getSelected()")}} {{deprecated_inline}}</dt>
+ <dd>あるウィンドウにおいてタブが選択されているかを得る。</dd>
+ <dt>{{WebExtAPIRef("tabs.getZoom()")}}</dt>
+ <dd>あるタブについてズーム要因を得る。</dd>
+ <dt>{{WebExtAPIRef("tabs.getZoomSettings()")}}</dt>
+ <dd>あるタブについてズーム設定を得る。</dd>
+ <dt>{{WebExtAPIRef("tabs.goForward()")}}</dt>
+ <dd>可能な場合、次のページへ進む。</dd>
+ <dt>{{WebExtAPIRef("tabs.goBack()")}}</dt>
+ <dd>可能な場合、前のページへ戻る。</dd>
+ <dt>{{WebExtAPIRef("tabs.hide()")}} {{experimental_inline}}</dt>
+ <dd>1つ以上のタブを隠す。</dd>
+ <dt>{{WebExtAPIRef("tabs.highlight()")}}</dt>
+ <dd>1 つ以上のタブをハイライトする。</dd>
+ <dt>{{WebExtAPIRef("tabs.insertCSS()")}}</dt>
+ <dd>CSS をページに挿入する。</dd>
+ <dt>{{WebExtAPIRef("tabs.move()")}}</dt>
+ <dd>2 つ以上のタブを同じ、あるいは異なるウィンドウの任意のポジションへ移動させる。</dd>
+ <dt>{{WebExtApiRef("tabs.moveInSuccession()")}}</dt>
+ <dd>タブグループの継承関係を編集する。</dd>
+ <dt>{{WebExtAPIRef("tabs.print()")}}</dt>
+ <dd>開いているタブのコンテンツを印刷する。</dd>
+ <dt>{{WebExtAPIRef("tabs.printPreview()")}}</dt>
+ <dd>
+ <div>開いているタブの印刷プレビューを開く。</div>
+ </dd>
+ <dt>{{WebExtAPIRef("tabs.query()")}}</dt>
+ <dd>特定のプロパティを持つすべてのタブ、またはプロパティが指定されなければすべてのタブを取得します。</dd>
+ <dt>{{WebExtAPIRef("tabs.reload()")}}</dt>
+ <dd>タブをリロードする。キャッシュを回避することもできる。</dd>
+ <dt>{{WebExtAPIRef("tabs.remove()")}}</dt>
+ <dd>1つ以上のタブを閉じる。</dd>
+ <dt>{{WebExtAPIRef("tabs.removeCSS()")}}</dt>
+ <dd>以前に{{WebExtAPIRef("tabs.insertCSS()")}}を呼び出して挿入されているCSSを削除する。</dd>
+ <dt>{{WebExtAPIRef("tabs.saveAsPDF()")}}</dt>
+ <dd>現在のページを PDF として保存する。</dd>
+ <dt>{{WebExtAPIRef("tabs.sendMessage()")}}</dt>
+ <dd>あるタブのコンテンツスクリプトへ、1つのメッセージを送信する。</dd>
+ <dt>{{WebExtAPIRef("tabs.sendRequest()")}} {{deprecated_inline}}</dt>
+ <dd>あるタブのコンテンツスクリプトへ、単一のリクエストを送信する。<strong>非推奨</strong>: 代わりに {{WebExtAPIRef("tabs.sendMessage()")}} を使用してください。</dd>
+ <dt>{{WebExtAPIRef("tabs.setZoom()")}}</dt>
+ <dd>あるタブをズームする。</dd>
+ <dt>{{WebExtAPIRef("tabs.setZoomSettings()")}}</dt>
+ <dd>あるタブについてズーム設定をする。</dd>
+ <dt>{{WebExtAPIRef("tabs.show()")}} {{experimental_inline}}</dt>
+ <dd>{{WebExtAPIRef("tabs.hide()", "hidden")}}で隠されたタブを表示する。</dd>
+ <dt>{{WebExtAPIRef("tabs.toggleReaderMode()")}}</dt>
+ <dd>あるタブについてのリーダーモードへのトグル。</dd>
+ <dt>{{WebExtAPIRef("tabs.update()")}}</dt>
+ <dd>新しい URL に案内、もしくはタブの他のプロパティを修正する。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("tabs.onActivated")}}</dt>
+ <dd>ウィンドウ内でアクティブなタブが変わったときに発火。このイベントが発火した段階ではまだタブの URL はセットされているとは限らない。</dd>
+ <dt>{{WebExtAPIRef("tabs.onActiveChanged")}} {{deprecated_inline}}</dt>
+ <dd>ウィンドウの中の選択されたタブが変更されたときに発火。<strong>非推奨:</strong> 代わりに{{WebExtAPIRef("tabs.onActivated")}}を利用してください。</dd>
+ <dt>{{WebExtAPIRef("tabs.onAttached")}}</dt>
+ <dd>タブがウィンドウに引っ付けられたとき、例えばウィンドウ間で移動されたときに発火。</dd>
+ <dt>{{WebExtAPIRef("tabs.onCreated")}}</dt>
+ <dd>タブが作られたときに発火。このイベントが発火した段階ではまだタブの URL はセットされているとは限らない。</dd>
+ <dt>{{WebExtAPIRef("tabs.onDetached")}}</dt>
+ <dd>タブがウィンドウから切り離されたときに発火。例えば、ウィンドウのない場所へタブを移動させたときなど。</dd>
+ <dt>{{WebExtAPIRef("tabs.onHighlightChanged")}} {{deprecated_inline}}</dt>
+ <dd>ウィンドウ内でハイライトまたは選択されたタブが変更したときに発火。<strong>非推奨:</strong> 代わりに{{WebExtAPIRef("tabs.onHighlighted")}}を使用してください。</dd>
+ <dt>{{WebExtAPIRef("tabs.onHighlighted")}}</dt>
+ <dd>ウィンドウ内でハイライトまたは選択されたタブが変更したときに発火。</dd>
+ <dt>{{WebExtAPIRef("tabs.onMoved")}}</dt>
+ <dd>ウィンドウ内にタブが移動したときに発火する。</dd>
+ <dt>{{WebExtAPIRef("tabs.onRemoved")}}</dt>
+ <dd>タブが閉じられたときに発火する。</dd>
+ <dt>{{WebExtAPIRef("tabs.onReplaced")}}</dt>
+ <dd>プリレンダリングによってタブが他のタブに置き換えられたときに発火。</dd>
+ <dt>{{WebExtAPIRef("tabs.onSelectionChanged")}} {{deprecated_inline}}</dt>
+ <dd>ウィンドウ内で選択されているタブが変わったときに発火。<strong>非推奨:</strong> 代わりに{{WebExtAPIRef("tabs.onActivated")}}を使用してください。</dd>
+ <dt>{{WebExtAPIRef("tabs.onUpdated")}}</dt>
+ <dd>タブが更新されたときに発火する。</dd>
+ <dt>{{WebExtAPIRef("tabs.onZoomChange")}}</dt>
+ <dd>タブがズームされたときに発火する。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.api.tabs")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/tabs"><code>chrome.tabs</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre class="notranslate">// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/mutedinfo/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/mutedinfo/index.html
new file mode 100644
index 0000000000..7d70c895e8
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/mutedinfo/index.html
@@ -0,0 +1,67 @@
+---
+title: tabs.MutedInfo
+slug: Mozilla/Add-ons/WebExtensions/API/tabs/MutedInfo
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/MutedInfo
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>This object contains a boolean indicating whether the tab is muted, and the reason for the last state change.</p>
+
+<h2 id="型">型</h2>
+
+<p>値の型はオブジェクトです。次のプロパティを含みます:</p>
+
+<dl class="reference-values">
+ <dt><code>extensionId</code>{{optional_inline}}</dt>
+ <dd><code>string</code>. ミュートの状態を最後に変更した拡張機能のIDです。もし拡張機能がミュートの状態の最後の変更の理由でないなら設定されません。</dd>
+ <dt><code>muted</code></dt>
+ <dd><code>boolean</code>. タブが現在ミュートかどうか。Equivalent to whether the muted audio indicator is showing.</dd>
+ <dt><code>reason</code>{{optional_inline}}</dt>
+ <dd>{{WebExtAPIRef('tabs.MutedInfoReason')}}. ミュートもしくはアンピューとに設定された理由。Not set if the tab's muted state has never been changed.</dd>
+</dl>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+
+
+<p>{{Compat("webextensions.api.tabs.MutedInfo")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/tabs#type-MutedInfo"><code>chrome.tabs</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/mutedinforeason/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/mutedinforeason/index.html
new file mode 100644
index 0000000000..3a838233b6
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/mutedinforeason/index.html
@@ -0,0 +1,67 @@
+---
+title: tabs.MutedInfoReason
+slug: Mozilla/Add-ons/WebExtensions/API/tabs/MutedInfoReason
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/MutedInfoReason
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>タブがミュート・アンミュートになった理由を指定します。</p>
+
+<h2 id="型">型</h2>
+
+<p>値のタイプは文字列型です。可能な値:</p>
+
+<dl>
+ <dt>"capture"</dt>
+ <dd>タブのキャプチャが開始され、ミュート状態に強いられました。</dd>
+ <dt>"extension"</dt>
+ <dd>拡張機能がミュート状態に設定しました。もしこれが理由なら、{{WebExtAPIRef("tabs.mutedInfo")}}の<code>extensionId</code>が責任のある拡張機能のIDを含んでいます。</dd>
+ <dt>"user"</dt>
+ <dd>ユーザがミュート状態に設定しました。</dd>
+</dl>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+
+
+<p>{{Compat("webextensions.api.tabs.MutedInfoReason")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>このAPIはChromiumの<a href="https://developer.chrome.com/extensions/tabs#type-MutedInfoReason"><code>chrome.tabs</code></a> APIに基づいています。このドキュメントはChromiumコードの<a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a>から派生したものです。</p>
+
+<p>Microsoft Edgeの互換性データはMicrosoft Corporationから提供されており、Creative Commons Attribution 3.0 United States Licenseのもとにここに含まれています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/oncreated/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/oncreated/index.html
new file mode 100644
index 0000000000..2113436fa6
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/oncreated/index.html
@@ -0,0 +1,100 @@
+---
+title: tabs.onCreated
+slug: Mozilla/Add-ons/WebExtensions/API/tabs/onCreated
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onCreated
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>タブが生成されたときに発火します。</p>
+
+<p>イベントが発火したとき、タブはURLを渡されていないかもしれないことに注意してください。特に、Firefoxは新しいページを読み込み前に新しいタブを"about:blank"で開きます。URLがセットされたときを通知されるために{{WebExtAPIRef("tabs.onUpdated")}}イベントをリッスンすることができます。</p>
+
+<h2 id="書式">書式</h2>
+
+<pre class="syntaxbox brush:js">browser.tabs.onCreated.addListener(callback)
+browser.tabs.onCreated.removeListener(listener)
+browser.tabs.onCreated.hasListener(listener)
+</pre>
+
+<p>イベントは3つの関数を持ちます:</p>
+
+<dl>
+ <dt><code>addListener(callback)</code></dt>
+ <dd>このイベントにリスナーを追加します。</dd>
+ <dt><code>removeListener(listener)</code></dt>
+ <dd>このイベントのリスニングを停止します。引数<code>listener</code>は削除するリスナーです。</dd>
+ <dt><code>hasListener(listener)</code></dt>
+ <dd><code>listener</code>がこのイベントに登録されているかを調べます。リスニング中であれば<code>true</code>を返し、そうでなければ<code>false</code>を返します</dd>
+</dl>
+
+<h2 id="addListenerの書式">addListenerの書式</h2>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>callback</code></dt>
+ <dd>
+ <p>このイベントが発生したときに呼び出される関数です。関数は次の引数を渡されます:</p>
+
+ <dl class="reference-values">
+ <dt><code>tab</code></dt>
+ <dd>{{WebExtAPIRef('tabs.Tab')}}。生成されたタブの詳細です。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="例">例</h2>
+
+<p>新しく作られたタブのログを生成します:</p>
+
+<pre class="brush: js">function handleCreated(tab) {
+ console.log(tab.id);
+}
+
+browser.tabs.onCreated.addListener(handleCreated);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+
+
+<p>{{Compat("webextensions.api.tabs.onCreated")}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>このAPIはChromiumの<a href="https://developer.chrome.com/extensions/tabs#event-onCreated"><code>chrome.tabs</code></a> APIに基づいています。このドキュメンテーションはChromium codeの中の<a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a>からの派生です。</p>
+
+<p>Microsoft Edgeの互換性データはMicrosoft Corporationから提供されており、ここにthe Creative Commons Attribution 3.0 United States Licenseのもとで含まれています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/query/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/query/index.html
new file mode 100644
index 0000000000..9b8dfc5a2a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/query/index.html
@@ -0,0 +1,216 @@
+---
+title: tabs.query()
+slug: Mozilla/Add-ons/WebExtensions/API/tabs/query
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/query
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>指定されたプロパティを持つ全てのタブを取得します。何も指定しない場合、全てのタブを取得します。</p>
+
+<p>この関数は <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js notranslate">var querying = browser.tabs.query(
+ queryInfo // object
+)
+</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>queryInfo</code></dt>
+ <dd><code>object</code>. <code>query()</code> 関数はここで指定されたプロパティにマッチするタブだけを取得します。 このプロパティについての詳細は {{WebExtAPIRef("tabs.Tab")}} を参照してください。</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>active</code>{{optional_inline}}</dt>
+ <dd><code>boolean</code>. 各ウインドウの中でアクティブかどうか。</dd>
+ <dt><code>audible</code>{{optional_inline}}</dt>
+ <dd><code>boolean</code>. 音が鳴っているか。</dd>
+ <dt><code>autoDiscardable</code>{{optional_inline}}</dt>
+ <dd><code>boolean</code>. リソースが少なくなったときにブラウザーによって自動的にdiscardできるか。</dd>
+ <dt><code>cookieStoreId</code> {{optional_inline}}</dt>
+ <dd><code>string</code>. CookieストアのIDが <code>cookieStoreId</code> なタブのみを返すために使います。このオプションは <code>"cookies"</code> <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a>を持つ拡張でのみ使用できます。</dd>
+ <dt><code>currentWindow</code>{{optional_inline}}</dt>
+ <dd><code>boolean</code>. カレントウインドウの中のタブか。</dd>
+ <dt><code>discarded</code>{{optional_inline}}</dt>
+ <dd><code>boolean</code>. タブがdiscardされているか。 discardされたタブはコンテンツがメモリからアンロードされているが、タブの一覧には表示されたままになります。コンテンツはタブが次にアクティブになったときにリロードされます。</dd>
+ <dt><code>highlighted</code>{{optional_inline}}</dt>
+ <dd><code>boolean</code>. ハイライトされているか。</dd>
+ <dt><code>index</code>{{optional_inline}}</dt>
+ <dd><code>integer</code>. ウィンドウの中での位置。</dd>
+ <dt><code>muted</code>{{optional_inline}}</dt>
+ <dd><code>boolean</code>. ミュートされているか。</dd>
+ <dt><code>lastFocusedWindow</code>{{optional_inline}}</dt>
+ <dd><code>boolean</code>. 最後にフォーカスされたウインドウのタブか。</dd>
+ <dt><code>openerTabId</code>{{optional_inline}}</dt>
+ <dd><code>integer</code>. そのタブを開いたタブのID。</dd>
+ <dt><code>pinned</code>{{optional_inline}}</dt>
+ <dd><code>boolean</code>. ピン留めされているか。</dd>
+ <dt><code>status</code>{{optional_inline}}</dt>
+ <dd>{{WebExtAPIRef('tabs.TabStatus')}}. ロードが完了しているか。</dd>
+ <dt><code>title</code>{{optional_inline}}</dt>
+ <dd><code>string</code>. ページのタイトル。</dd>
+ <dt><code>url</code>{{optional_inline}}</dt>
+ <dd><code><code>string</code></code> もしくは <code><code>array</code> of <code><code>string</code></code></code>. 1つ以上の<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">マッチパターン</a>にマッチするタブか。フラグメント識別子にはマッチしません。</dd>
+ <dt><code>windowId</code>{{optional_inline}}</dt>
+ <dd><code>integer</code>. そのウインドウのID。カレントウインドウの場合は、 {{WebExtAPIRef('windows.WINDOW_ID_CURRENT')}} 。</dd>
+ <dt><code>windowType</code>{{optional_inline}}</dt>
+ <dd>{{WebExtAPIRef('tabs.WindowType')}}. そのタブの属するウインドウの種類。</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>マッチしたタブの情報を持つ <code>{{WebExtAPIRef('tabs.Tab')}}</code> オブジェクトの <code>array</code> に解決される <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>。</p>
+
+<p>エラーが発生した場合、その Promise はエラーメッセージとともに却下されます。</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.tabs.query", 10)}}</p>
+
+<h2 id="例">例</h2>
+
+<p>全てのタブを取得する例:</p>
+
+<pre class="brush: js notranslate">function logTabs(tabs) {
+ for (let tab of tabs) {
+ // tab.url requires the `tabs` permission
+ console.log(tab.url);
+ }
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var querying = browser.tabs.query({});
+querying.then(logTabs, onError);</pre>
+
+<p>カレントウインドウの全てのタブを取得する例:</p>
+
+<pre class="brush: js notranslate">function logTabs(tabs) {
+ for (let tab of tabs) {
+ // tab.url requires the `tabs` permission
+ console.log(tab.url);
+ }
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var querying = browser.tabs.query({currentWindow: true});
+querying.then(logTabs, onError);</pre>
+
+<p>カレントウインドウのアクティブなタブを取得する例:</p>
+
+<pre class="brush: js notranslate">function logTabs(tabs) {
+ for (let tab of tabs) {
+ // tab.url requires the `tabs` permission
+ console.log(tab.url);
+ }
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var querying = browser.tabs.query({currentWindow: true, active: true});
+querying.then(logTabs, onError);</pre>
+
+<p>"mozilla.org" またはそのサブドメイン下のHTTP/HTTPS URLを開いている全てのタブを取得する例:</p>
+
+<pre class="brush: js notranslate">function logTabs(tabs) {
+ for (let tab of tabs) {
+ // tab.url requires the `tabs` permission
+ console.log(tab.url);
+ }
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var querying = browser.tabs.query({url: "*://*.mozilla.org/*"});
+querying.then(logTabs, onError);</pre>
+
+<p>moz-extension:// URLを開いている全てのタブを取得する例:</p>
+
+<pre class="brush: js notranslate">function logTabs(tabs) {
+ console.log(tabs);
+ for (let tab of tabs) {
+ // tab.url requires the `tabs` permission
+ console.log(tab.url);
+ }
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var querying = browser.tabs.query({url: "moz-extension://*/*"});
+querying.then(logTabs, onError);
+</pre>
+
+<p>この拡張機能のURLを開いている全てのタブを取得する例:</p>
+
+<pre class="brush: js notranslate">function logTabs(tabs) {
+ console.log(tabs);
+ for (let tab of tabs) {
+ // tab.url requires the `tabs` permission
+ console.log(tab.url);
+ }
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var querying = browser.tabs.query({url: browser.extension.getURL("*")});
+querying.then(logTabs, onError);
+</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>この API は Chromium の <a class="external external-icon" href="https://developer.chrome.com/extensions/tabs#method-duplicate"><code>chrome.tabs</code></a> APIに基づいています。 This documentation is derived from <a class="external external-icon" href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre class="notranslate">// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/remove/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/remove/index.html
new file mode 100644
index 0000000000..16c3419265
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/remove/index.html
@@ -0,0 +1,102 @@
+---
+title: tabs.remove()
+slug: Mozilla/Add-ons/WebExtensions/API/tabs/remove
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/remove
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>1つ以上のタブを閉じます。</p>
+
+<p>この関数は <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返す非同期関数です。</p>
+
+<h2 id="構文">構文</h2>
+
+<pre class="syntaxbox brush:js">var removing = browser.tabs.remove(
+ tabIds // integer or integer array
+)
+</pre>
+
+<h3 id="パラメータ">パラメータ</h3>
+
+<dl>
+ <dt><code>tabIds</code></dt>
+ <dd><code><code>integer</code></code> または <code><code>array</code> of <code><code>integer</code></code></code>. 閉じるタブのIDを指定します。</dd>
+</dl>
+
+<h3 id="戻り値">戻り値</h3>
+
+<p>A <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> that will be fulfilled with no arguments when all the specified tabs have been removed or their <code>beforeunload</code> prompts have been handled. If any error occurs, the promise will be rejected with an error message.</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.tabs.remove")}}</p>
+
+<h2 id="例">例</h2>
+
+<p>タブを1つだけ閉じる場合:</p>
+
+<pre class="brush: js">function onRemoved() {
+ console.log(`Removed`);
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var removing = browser.tabs.remove(2);
+removing.then(onRemoved, onError);</pre>
+
+<p>複数のタブを閉じる場合:</p>
+
+<pre class="brush: js">function onRemoved() {
+ console.log(`Removed`);
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+var removing = browser.tabs.remove([15, 14, 1]);
+removing.then(onRemoved, onError);</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>この API は Chromium の <a href="https://developer.chrome.com/extensions/tabs#method-remove"><code>chrome.tabs</code></a> APIに基づいています。 This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge での実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/tabs/tab/index.html b/files/ja/mozilla/add-ons/webextensions/api/tabs/tab/index.html
new file mode 100644
index 0000000000..fcab149353
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/tabs/tab/index.html
@@ -0,0 +1,128 @@
+---
+title: tabs.Tab
+slug: Mozilla/Add-ons/WebExtensions/API/tabs/Tab
+translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/Tab
+---
+<div>{{AddonSidebar()}}</div>
+
+<p><strong><code>tabs.Tab</code></strong>型はタブについての情報を含んでいます。これはタブの中のコンテンツについての情報へのアクセスを提供します。例えば、コンテンツはどれくらいの大きさか、どのような特別な状態もしくは制限が有効になっているか、など。</p>
+
+<h2 id="Type">Type</h2>
+
+<p>この型の値はオブジェクトです。以下のプロパティを含みます:</p>
+
+<dl class="reference-values">
+ <dt><code>active</code></dt>
+ <dd>
+ <p><code>boolean</code>. タブがウィンドウ内でアクティブかどうかを示します。タブのウィンドウがフォーカスされていない場合でも当てはまります。</p>
+
+ <p>アクティブなタブは通常一つ検出されます。しかしながら、Firefox for Android上では、拡張機能のポップアップが新しいタブの中で開かれます。このポップアップタブが検出されたとき、アクティブなタブはポップアップが開かれたタブに代えられます。</p>
+ </dd>
+ <dt><code>attention</code> {{optional_inline}}</dt>
+ <dd><code>boolean</code>. タブが注目を集めているかを示します。例えば、タブがモーダルダイアログを表示したとき、<code>attention</code>は<code>true</code>になります。</dd>
+ <dt><code>audible</code> {{optional_inline}}</dt>
+ <dd><code>boolean</code>. タブがミュートではないとき: タブが音を作り出すかどうかです。タブがミュートであるとき: タブがミュートでないなら、音を作り出せたかどうかです。</dd>
+ <dt><code>autoDiscardable</code> {{optional_inline}}</dt>
+ <dd><code>boolean</code>. Whether the tab can be discarded automatically by the browser when resources are low.</dd>
+ <dt><code>cookieStoreId</code> {{optional_inline}}</dt>
+ <dd><code>string</code>. タブのクッキーストア。If different tabs can have different cookie stores (for example, to support <a href="https://wiki.mozilla.org/Security/Contextual_Identity_Project/Containers">contextual identity</a>), you can pass this as the <code>storeId</code> option into various methods of the {{WebExtAPIRef("cookies")}} API, to set and get cookies associated with this tab's cookie store. Only present if the extension has the <code>"cookies"</code> <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a>.</dd>
+ <dt><code>discarded</code> {{optional_inline}}</dt>
+ <dd><code>boolean</code>. タブが破棄されたか。 A discarded tab is one whose content has been unloaded from memory, but is still visible in the tab strip. Its content gets reloaded the next time it's activated.</dd>
+ <dt><code>favIconUrl</code> {{optional_inline}}</dt>
+ <dd><code>string</code>. タブのfaviconのURL。Only present if the extension has the <code>"tabs"</code> <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a>. It may also be an empty string if the tab is loading.</dd>
+ <dt><code>height</code> {{optional_inline}}</dt>
+ <dd><code>integer</code>. タブの高さのピクセル値。</dd>
+ <dt><code>hidden</code></dt>
+ <dd><code>boolean</code>. タブが隠されている(非表示)かどうか。</dd>
+ <dt><code>highlighted</code></dt>
+ <dd>
+ <p><code>boolean</code>. タブがハイライトされているかどうかどうか。 An active tab is always highlighted, but some browsers may allow additional tabs to be highlighted, for example by clicking them while holding <kbd>Ctrl</kbd> or <kbd>⌘ Command</kbd> keys.</p>
+
+ <p>Firefox for Android doesn't support highlighting multiple tabs, and Firefox desktop requires the <code>browser.tabs.multiselect</code> preference.</p>
+ </dd>
+ <dt><code>id</code> {{optional_inline}}</dt>
+ <dd><code>integer</code>. タブのID。 タブのIDはブラウザセッショの中でユニークです。The tab ID may also be set to {{WebExtAPIRef('tabs.TAB_ID_NONE')}} for browser windows that don't host content tabs (for example, devtools windows).</dd>
+ <dt><code>incognito</code></dt>
+ <dd><code>boolean</code>. タブがプライベートブラウジングウィンドウの中にあるかどうか。</dd>
+ <dt><code>index</code></dt>
+ <dd><code>integer</code>. 0を底としたウィンドウの中のタブのインデックス。</dd>
+ <dt><code>isArticle</code></dt>
+ <dd><code>boolean</code>. Trueなら<a href="/en-US/Add-ons/WebExtensions/API/tabs/toggleReaderMode">rendered in Reader Mode</a>で閲覧可能、falseならそれ以外。</dd>
+ <dt><code>isInReaderMode</code></dt>
+ <dd><code>boolean</code>. Trueなら<a href="/en-US/Add-ons/WebExtensions/API/tabs/toggleReaderMode">rendered in Reader Mode</a>で閲覧中、falseならそれ以外。</dd>
+ <dt><code>lastAccessed</code></dt>
+ <dd><code>double</code>. タブが最後にアクセスされた時刻(単位: <a class="external external-icon" href="https://en.wikipedia.org/wiki/Unix_time">milliseconds since the epoch</a>)。</dd>
+ <dt><code>mutedInfo</code> {{optional_inline}}</dt>
+ <dd>{{WebExtAPIRef('tabs.MutedInfo')}}. The current muted state for the tab and the reason for the last state change.</dd>
+ <dt><code>openerTabId</code> {{optional_inline}}</dt>
+ <dd><code>integer</code>. The ID of the tab that opened this tab, if any. This property is only present if the opener tab still exists.</dd>
+ <dt><code>pinned</code></dt>
+ <dd><code>boolean</code>. タブがピン留めされているかどうか。</dd>
+ <dt><code>selected</code> {{deprecated_inline}}</dt>
+ <dd><code>boolean</code>. タブが選択されているかどうか。</dd>
+ <dt><code>sessionId</code> {{optional_inline}}</dt>
+ <dd><code>string</code>. The session ID used to uniquely identify a <code>Tab</code> obtained from the {{WebExtAPIRef('sessions')}} API.</dd>
+ <dt><code>status</code> {{optional_inline}}</dt>
+ <dd><code>string</code>. <em>loading</em> か <em>complete</em> のどちらか。</dd>
+ <dt><code>successorId</code> {{optional_inline}}</dt>
+ <dd><code>integer</code> タブの後継者のID。</dd>
+ <dt><code>title</code> {{optional_inline}}</dt>
+ <dd><code>string</code>. タブのタイトル。Only present if the extension has the <code>"tabs"</code> <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a>.</dd>
+ <dt><code>url</code> {{optional_inline}}</dt>
+ <dd><code>string</code>. タブが表示しているドキュメントのURL。Only present if the extension has the <code>"tabs"</code> <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a>.</dd>
+ <dt><code>width</code> {{optional_inline}}</dt>
+ <dd><code>integer</code>. タブの横幅のピクセル値。</dd>
+ <dt><code>windowId</code></dt>
+ <dd><code>integer</code>. このタブのホストのウィンドウのID。</dd>
+ <dt>
+ <div class="blockIndicator note">
+ <p>Note: In extension background scripts, the only properties that are available are tabId and <strong>windowId.</strong></p>
+ </div>
+ </dt>
+</dl>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.tabs.Tab", 10)}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/tabs#type-Tab"><code>chrome.tabs</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/theme/index.html b/files/ja/mozilla/add-ons/webextensions/api/theme/index.html
new file mode 100644
index 0000000000..a2b90cb140
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/theme/index.html
@@ -0,0 +1,50 @@
+---
+title: theme
+slug: Mozilla/Add-ons/WebExtensions/API/theme
+tags:
+ - Extensions
+ - Themes
+ - WebExtensions
+ - add-on
+translation_of: Mozilla/Add-ons/WebExtensions/API/theme
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ブラウザー拡張機能がブラウザーのテーマを更新できるようにします。</p>
+
+<p>この API を使用するには、拡張機能の <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> ファイルで "theme" <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a> を要求しなければなりません。</p>
+
+<div class="note">
+<p>注記: バックグランドファイルでテーマをセットアップする場合、'theme' <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>を宣言しなければなりません。さもなければ、manifest の <a href="/ja/Add-ons/WebExtensions/manifest.json/theme">theme</a> 関数を使用できません。</p>
+</div>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("theme.Theme")}}</dt>
+ <dd>テーマのコンテンツを表します。</dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("theme.getCurrent()")}}</dt>
+ <dd>現在のブラウザーテーマを取得します。</dd>
+ <dt>{{WebExtAPIRef("theme.update()")}}</dt>
+ <dd>ブラウザーのテーマを更新します。</dd>
+ <dt>{{WebExtAPIRef("theme.reset()")}}</dt>
+ <dd>{{WebExtAPIRef("theme.update()")}} の呼び出しで更新されたテーマをすべて削除します。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("theme.onUpdated")}}</dt>
+ <dd>ブラウザーテーマが変更された時に発火。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの実装状況</h2>
+
+<p>{{Compat("webextensions.api.theme")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/topsites/index.html b/files/ja/mozilla/add-ons/webextensions/api/topsites/index.html
new file mode 100644
index 0000000000..5ee5e4386f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/topsites/index.html
@@ -0,0 +1,79 @@
+---
+title: topSites
+slug: Mozilla/Add-ons/WebExtensions/API/topSites
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - topSites
+translation_of: Mozilla/Add-ons/WebExtensions/API/topSites
+---
+<div>{{AddonSidebar}}</div>
+
+<p>topSites API を使うと、ユーザーがよく訪れるページをを含む配列を取得できます。</p>
+
+<p>ブラウザーはユーザーがこれらの場所に簡単に戻れるようにこれを維持します。Firefoxでは既定で「新しいタブ」ページには最もよく訪れるページのリストが提供されます。</p>
+
+<p>topSites API を使うには "topSites" の <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API パーミッション</a>必要です。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("topSites.MostVisitedURL")}}</dt>
+ <dd>ウェブサイトのタイトルと URLを含むオブジェクト。</dd>
+</dl>
+
+<h2 id="Methods">Methods</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("topSites.get()")}}</dt>
+ <dd>ブラウザーの「新しいタブ」ページに載っているすべてのサイトの配列を取得します。ここで返されるサイトの数はブラウザー固有であり、返されるサイトは、ブラウザー履歴に基づいてユーザー固有であることに注意してください。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p>{{Compat("webextensions.api.topSites")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/topSites"><code>chrome.topSites</code></a> API.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/types/index.html b/files/ja/mozilla/add-ons/webextensions/api/types/index.html
new file mode 100644
index 0000000000..939451faf1
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/types/index.html
@@ -0,0 +1,64 @@
+---
+title: types
+slug: Mozilla/Add-ons/WebExtensions/API/types
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Reference
+ - Types
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API/types
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ブラウザー設定を表すのに使われる <code>BrowserSetting</code> 型を定義します。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("types.BrowserSetting")}}</dt>
+ <dd>ブラウザー設定を表現します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/types"><code>chrome.types</code></a> API.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/webnavigation/index.html b/files/ja/mozilla/add-ons/webextensions/api/webnavigation/index.html
new file mode 100644
index 0000000000..4edae83299
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/webnavigation/index.html
@@ -0,0 +1,143 @@
+---
+title: webNavigation
+slug: Mozilla/Add-ons/WebExtensions/API/webNavigation
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - webNavigation
+translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ナビゲーションのいろいろな段階でイベントリスナーを追加します。ナビゲーションにはある URL から他に移動するブラウザーフレームにより成り立っていて、それは(いつもではなく)通常はリンクのクリックやロケーションバーへの URL 入力といったユーザー操作の応答として発生します。</p>
+
+<p>{{WebExtAPIRef("webRequest")}} API と比較して: ナビゲーションは通常、ブラウザーにウェブリクエストを発生させますが、webRequest API は HTTP 層からの低レベルな観点に関心を持っており、一方で webNavigation API はブラウザー UI 自身に対して、より関心を持っています。</p>
+
+<p>それぞれのイベントはナビゲーションの特定のステージに対応しています。イベントシーケンスは次の通りです:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/13374/we-flow.png" style="display: block; height: 562px; margin-left: auto; margin-right: auto; width: 745px;"></p>
+
+<ul>
+ <li>主なフローは次の通り:
+ <ul>
+ <li><code>{{WebExtAPIRef("webNavigation.onBeforeNavigate", "onBeforeNavigate")}}</code></li>
+ <li><code>{{WebExtAPIRef("webNavigation.onCommitted", "onCommitted")}}</code></li>
+ <li><code>{{WebExtAPIRef("webNavigation.onDOMContentLoaded", "onDOMContentLoaded")}}</code></li>
+ <li><code>{{WebExtAPIRef("webNavigation.onCompleted", "onCompleted")}}</code>.</li>
+ </ul>
+ </li>
+ <li>追加のものは次の通り:
+ <ul>
+ <li><code>{{WebExtAPIRef("webNavigation.onCreatedNavigationTarget", "onCreatedNavigationTarget")}}</code> は、ブラウザーがナビゲーション用にタブやウィンドウを作成する必要がある場合 (例えば、ユーザーがリンクを新しいタブで開いたために)、<code>onBeforeNavigate</code> の前に発火します。</li>
+ <li>{{WebExtAPIRef("webNavigation.onHistoryStateUpdated", "onHistoryStateUpdated")}} はページが <a href="http://diveintohtml5.info/history.html">history API</a> を使ってブラウザーのロケーションバーに表示された URL を更新する場合に発火します。</li>
+ <li>{{WebExtAPIRef("webNavigation.onReferenceFragmentUpdated", "onReferenceFragmentUpdated")}} はページの <a href="https://en.wikipedia.org/wiki/Fragment_identifier">fragment identifier</a> が変更された場合に発火します。</li>
+ <li>{{WebExtAPIRef("webNavigation.onErrorOccurred", "onErrorOccurred")}} はあらゆる場所で発火します。</li>
+ </ul>
+ </li>
+</ul>
+
+<p>それぞれのナビゲーションは特定のブラウザーフレーム内の URL の遷移です。ブラウザーフレームはタブ ID とフレーム ID で識別されます。フレームはタブ内の再上位のブラウジングコンテキストである場合や、<a href="/ja/docs/Web/HTML/Element/iframe">iframe</a> として実装されたネストされたブラウジングコンテキストである場合があります。</p>
+
+<p>それぞれのイベントの <code>addListener()</code> の呼び出しはオプションの filter パラメーターを受け入れます。filter は 1 つ以上の URL パターンを指定し、イベントはターゲット URL がパターンにマッチしたナビゲーションの時だけに発火します。</p>
+
+<p><code>onCommitted</code> イベントリスナーには 2 つの追加プロパティが渡されます: ナビゲーションの原因 (例えばユーザーがリンクをクリックしたり、ユーザーがブックマークを選んだり) を示す{{WebExtAPIRef("webNavigation.TransitionType","TransitionType")}} と、ナビゲーションの詳細情報を提供する{{WebExtAPIRef("webNavigation.TransitionQualifier","TransitionQualifier")}} です。</p>
+
+<p>この API を使うには"webNavigation" <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>が必要です。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("webNavigation.TransitionType")}}</dt>
+ <dd>ナビゲーションの原因: 例えば、ユーザーがリンクをクリックしたり、アドレスを入力したり、ブックマークをクリックしたりなど。</dd>
+ <dt>{{WebExtAPIRef("webNavigation.TransitionQualifier")}}</dt>
+ <dd>
+ <div>遷移の追加情報</div>
+ </dd>
+</dl>
+
+<h2 id="Functions" name="Functions">関数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("webNavigation.getFrame()")}}</dt>
+ <dd>特定フレームについての情報を取得します。フレームにはタブ内のトップレベルのフレームや、ネストされた <a href="https://developer.mozilla.org/ja/docs/Web/HTML/Element/iframe">iframe</a> であり、タブ ID とフレーム ID でユニークに識別されます。</dd>
+ <dt>{{WebExtAPIRef("webNavigation.getAllFrames()")}}</dt>
+ <dd>
+ <p>タブ ID を指定すると、そのタブに含まれているすべてのフレームの情報を取得します。</p>
+ </dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("webNavigation.onBeforeNavigate")}}</dt>
+ <dd>
+ <p>ブラウザーがナビゲーションイベントを開始する直前に発火します。</p>
+ </dd>
+ <dt>{{WebExtAPIRef("webNavigation.onCommitted")}}</dt>
+ <dd>ナビゲーションがコミットされたときに発火します。少なくともサーバーから新しい document がいくらか取得されてブラウザーが新document に切り替えると決決めたとき。</dd>
+ <dt>{{WebExtAPIRef("webNavigation.onDOMContentLoaded")}}</dt>
+ <dd>ページ内で <a href="https://developer.mozilla.org/ja/docs/Web/Events/DOMContentLoaded">DOMContentLoaded</a> イベントが発火したときに発火します。</dd>
+ <dt>{{WebExtAPIRef("webNavigation.onCompleted")}}</dt>
+ <dd>document と、それが参照するリソースが完全にロードされて初期化されたときに発火します。これは DOM <code><a href="https://developer.mozilla.org/ja/docs/Web/Events/load">load</a></code> イベントと等価です。</dd>
+ <dt>{{WebExtAPIRef("webNavigation.onErrorOccurred")}}</dt>
+ <dd>エラーが起こってナビゲーションが停止したときに発火します。これはネットワークエラーが起きたときや、ユーザーがナビゲーションを停止したときのいずれかで起こりえます。</dd>
+ <dt>{{WebExtAPIRef("webNavigation.onCreatedNavigationTarget")}}</dt>
+ <dd>新しいウィンドウや、既存のウィンドウ内の新規タブが作成されてナビゲーションをホストするときに発火します: 例えば、ユーザーが新しいタブでリンクを開いた場合。</dd>
+ <dt>{{WebExtAPIRef("webNavigation.onReferenceFragmentUpdated")}}</dt>
+ <dd>ページの <a class="external-icon external" href="https://en.wikipedia.org/wiki/Fragment_identifier">fragment identifier</a> が変化したときに発火します。</dd>
+ <dt>{{WebExtAPIRef("webNavigation.onTabReplaced")}}</dt>
+ <dd>
+ <p>タブのコンテンツが別のタブ (通常は以前レンダリング済みのもの) に置き換えられるときに発火します。</p>
+ </dd>
+ <dt>{{WebExtAPIRef("webNavigation.onHistoryStateUpdated")}}</dt>
+ <dd>ページで <a class="external external-icon" href="http://diveintohtml5.info/history.html">history API</a> を使ってブラウザーのロケーションバーの URL が更新されたときに発火します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.api.webNavigation")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre class="notranslate">// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/webrequest/index.html b/files/ja/mozilla/add-ons/webextensions/api/webrequest/index.html
new file mode 100644
index 0000000000..0495dcb7cf
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/webrequest/index.html
@@ -0,0 +1,200 @@
+---
+title: webRequest
+slug: Mozilla/Add-ons/WebExtensions/API/webRequest
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - webRequest
+translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest
+---
+<div>{{AddonSidebar}}</div>
+
+<p>websocket が ws:// and wss:// としてリクエストするものも含めた、HTTP リクエスト作成のいろいろなステージでイベントリスナーを追加します。イベントリスナーはリクエストの詳細情報を受け取ったり、リクエストを編集、修正したりします。</p>
+
+<p>それぞれのイベントはリクエストの特定ステージで発火します。イベントの典型的なシーケンスは次のようなものです:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/13376/webRequest-flow.png" style="display: block; height: 680px; margin-left: auto; margin-right: auto; width: 624px;"></p>
+
+<p>{{WebExtAPIRef("webRequest.onErrorOccurred", "onErrorOccurred")}} はリクエストの期間中のあらゆる時に発火します。また注意点としてイベントシーケンスがこれと違うこともあります: 例えば、Firefox では、<a href="/ja/docs/Web/HTTP/Headers/Strict-Transport-Security">HSTS</a> 更新の時には、<code>onBeforeRequest</code> のすぐ後に <code>onBeforeRedirect</code> イベントが発火します。</p>
+
+<p><code>onErrorOccurred</code> を除くすべてのイベントは <code>addListener()</code> への次の 3 つの引数を取ります:</p>
+
+<ul>
+ <li>リスナー自身</li>
+ <li>{{WebExtAPIRef("webRequest.RequestFilter", "filter")}} オブジェクト、これを使って特定の URL や特定のリソースタイプにリクエストされた時だけに通知を受けられます。</li>
+ <li>オプションの <code>extraInfoSpec</code> オブジェクト。これを使ってイベントに固有な追加の命令を渡せます。</li>
+</ul>
+
+<p>リスナー関数はリクエストの情報を含む <code>details</code> オブジェクトを渡されます。これにはリクエスト ID が入っていて、その ID でアドオンは単一のリクエストとイベントを関連付けられます。これはブラウザーセッションとアドオンのコンテキストごとにユニークです。リダイレクトと認証交換であっても、リクエストを通じて同じ値を保ちます。</p>
+
+<p>あるホストに webRequest API を使うには、拡張機能は "webRequest" <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API パーミッション</a> とそのホストの <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">host パーミッション</a> を持たねばなりません。「ブロッキング」機能を使うためには、拡張機能は "webRequestBlocking" API 権限も必要です。</p>
+
+<p>ページに読み込まれるリソース (例えば画像、スクリプト、スタイルシート) を中断するには、拡張機能はそのメインページと同様にリソースの host パーミッションも持っている必要があります。例えば、"https://developer.mozilla.org" のページが "https://mdn.mozillademos.org" から画像を読み込む場合、画像のリクエストを中断するには拡張機能は両方の host パーミッションを持たねばなりません。</p>
+
+<h2 id="Modifying_requests" name="Modifying_requests">リクエストを修正する</h2>
+
+<p>いくつかのイベントでは、リクエストを修正できます。特に、次のことが可能:</p>
+
+<ul>
+ <li>次の API でリクエストをキャンセル:
+ <ul>
+ <li>{{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}</li>
+ <li>{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}</li>
+ <li>{{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}</li>
+ </ul>
+ </li>
+ <li>次の API でリクエストをリダイレクト:
+ <ul>
+ <li>{{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}</li>
+ <li>{{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}</li>
+ </ul>
+ </li>
+ <li>次の API でリクエストヘッダーの修正:
+ <ul>
+ <li>{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}</li>
+ </ul>
+ </li>
+ <li>次の API でレスポンスヘッダーの修正:
+ <ul>
+ <li>{{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}</li>
+ </ul>
+ </li>
+ <li>次の API で認証クレデンシャルの提供:
+ <ul>
+ <li>{{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<p>これを行うには、イベント <code>addListener()</code> の <code>extraInfoSpec</code> の引数に"blocking"の値のオプションを渡す必要があります。これによりリスナーが同期します。このリスナーでは {{WebExtAPIRef("webRequest.BlockingResponse", "BlockingResponse")}} オブジェクトを返すことができ、このオブジェクトは加えた修正を指し示します: 例えば、送信したい修正後のリクエストヘッダーなど。</p>
+
+<div class="blockIndicator warning">
+<p><strong>Warning</strong>: Non-HTTP(S) protocols do not currently support <code>"blocking"</code> functionality, so modifying these requests is not available at this time. See {{bug(1475832)}} for more details.</p>
+</div>
+
+<h2 id="Accessing_security_information" name="Accessing_security_information">セキュリティ情報へのアクセス</h2>
+
+<p>{{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}} リスナー内では、{{WebExtAPIRef("webRequest.getSecurityInfo()", "getSecurityInfo()")}} を呼ぶことで <a href="https://wiki.developer.mozilla.org/ja/docs/Glossary/TLS">TLS</a> にアクセスできます。これを行うには、イベントの <code>addListener()</code> の <code>extraInfoSpec</code> 引数に"blocking" を渡す必要もあります。</p>
+
+<p>TLS ハンドシェイクについて詳しく読むことができますが、修正したり、ブラウザーのトラストな決定を上書きできません。</p>
+
+<h2 id="Modifying_responses" name="Modifying_responses">レスポンスを修正する</h2>
+
+<p>{{WebExtAPIRef("webRequest.filterResponseData")}} にリクエスト ID を渡すことで得られる {{WebExtAPIRef("webRequest.StreamFilter")}} を使うと、ブラウザーが受け取った HTTP リクエストのレスポンス本文を検査したり修正したりすることができます。</p>
+
+<p>そのためには、"webRequestBlocking" パーミッションと "webRequest" <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API パーミッション</a> 、さらに修正したい対象のリクエスト URL にあてはまる <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">host permission </a>権限を得ている必要があります。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("webRequest.BlockingResponse")}}</dt>
+ <dd>
+ <p>この型のオブジェクトは、イベントリスナーによって <code>extraInfoSpec</code> 引数にて<code>"blocking"</code> をセットして返されます。<code>BlockingResponse</code> プロパティに特定の値をセットすることで、リスナーはネットワークリクエストを変更できます。</p>
+ </dd>
+ <dt>{{WebExtAPIRef("webRequest.CertificateInfo")}}</dt>
+ <dd>単一の X.509 証明書を記述するオブジェクト。</dd>
+ <dt>{{WebExtAPIRef("webRequest.HttpHeaders")}}</dt>
+ <dd>HTTP ヘッダーの配列。それぞれのヘッダーは 2 つのプロパティを持つオブジェクトで表現されます: <code>name</code> と、<code>value</code> か <code>binaryValue</code> のいずれか。</dd>
+ <dt>{{WebExtAPIRef("webRequest.RequestFilter")}}</dt>
+ <dd>webRequest イベントに適用するフィルターを記述するオブジェクト。</dd>
+ <dt>{{WebExtAPIRef("webRequest.ResourceType")}}</dt>
+ <dd>ウェブリクエスト内で取得されるリソースの特定の種類を表す。</dd>
+ <dt>{{WebExtAPIRef("webRequest.SecurityInfo")}}</dt>
+ <dd>特定のウェブリクエストのセキュリティプロパティを記述するオブジェクト。</dd>
+ <dt>{{WebExtAPIRef("webRequest.StreamFilter")}}</dt>
+ <dd>HTTP レスポンスの受信中に、それをモニターしたり修正したりするのに使うオブジェクト。</dd>
+ <dt>{{WebExtAPIRef("webRequest.UploadData")}}</dt>
+ <dd>URL リクエスト内でアップロードされるデータを含む。</dd>
+</dl>
+
+<h2 id="Properties" name="Properties">プロパティ</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}}</dt>
+ <dd>10分間に <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/WebRequest/handlerBehaviorChanged" title="Suppose an add-on's job is to block web requests against a pattern, and the following scenario happens:"><code>handlerBehaviorChanged()</code></a></code> を最大限呼べる回数。</dd>
+</dl>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("webRequest.handlerBehaviorChanged()")}}</dt>
+ <dd>このメソッドは、ページがブラウザーのインメモリーキャッシュ内にあるときに、イベントリスナーが確実に呼べるように使われます。</dd>
+ <dt>{{WebExtAPIRef("webRequest.filterResponseData()")}}</dt>
+ <dd>あるリクエストに対する {{WebExtAPIRef("webRequest.StreamFilter")}} オブジェクトを返します。</dd>
+ <dt>{{WebExtAPIRef("webRequest.getSecurityInfo()")}}</dt>
+ <dd>あるリクエストに対する <a href="https://wiki.developer.mozilla.org/ja/docs/Glossary/TLS">TLS</a> コネクションの詳細情報を返します。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("webRequest.onBeforeRequest")}}</dt>
+ <dd>リクエストがもうすぐなされて、ヘッダーは利用できないときに発火します。リクエストをキャンセルやリダイレクトしたい場合に、ここをリッスンします。</dd>
+ <dt>{{WebExtAPIRef("webRequest.onBeforeSendHeaders")}}</dt>
+ <dd>HTTP データを送信する前だが、HTTP ヘッダーが利用できるときに発火します。HTTP リクエストとヘッダーを修正したい場合に、ここををリッスンします。</dd>
+ <dt>{{WebExtAPIRef("webRequest.onSendHeaders")}}</dt>
+ <dd>ヘッダー送信の直前に発火します。あなたや他の人のアドオンが <code>{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}</code> でヘッダーを修正した場合、ここでは修正後のバージョンが見えるでしょう。</dd>
+ <dt>{{WebExtAPIRef("webRequest.onHeadersReceived")}}</dt>
+ <dd>リクエストに関連する HTTP レスポンスヘッダーを受け取ったときに発火します。HTTP レスポンスヘッダーを修正するのにこのイベントを使用できます。</dd>
+ <dt>{{WebExtAPIRef("webRequest.onAuthRequired")}}</dt>
+ <dd>サーバーがクライアントに認証クレデンシャルを要求するときに発火します。このリスナーは何もしないか、リクエストをキャンセルするか、認証クレデンシャルを供給するかのいずれかです。</dd>
+ <dt>{{WebExtAPIRef("webRequest.onResponseStarted")}}</dt>
+ <dd>レスポンスボディの最初のバイトを受け取ったときに発火します。HTTP リクエストにとって、これはステータスラインとレスポンスヘッダーが利用可能ということになります。</dd>
+ <dt>{{WebExtAPIRef("webRequest.onBeforeRedirect")}}</dt>
+ <dd>サーバーが開始するリダイレクトが起きる直前に発火します。</dd>
+ <dt>{{WebExtAPIRef("webRequest.onCompleted")}}</dt>
+ <dd>リクエストが完了したときに発火します。</dd>
+ <dt>{{WebExtAPIRef("webRequest.onErrorOccurred")}}</dt>
+ <dd>エラーが起きたときに発火します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.api.webRequest")}}</p>
+
+<p><a href="/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities#webRequest_incompatibilities">Extra notes on Chrome incompatibilities</a>.</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/windows/index.html b/files/ja/mozilla/add-ons/webextensions/api/windows/index.html
new file mode 100644
index 0000000000..5b84904cdc
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/windows/index.html
@@ -0,0 +1,117 @@
+---
+title: windows
+slug: Mozilla/Add-ons/WebExtensions/API/windows
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - Non-standard
+ - Reference
+ - WebExtensions
+ - Windows
+translation_of: Mozilla/Add-ons/WebExtensions/API/windows
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ブラウザーウィンドウと相互作用します。この API を使って開いているウィンドウの情報を取得したり、ウィンドウを開き、修正し、閉じることができます。ウィンドウのオープン、クローズ、アクティベートのイベントをリッスンすることもできます。</p>
+
+<h2 id="Types" name="Types">型</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("windows.WindowType")}}</dt>
+ <dd>ブラウザーウィンドウの this の型。</dd>
+ <dt>{{WebExtAPIRef("windows.WindowState")}}</dt>
+ <dd>ブラウザーウィンドウの状態。</dd>
+ <dt>{{WebExtAPIRef("windows.Window")}}</dt>
+ <dd>ブラウザーウィンドウについての情報を含む。</dd>
+ <dt>{{WebExtAPIRef("windows.CreateType")}}</dt>
+ <dd>作成するブラウザーウィンドウの型を指定する。</dd>
+</dl>
+
+<h2 id="Constants" name="Constants">定数</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("windows.WINDOW_ID_NONE")}}</dt>
+ <dd>ブラウザーウィンドウがないことを表す <code>windowId</code> の値。</dd>
+ <dt>{{WebExtAPIRef("windows.WINDOW_ID_CURRENT")}}</dt>
+ <dd>現在のウィンドウを表す <code>windowId</code> の値。</dd>
+</dl>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("windows.get()")}}</dt>
+ <dd>与えられた ID のウィンドウの詳細を取得します。</dd>
+ <dt>{{WebExtAPIRef("windows.getCurrent()")}}</dt>
+ <dd>現在のウィンドウを取得します。</dd>
+ <dt>{{WebExtAPIRef("windows.getLastFocused()")}}</dt>
+ <dd>最も最近フォーカスされたウィンドウを取得します — 典型的には「最上位」のウィンドウです。</dd>
+ <dt>{{WebExtAPIRef("windows.getAll()")}}</dt>
+ <dd>すべてのウィンドウを取得します。</dd>
+ <dt>{{WebExtAPIRef("windows.create()")}}</dt>
+ <dd>
+ <p>新しいウィンドウを作成します。</p>
+ </dd>
+ <dt>{{WebExtAPIRef("windows.update()")}}</dt>
+ <dd>ウィンドウのプロパティを更新します。これを使ってウィンドウの移動、リサイズ、フォーカス(外し)などを行います。</dd>
+ <dt>{{WebExtAPIRef("windows.remove()")}}</dt>
+ <dd>ウィンドウと、そのタブのすべてを閉じます。</dd>
+</dl>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("windows.onCreated")}}</dt>
+ <dd>ウィンドウが作成された時に発火します。</dd>
+ <dt>{{WebExtAPIRef("windows.onRemoved")}}</dt>
+ <dd>ウィンドウが閉じられた時に発火します。</dd>
+ <dt>{{WebExtAPIRef("windows.onFocusChanged")}}</dt>
+ <dd>現在フォーカスされているウィンドウが変わった時に発火します。</dd>
+</dl>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("webextensions.api.windows")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/windows/windowstate/index.html b/files/ja/mozilla/add-ons/webextensions/api/windows/windowstate/index.html
new file mode 100644
index 0000000000..a60ce41391
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/windows/windowstate/index.html
@@ -0,0 +1,73 @@
+---
+title: windows.WindowState
+slug: Mozilla/Add-ons/WebExtensions/API/windows/WindowState
+translation_of: Mozilla/Add-ons/WebExtensions/API/windows/WindowState
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>ブラウザウィンドウの状態。</p>
+
+<h2 id="型">型</h2>
+
+<p>値の方は<code>strings</code>です。可能な値は以下:</p>
+
+<dl>
+ <dt><code>"normal"</code></dt>
+ <dd>ウィンドウはデフォルトかユーザ指定のサイズ。</dd>
+ <dt><code>"minimized"</code></dt>
+ <dd>ウィンドウはアイコンとしてタスクバーの中に表示(最小化)。</dd>
+ <dt><code>"maximized"</code></dt>
+ <dd>ウィンドウはシステムエリアやOSによる予約なしに画面を満たしている(最大化)。</dd>
+ <dt><code>"fullscreen"</code></dt>
+ <dd>ウィンドウはフルスクリーンアプリケーションとして稼働しているか、タブの内容が<a href="/en-US/docs/Web/API/Fullscreen_API">Fullscreen API</a>を利用している(全画面)。</dd>
+ <dt><code>"docked"</code></dt>
+ <dd>A docked window occupies a fixed position relative to other windows owned by the same application.</dd>
+</dl>
+
+<p>macOS compatibility: Beginning in macOS 10.10, the default maximizing behavior for windows changed to run applications as full screen applications instead of "zoomed" windows. <code>fullscreen</code> refers to both the browser running as a full screen application and when content in a tab uses the Fullscreen API.</p>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+
+
+<p>{{Compat("webextensions.api.windows.WindowState")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/windows#type-WindowState"><code>chrome.windows</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/api/windows/windowtype/index.html b/files/ja/mozilla/add-ons/webextensions/api/windows/windowtype/index.html
new file mode 100644
index 0000000000..eca8a0916a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/api/windows/windowtype/index.html
@@ -0,0 +1,65 @@
+---
+title: windows.WindowType
+slug: Mozilla/Add-ons/WebExtensions/API/windows/WindowType
+translation_of: Mozilla/Add-ons/WebExtensions/API/windows/WindowType
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>これはブラウザウィンドウの種類です。</p>
+
+<h2 id="型">型</h2>
+
+<p>値の型は<code>strings</code>です。可能な値は以下:</p>
+
+<ul>
+ <li><code>"normal"</code></li>
+ <li><code>"popup"</code></li>
+ <li><code>"panel"</code></li>
+ <li><code>"devtools"</code></li>
+</ul>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+
+
+<p>{{Compat("webextensions.api.windows.WindowType")}}</p>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/windows#type-WindowType"><code>chrome.windows</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/browser_compatibility_for_manifest.json/index.html b/files/ja/mozilla/add-ons/webextensions/browser_compatibility_for_manifest.json/index.html
new file mode 100644
index 0000000000..65ce447613
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/browser_compatibility_for_manifest.json/index.html
@@ -0,0 +1,25 @@
+---
+title: manifest.json のブラウザー互換性
+slug: Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json
+tags:
+ - Add-ons
+ - WebExtensions
+ - manifest.json
+translation_of: Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json
+---
+<div>{{AddonSidebar}}</div>
+
+<div class="hidden">このページの互換性テーブルは積み上げられたデータから生成されています。そのデータに貢献したいのであれば、<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックし、プルリクエストを送ってください。</div>
+
+<p>{{Compat("webextensions.manifest",2)}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>Microsoft Edge の互換性データは Microsoft Corporation により提供され、Creative Commons Attribution 3.0 United States License の下でこのページに含めています。</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">JavaScript API へのブラウザーのサポート</a></li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/browser_support_for_javascript_apis/index.html b/files/ja/mozilla/add-ons/webextensions/browser_support_for_javascript_apis/index.html
new file mode 100644
index 0000000000..c045122ba1
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/browser_support_for_javascript_apis/index.html
@@ -0,0 +1,26 @@
+---
+title: JavaScript API 群のブラウザ実装状況
+slug: Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs
+tags:
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs
+---
+<div>
+<div>{{AddonSidebar}}</div>
+
+
+
+<p>{{WebExtAllCompatTables}}</p>
+
+<div class="note"><strong>謝辞</strong>
+
+<p>Microsoft Edge の実装状況は Microsoft Corporation から提供されたものであり、ここでは Creative Commons Attribution 3.0 United States License に従っています。</p>
+</div>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">Browser compatibility for manifest.json</a></li>
+</ul>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/chrome_incompatibilities/index.html b/files/ja/mozilla/add-ons/webextensions/chrome_incompatibilities/index.html
new file mode 100644
index 0000000000..4cff21e91d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/chrome_incompatibilities/index.html
@@ -0,0 +1,158 @@
+---
+title: Chrome との非互換性
+slug: Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities
+tags:
+ - WebExtensions
+ - 初心者向け
+translation_of: Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities
+---
+<div>{{AddonSidebar}}</div>
+
+<p>Webextension を用いた拡張機能は Chrome や Opera の拡張機能と互換性があるように設計されています。可能な限り、それぞれのブラウザー向けに書かれた拡張機能は最低限の変更で Firefox で実行できるように設計されています。</p>
+
+<p>しかしながら、<span id="result_box" lang="ja"><span>Firefox は現在、Chrome と Opera でサポートされている機能と API の限られたセットのみをサポートしています。</span></span><span id="result_box" lang="ja"><span>もっと多く機能を追加しようと努めていますが、まだサポートされていない機能もたくさんあり、まったくサポートしないものもいくつかあります。</span></span></p>
+
+<h2 id="JavaScript_APIs" name="JavaScript_APIs">JavaScript APIs</h2>
+
+<h3 id="Callbacks_and_the_chrome.*_namespace" name="Callbacks_and_the_chrome.*_namespace">コールバックと chrome.* ネームスペース</h3>
+
+<p>Chrome では、拡張機能は <code>chrome</code> ネームスペースを使って特権 JavaScript API にアクセスします:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="punctuation token">chrome.</span>browserAction<span class="punctuation token">.</span><span class="function token">setIcon</span><span class="punctuation token">(</span><span class="punctuation token">{</span>path<span class="punctuation token">:</span> <span class="string token">"path/to/icon.png"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>WebExtensions は同等の API に <code>browser</code> ネームスペースを使ってアクセスします:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span><span class="function token">setIcon</span><span class="punctuation token">(</span><span class="punctuation token">{</span>path<span class="punctuation token">:</span> <span class="string token">"path/to/icon.png"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p><span id="result_box" lang="ja"><span>多くの API は非同期です。</span> <span>Chrome では、非同期 API はコールバックを使用して値を返し、</span></span>{{WebExtAPIRef("runtime.lastError")}}<span lang="ja"><span>がエラーを通知します:</span></span></p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">logCookie</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>chrome<span class="punctuation token">.</span>extension<span class="punctuation token">.</span>lastError<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>chrome<span class="punctuation token">.</span>extension<span class="punctuation token">.</span>lastError<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span>
+
+chrome<span class="punctuation token">.</span>cookies<span class="punctuation token">.</span><span class="keyword token">set</span><span class="punctuation token">(</span>
+ <span class="punctuation token">{</span>url<span class="punctuation token">:</span> <span class="string token">"https://developer.mozilla.org/"</span><span class="punctuation token">}</span><span class="punctuation token">,</span>
+ logCookie
+<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>同様の WebExtensions API では<a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise"> promises</a> を利用します:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">logCookie</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">logError</span><span class="punctuation token">(</span>e<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>e<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">var</span> setCookie <span class="operator token">=</span> browser<span class="punctuation token">.</span>cookies<span class="punctuation token">.</span><span class="keyword token">set</span><span class="punctuation token">(</span>
+ <span class="punctuation token">{</span>url<span class="punctuation token">:</span> <span class="string token">"https://developer.mozilla.org/"</span><span class="punctuation token">}</span>
+<span class="punctuation token">)</span><span class="punctuation token">;</span>
+setCookie<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>logCookie<span class="punctuation token">,</span> logError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<h3 id="Firefox_supports_both_chrome_and_browser_namespaces" name="Firefox_supports_both_chrome_and_browser_namespaces">Firefox は<code>chrome</code>と<code>browser</code>の両方のネームスペースをサポート</h3>
+
+<p><span id="result_box" lang="ja"><span>移植の助けとして、WebExtensions の Firefox 実装は、コールバックを使用した<code>chrome</code>を</span></span><span lang="ja"><span>、promise を使用した<code>browser</code>と同様にサポートします。</span><span>これは、多くの Chrome 拡張機能が Firefox でそのまま動作することを意味します。</span><span>ただし、これは WebExtensions 標準の一部ではなく、準拠するすべてのブラウザーでサポートされているとは限りません。</span></span></p>
+
+<p><span id="result_box" lang="ja"><span><code>browser</code> と promise を使って拡張機能を書いている場合、Chrome でも動かせるようにする polyfill を開発しました</span></span>: <a href="https://github.com/mozilla/webextension-polyfill">https://github.com/mozilla/webextension-polyfill</a>.</p>
+
+<h3 id="Partially_supported_APIs" name="Partially_supported_APIs"><span class="short_text" id="result_box" lang="ja"><span>部分的にサポートされている API</span></span></h3>
+
+<p><span id="result_box" lang="ja"><span><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">ブラウザーの JavaScript API サポート</a>のページには、Firefox でサポートされているすべての API の互換性テーブルが含まれています。</span><span>特定の API アイテムのサポートに関する警告がある場合は、これらのテーブルにアスタリスク "*" が表示され、API アイテムのリファレンスページにその警告が説明されています。</span></span></p>
+
+<p><span class="short_text" id="result_box" lang="ja"><span>このテーブルは、<a href="https://github.com/mdn/browser-compat-data">GitHub で JSON ファイル</a>として保存された互換性データから生成されます。</span></span></p>
+
+<p><span class="short_text" id="result_box" lang="ja"><span>このセクションの残りの部分では、テーブルにまだ取り込まれていない互換性の問題について説明します。</span></span></p>
+
+<h4 id="notifications" name="notifications"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/notifications">notifications</a></h4>
+
+<ul>
+ <li><code>notifications.create()</code>の <code>"basic"</code> <code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/notifications/TemplateType">type</a></code>を指定した場合の、 <code>iconUrl</code> は Firefox では任意です。Chrome では必須です。</li>
+ <li>通知<span class="short_text" id="result_box" lang="ja"><span>はユーザーがクリックするとすぐに消去されます。</span></span> <span class="short_text" id="result_box" lang="ja"><span>これは Chrome では当てはまりません。</span></span></li>
+ <li><code>notifications.create()</code><span id="result_box" lang="ja"><span> を複数回連続して呼び出すと、Firefox が通知を一切表示しなくなることがあります。</span></span> <code>chrome.notifications.create() </code><span lang="ja"><span><code>のコールバック</code>関数内に入るまでの時間は、後続のスクリプトが実行されるまで待つほど十分な時間ではありません。</span></span></li>
+</ul>
+
+<h4 id="proxy" name="proxy"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/proxy">proxy</a></h4>
+
+<ul>
+ <li><span class="short_text" id="result_box" lang="ja"><span>この API は Chrome API の設計とはまったく異なります。</span></span> <span id="result_box" lang="ja"><span>Chrome の API を使用すると、</span></span>拡張機能<span lang="ja"><span>で PAC ファイルを登録できますが、明示的なプロキシルールを定義することもできます。</span></span><span id="result_box" lang="ja"><span>これは拡張 PAC ファイルを使用しても可能であるため、この API は PAC ファイルのアプローチのみをサポートしています。</span></span> <span id="result_box" lang="ja"><span>この API は Chrome の <code>proxy</code> API と互換性がないため、この API は <code>browser</code> の名前空間でのみ使用できます。</span></span></li>
+</ul>
+
+<h4 id="tabs" name="tabs"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs">tabs</a></h4>
+
+<ul>
+ <li>
+ <p><span id="result_box" lang="ja"><span>Firefox では、</span></span><code>tabs.executeScript()</code><span lang="ja"><span> または </span></span><code>tabs.insertCSS()</code><span lang="ja"><span> に渡される相対URL は、現在のページ URL を基準として解決されます。</span></span> <span id="result_box" lang="ja"><span>Chrome では、これらの URL は</span></span>拡張機能<span lang="ja"><span>のベース URL を基準として解決されます。</span></span> <span class="short_text" id="result_box" lang="ja"><span>クロスブラウザーで動作するようにするには、拡張機能のルートから絶対URL として</span></span><span class="short_text" lang="ja"><span>次のように指定します</span></span>:</p>
+
+ <pre class="line-numbers language-html"><code class="language-html">/path/to/script.js</code></pre>
+ </li>
+</ul>
+
+<ul>
+ <li><span id="result_box" lang="ja"><span>Firefox では、</span></span><code>tabs.query()</code><span lang="ja"><span> を使用して URL でタブにクエリを行うには、</span></span><code>"tabs"</code><span lang="ja"><span>権限が必要です。</span></span> <span id="result_box" lang="ja"><span>Chrome では、</span></span><code>"tabs"</code><span lang="ja"><span>権限がなくても可能ですが、URL がホスト権限と一致するタブに制限されます。</span></span></li>
+ <li><span id="result_box" lang="ja"><span>Firefox では、</span></span><code>beforeunload</code><span lang="ja"><span> イベントの後に </span></span><code>tabs.remove()</code><span lang="ja"><span> の promise が実行されますが、Chrome では コールバック が </span></span><code>beforeunload</code><span lang="ja"><span> を待ちません。</span></span></li>
+</ul>
+
+<h4 id="webRequest" name="webRequest"><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/webRequest">webRequest</a></h4>
+
+<ul>
+ <li><span id="result_box" lang="ja"><span>Firefox では、元の URL が<code>http:</code>または<code>https:</code>を使用する場合にのみ、リクエストを</span></span><span lang="ja"><span>リダイレクトできます。</span></span></li>
+ <li><span id="result_box" lang="ja"><span>Firefox では、システム要求(</span></span>拡張機能<span lang="ja"><span>のアップグレードや検索バーの提案など)でイベントが発生しません。</span></span> <span id="result_box" lang="ja"><span>Firefox 57以降では、Firefox はプロキシ認証のために</span></span>{{WebExtAPIRef("webRequest.onAuthRequired")}}<span lang="ja"><span>を遮断する必要がある拡張機能の例外を生成します。</span></span>{{WebExtAPIRef("webRequest.onAuthRequired")}}のドキュメントをご覧ください。</li>
+ <li>Firefox では、拡張機能が外部URL (例 HTTPS) から<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages">拡張機能ページ</a>にリダイレクトする場合、拡張機能の manifest.json ファイルは、その拡張機能ページの URL を一覧にした <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a> キーを含むことが必須です。 その URL にあらゆるウェブサイトからリンクやリダイレクトされる可能性があり、拡張機能は、入力データ(例えば POST データ) を、ただ通常のウェブページがそうするように、アントラステッドなソースからとして取り扱うべきであるのに注意します。</li>
+</ul>
+
+<h4 id="windows" name="windows"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/windows">windows</a></h4>
+
+<ul>
+ <li><span id="result_box" lang="ja"><span>Firefox では、</span></span><code>onFocusChanged</code><span lang="ja"><span> はフォーカス変更に対して複数回トリガされます。</span></span></li>
+</ul>
+
+<h3 id="Miscellaneous_incompatibilities" name="Miscellaneous_incompatibilities"><span class="short_text" id="result_box" lang="ja"><span>その他の非互換性</span></span></h3>
+
+<h4 id="URLs_in_CSS" name="URLs_in_CSS">CSS内の URL</h4>
+
+<p><span id="result_box" lang="ja"><span>Firefox は、挿入されたページからではなく、CSS ファイル自体からの相対パスで、挿入された CSS ファイルの URL を解決します。</span></span></p>
+
+<h4 id="Additional_incompatibilities" name="Additional_incompatibilities"><span class="short_text" id="result_box" lang="ja"><span>付加的な非互換性</span></span></h4>
+
+<p>Firefox は、バックグラウンドページからの<code><a href="https://developer.mozilla.org/ja/docs/Web/API/Window/alert">alert()</a></code>, <code><a href="https://developer.mozilla.org/ja/docs/Web/API/Window/confirm">confirm()</a></code> または <code><a href="https://developer.mozilla.org/ja/docs/Web/API/Window/prompt">prompt()</a></code>の使用をサポートしていません。</p>
+
+<h4 id="web_accessible_resources" name="web_accessible_resources">web_accessible_resources</h4>
+
+<p><span id="result_box" lang="ja"><span>chrome では、リソースが web_accessible_resources にリストされている場合、</span></span><code>chrome-extension://&lt;your-extension-id&gt;/&lt;path/to/resource&gt;</code><span lang="ja"><span>としてアクセスできます。この場合 extension ID</span></span><span id="result_box" lang="ja"><span>は、指定された拡張機能に対して固定されています。</span></span></p>
+
+<p><span id="result_box" lang="ja"><span>Firefox ではそうではなく</span></span><span lang="ja"><span>、Firefox のすべてのインスタンスごとに異なるランダムな UUID を使用してアクセスできるように実装されています:</span></span><code>moz-extension://&lt;random-UUID&gt;/&lt;path/to/resource&gt;</code> <span id="result_box" lang="ja"><span>このランダム性により、特定の拡張機能</span></span><span lang="ja"><span>の URL を別のドメインの CSP ポリシーに追加するなど、いくつかのことをできなくなります。</span></span></p>
+
+<h4 id="Manifest_key_property" name="Manifest_key_property">マニフェストの"key"プロパティ</h4>
+
+<p><span id="result_box" lang="ja"><span>パッケージされていない</span></span>拡張機能<span lang="ja"><span>を使用する場合、Chrome はマニフェストに<a href="https://developer.chrome.com/extensions/manifest/key">"key"プロパティ</a>を追加して、異なるマシン間で </span></span>extension <span lang="ja"><span>ID を固定することができます。</span></span> <span class="short_text" id="result_box" lang="ja"><span>これは主に web_accessible_resources で作業する場合に便利です。</span></span> <span id="result_box" lang="ja"><span>Firefox は web_accessible_resources にランダムな UUID を使用するため、このプロパティはサポートされていません。</span></span></p>
+
+<h4 id="Content_script_requests_happen_in_the_context_of_extension_not_content_page" name="Content_script_requests_happen_in_the_context_of_extension_not_content_page"><span class="short_text" id="result_box" lang="ja"><span>コンテンツスクリプトのリクエストは、コンテンツページではなく、拡張機能のコンテキストで発生する</span></span></h4>
+
+<p><span id="result_box" lang="ja"><span>chrome では、コンテンツスクリプトから<code>/api</code>のような相対URL にリクエストが呼び出されたとき(たとえば、</span></span><code><a href="https://developer.mozilla.org/ja/docs/Web/API/Fetch_API/Using_Fetch">fetch()</a></code><span lang="ja"><span>を使用して)、<code>https://example.com/api</code>に送信されます。</span></span><span id="result_box" lang="ja"><span>Firefox では、絶対URL を指定する必要があります。</span></span></p>
+
+<h2 id="manifest.json_keys" name="manifest.json_keys">manifest.json のキー</h2>
+
+<p><span id="result_box" lang="ja"><span>メインの</span></span><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json"> manifest.json</a><span lang="ja"><span> ページには、manifest.json のキーのブラウザーサポートを説明する表が含まれています。</span></span> <span id="result_box" lang="ja"><span>特定のキーのサポートに関する警告がある場合、表にアスタリスク "*"付きで示され、キーのリファレンスページには注意事項が説明されています。</span></span></p>
+
+<p><span class="short_text" id="result_box" lang="ja"><span>これらの表は、</span></span> <a href="https://github.com/mdn/browser-compat-data">GitHub で JSON ファイル</a><span class="short_text" lang="ja"><span>として保存された互換性データから生成されます。</span></span></p>
+
+<h2 id="Native_messaging" name="Native_messaging">ネイティブメッセージング</h2>
+
+<h3 id="Command-line_arguments" name="Command-line_arguments">コマンドライン引数</h3>
+
+<p><span id="result_box" lang="ja"><span>Linux と Mac では、Chrome は </span></span><code>chrome-extension://[extensionID]</code><span lang="ja"><span> の形式で、起動した拡張機能のオリジンとなる1つの引数をネイティブアプリに渡します。</span></span> <span id="result_box" lang="ja"><span>これにより、アプリは</span></span>拡張機能<span lang="ja"><span>を識別できます。</span></span></p>
+
+<p><span id="result_box" lang="ja"><span>Windows では、Chrome は2つの引数を受け取ります。1つ目は拡張機能のオリジンで、2つ目はアプリを起動した </span></span><span lang="ja"><span>Chrome ネイティブウィンドウへのハンドルです。</span></span></p>
+
+<h3 id="allowed_extensions" name="allowed_extensions">allowed_extensions</h3>
+
+<p><span id="result_box" lang="ja"><span>Chrome では、アプリマニフェストの </span></span><code>allowed_extensions</code><span lang="ja"><span> キーは、代わりに</span></span><code>allowed_origins</code><span lang="ja"><span> と呼ばれています。</span></span></p>
+
+<h3 id="App_manifest_location" name="App_manifest_location"><span id="result_box" lang="ja"><span>アプリマニフェストの位置</span></span></h3>
+
+<p><span id="result_box" lang="ja"><span>Chrome は、別の場所でアプリのマニフェストを見つけることを期待しています。</span></span> <span id="result_box" lang="ja"><span>Chrome ドキュメントの<a href="https://developer.chrome.com/extensions/nativeMessaging#native-messaging-host-location">「ネイティブメッセージングホストの場所」</a>をご覧ください。</span></span></p>
diff --git a/files/ja/mozilla/add-ons/webextensions/content_scripts/index.html b/files/ja/mozilla/add-ons/webextensions/content_scripts/index.html
new file mode 100644
index 0000000000..456ce69ddb
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/content_scripts/index.html
@@ -0,0 +1,534 @@
+---
+title: コンテンツスクリプト
+slug: Mozilla/Add-ons/WebExtensions/Content_scripts
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Content_scripts
+---
+<div>{{AddonSidebar}}</div>
+
+<p>コンテンツスクリプトは、特定のウェブページのコンテキストで実行される拡張機能の一部です(拡張機能の一部であるバックグラウンドスクリプトや、ウェブサイト自体の一部であるスクリプト、例えば {{HTMLElement("script")}} 要素みたいなものと対をなすような)。</p>
+
+<p><a href="/ja/Add-ons/WebExtensions/Background_scripts">バックグラウンドスクリプト</a>はすべての <a href="/ja/Add-ons/WebExtensions/API">WebExtension JavaScript API</a> にアクセスできますが、ウェブページのコンテンツに直接アクセスすることはできません。だからあなたの拡張機能がそれを行う必要がある場合は、コンテンツスクリプトが必要です。</p>
+
+<p>通常のウェブページで読み込まれたスクリプトと同様に、コンテンツスクリプトは、標準の DOM API を使用してページのコンテンツを読み取り、変更することができます。</p>
+
+<p>コンテンツスクリプトは、<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Content_scripts#WebExtension_APIs">WebExtension API</a> の小さなサブセット にしかアクセスできませんが、メッセージングシステムを使用して <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Content_scripts#Communicating_with_background_scripts">バックグラウンドスクリプトと通信</a>し、WebExtension API に間接的にアクセスすることができます。</p>
+
+<div class="note">
+<p>コンテンツスクリプトは次のドメインでブロックされるのに注意してください:</p>
+
+<ul style="display: grid;">
+ <li>accounts-static.cdn.mozilla.net</li>
+ <li>accounts.firefox.com</li>
+ <li>addons.cdn.mozilla.net</li>
+ <li>addons.mozilla.org</li>
+ <li>api.accounts.firefox.com</li>
+ <li>content.cdn.mozilla.net</li>
+ <li>content.cdn.mozilla.net</li>
+ <li>discovery.addons.mozilla.org</li>
+ <li>input.mozilla.org</li>
+ <li>install.mozilla.org</li>
+ <li>oauth.accounts.firefox.com</li>
+ <li>profile.accounts.firefox.com</li>
+ <li>support.mozilla.org</li>
+ <li>sync.services.mozilla.com</li>
+ <li>testpilot.firefox.com</li>
+</ul>
+
+<p>このドメインのページにコンテンツスクリプトを挿入しようとすると、そのスクリプトは失敗し、ページは <a href="/ja/docs/Web/Security/CSP">CSP</a> エラーをログに記録します。</p>
+
+<p>addons.mozilla.org を含む制限のために、ユーザーはインストール後すぐに拡張機能を試して、動かないのに気付くだけでしょう! 適切な警告を追加するか、<code>addons.mozilla.org</code> から動かす <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/onboarding_upboarding_offboarding_best_practices">onboarding page</a> を追加したくなるでしょう。</p>
+</div>
+
+<div class="note">
+<p><code>letfoo</code> や <code>window.foo = "bar"</code> にて、コンテンツスクリプトのグローバルスコープで追加された値は、<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1408996">1408996</a> のバグによって消えることがあります。</p>
+</div>
+
+<h2 id="Loading_content_scripts" name="Loading_content_scripts">コンテンツスクリプトの読み込み</h2>
+
+<p>次の 3 つの方法のいずれかを使用して、ウェブページにコンテンツスクリプトを読み込むことができます。</p>
+
+<ol>
+ <li>
+ <dl>
+ <dt><strong>インストール時に、URL パターンにマッチするページ内へ</strong></dt>
+ <dd><code>manifest.json</code> の <code style="font-style: normal;"><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> キーを使用して、URL が<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Match_patterns">指定されたパターンにマッチする</a>ページをロードするたびにコンテンツスクリプトを読み込むようブラウザーに依頼できます。</dd>
+ </dl>
+ </li>
+ <li>
+ <dl>
+ <dt><strong>実行時に、URL パターンにマッチするページ内へ</strong></dt>
+ <dd>{{WebExtAPIRef("contentScripts")}} API を使って、URL が<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Match_patterns">指定されたパターンにマッチする</a>ページをロードするたびにコンテンツスクリプトを読み込むようブラウザーに依頼できます。これは method (1) のようなもので、違いは実行時にコンテンツスクリプトを追加/削除できることです。</dd>
+ </dl>
+ </li>
+ <li>
+ <dl>
+ <dt><strong>実行時に、特定のタブへ</strong></dt>
+ <dd><code><a href="/ja/Add-ons/WebExtensions/API/Tabs/executeScript">tabs.executeScript()</a></code> API を使用すると、ユーザーが<a href="/ja/Add-ons/WebExtensions/user_interface/Browser_action">ブラウザーアクション</a>をクリックした場合など、必要なときにコンテンツスクリプトを特定のタブに読み込むことができます。</dd>
+ </dl>
+ </li>
+</ol>
+
+<p><em>フレームごと、拡張機能ごとの</em>グローバルスコープしかありません。これは 1 つのコンテンツスクリプトの変数は、読み込み方にかかわらず、他のコンテンツスクリプトからアクセスできることになります。</p>
+
+<p>方法 (1) と (2) では<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">マッチパターン</a>を使って表現された URL のスクリプトだけを読み込みできます。</p>
+
+<p>方法 (3) では、拡張機能と一緒にパッケージされたページのスクリプトも読み込みできますが、"about:debugging" や "about:addons"のような権限つきページにはスクリプトを読み込めません。</p>
+
+<h2 id="Content_script_environment" name="Content_script_environment">コンテンツスクリプト環境</h2>
+
+<h3 id="DOM_access" name="DOM_access">DOM アクセス</h3>
+
+<p>コンテンツスクリプトは、普通のページスクリプトと同様に、ページの DOM にアクセスして修正できます。ページスクリプトにてなされた DOM の変更を見ることもできます。</p>
+
+<p>しかし、コンテンツスクリプトは "DOM のきれいな見た目" を取得します。これはつまり:</p>
+
+<ul>
+ <li>コンテンツスクリプトはページスクリプトにて定義された  JavaScript 変数を見ることができない</li>
+ <li>ページスクリプトが組み込み DOM プロパティを再定義した場合、コンテンツスクリプトはそのプロパティの(再定義後でなく)オリジナル値を見ている</li>
+</ul>
+
+<p>Firefox では、この挙動は <a href="/ja/docs/Xray_vision">Xray vision</a> と呼ばれます。</p>
+
+<p>例えば、次のウェブページを考えます:</p>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;
+ &lt;/head&gt;
+
+ &lt;body&gt;
+ &lt;script src="page-scripts/page-script.js"&gt;&lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+
+<p>"page-script.js" スクリプトは次を実行します:</p>
+
+<pre class="brush: js">// page-script.js
+
+// add a new element to the DOM
+let p = document.createElement("p");
+p.textContent = "This paragraph was added by a page script.";
+p.setAttribute("id", "page-script-para");
+document.body.appendChild(p);
+
+// define a new property on the window
+window.foo = "This global variable was added by a page script";
+
+// redefine the built-in window.confirm() function
+window.confirm = function() {
+ alert("The page script has also redefined 'confirm'");
+}</pre>
+
+<p>今度は拡張機能がページにコンテンツスクリプトを挿入します:</p>
+
+<pre class="brush: js">// content-script.js
+
+// can access and modify the DOM
+let pageScriptPara = document.getElementById("page-script-para");
+pageScriptPara.style.backgroundColor = "blue";
+
+// can't see page-script-added properties
+console.log(window.foo); // undefined
+
+// sees the original form of redefined properties
+window.confirm("Are you sure?"); // calls the original window.confirm()</pre>
+
+<p>その反対もまた真です; ページスクリプトはコンテンツスクリプトが追加した JavaScript プロパティを見られません。</p>
+
+<p>このことからすると、コンテンツスクリプトは予言できる振る舞いをする DOM プロパティに依存していて、ページスクリプトにて定義された変数とコンテンツスクリプトで定義する変数の衝突は心配しなくていいです。</p>
+
+<p>この振る舞いの実用的な結論として、コンテンツスクリプトはページに読み込まれたいかなる JavaScript ライブラリーにもアクセスしません。なので例えば、ページに jQuery が含まれても、コンテンツスクリプトは見ることができません。</p>
+
+<p>コンテンツスクリプトから JavaScript ライブラリを使いたい場合、ライブラリ自身を、使う方のコンテンツスクリプトと<em>並べて</em>挿入するべきです:</p>
+
+<pre class="brush: json">"content_scripts": [
+ {
+ "matches": ["*://*.mozilla.org/*"],
+ "js": ["jquery.js", "content-script.js"]
+ }
+]</pre>
+
+<div class="blockIndicator note">
+<p><strong>記:</strong> Firefox ではコンテンツスクリプトからページスクリプトによって生成された JavaScript オブジェクトにアクセスしたり、ページスクリプトにコンテンツスクリプトの JavaScript オブジェクトを公開できるようにする API が提供されます。</p>
+
+<p>詳しくは<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Sharing_objects_with_page_scripts">ページスクリプトとオブジェクトを共有する</a>のページを見てください。</p>
+</div>
+
+<h3 id="WebExtension_APIs" name="WebExtension_APIs">WebExtension API</h3>
+
+<p>標準 DOM API に加え、コンテンツスクリプトは次の WebExtension API を使用できます:</p>
+
+<p><code><a href="/ja/Add-ons/WebExtensions/API/extension">extension</a></code> から:</p>
+
+<ul>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/extension#getURL()">getURL()</a></code></li>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/extension#inIncognitoContext">inIncognitoContext</a></code></li>
+</ul>
+
+<p><code><a href="/ja/Add-ons/WebExtensions/API/runtime">runtime</a></code> から:</p>
+
+<ul>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/runtime#connect()">connect()</a></code></li>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/runtime#getManifest()">getManifest()</a></code></li>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/runtime#getURL()">getURL()</a></code></li>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/runtime#onConnect">onConnect</a></code></li>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/runtime#onMessage">onMessage</a></code></li>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/runtime#sendMessage()">sendMessage()</a></code></li>
+</ul>
+
+<p><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/i18n">i18n</a></code> から:</p>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/i18n/getMessage">getMessage()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/i18n/getAcceptLanguages">getAcceptLanguages()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/i18n/getUILanguage">getUILanguage()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/i18n/detectLanguage">detectLanguage()</a></code></li>
+</ul>
+
+<p>すべてから:</p>
+
+<ul>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></code></li>
+</ul>
+
+<h3 id="XHR_and_Fetch" name="XHR_and_Fetch">XHR と Fetch</h3>
+
+<p>コンテンツスクリプトは通常の <code><a href="https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest">window.XMLHttpRequest</a></code> と <code><a href="https://developer.mozilla.org/ja/docs/Web/API/Fetch_API">window.fetch()</a></code> API を使ってリクエストを作成できます。</p>
+
+<div class="blockIndicator note">
+<p>Firefox では、コンテンツスクリプトの (例えば、<code><a href="/ja/docs/Web/API/Fetch_API/Using_Fetch">fetch()</a></code> を使った) リクエストは、拡張機能のコンテキストで起こるので、ページコンテンツを参照する URL を絶対URL で提供せねばなりません。</p>
+
+<p>Chrome では、リクエストはページのコンテ<span style="display: none;"> </span>キストで起こるので、相対 URL で行われます。例えば、<code>/api</code> は <code>https://[現在のペー<span style="display: none;"> </span>ジの URL]/api</code> に送られます。</p>
+</div>
+
+<p>コンテンツスクリプトは拡張機能の他の部分と同一のクロスドメイン権限を取得します: よって拡張機能が <code>manifest.json</code> の <code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> キーを使ってあるドメインのクロスドメインアクセスを要求している場合、コンテンツスクリプトも同様にそのドメインのアクセスを取得します。</p>
+
+<p>これはより多く権限付けられた XHR に晒して、コンテンツスクリプトでインスタンスを取得することで達成し、その副作用としてページ自体からのリクエストがそうであるように <code><a href="https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Origin">Origin</a></code> と <code><a href="https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Referer">Referer</a></code> ヘッダーがセットされず、リクエストからクロスオリジンな性質を隠すことが好ましいことがよくあります。</p>
+
+<div class="blockIndicator note">
+<p>バージョン 58 以降、コンテンツ自体から送られたかのようなリクエストを必要とする拡張機能は  <code>content.XMLHttpRequest</code> と <code>content.fetch()</code> を代わりに使うことができます。</p>
+
+<p>クロスブラウザー拡張機能にとってこれらの存在は機能検出となります。</p>
+</div>
+
+<h2 id="Communicating_with_background_scripts" name="Communicating_with_background_scripts">バックグラウンドスクリプトとの通信</h2>
+
+<p>コンテンツスクリプトは WebExtension API の大半を直接には使用できませんが、メッセージ API を用いて拡張機能のバックグラウンドスクリプトと通信できて、それゆえにバックグラウンドスクリプトがアクセスできるすべての API に間接的にアクセスできます。</p>
+
+<p>バックグラウンドスクリプトとコンテンツスクリプトが通信する 2 つのパターンがあります: (オプションなレスポンスつきの)<strong>ワンオフメッセージ</strong>を送るのと、<strong>お互いに息の長いコネクションを確立して</strong>、そこでメッセージを交換するのとです。</p>
+
+<h3 id="One-off_messages" name="One-off_messages">ワンオフメッセージ</h3>
+
+<p>レスポンスが必須でないワンオフメッセージを送るには、次の API を使います:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="row"></th>
+ <th scope="col">コンテンツスクリプト内</th>
+ <th scope="col">バックグラウンドスクリプト内</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">送信メッセージ</th>
+ <td><code><a href="/ja/Add-ons/WebExtensions/API/runtime/sendMessage">browser.runtime.sendMessage()</a></code></td>
+ <td><code><a href="/ja/Add-ons/WebExtensions/API/Tabs/sendMessage">browser.tabs.sendMessage()</a></code></td>
+ </tr>
+ <tr>
+ <th scope="row">受信メッセージ</th>
+ <td><code><a href="/ja/Add-ons/WebExtensions/API/runtime/onMessage">browser.runtime.onMessage</a></code></td>
+ <td><code><a href="/ja/Add-ons/WebExtensions/API/runtime/onMessage">browser.runtime.onMessage</a></code></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>例えば、ウェブページでのクリックイベントをリッスンするコンテンツスクリプトがここにあります。クリックがリンク上である場合、ターゲット URL をバックグラウンドページにメッセージします。</p>
+
+<pre class="brush: js">// content-script.js
+
+window.addEventListener("click", notifyExtension);
+
+function notifyExtension(e) {
+ if (e.target.tagName != "A") {
+ return;
+ }
+ browser.runtime.sendMessage({"url": e.target.href});
+}</pre>
+
+<p>バックグラウンドスクリプトはこのメッセージをリッスンして、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/notifications">notifications</a></code> API を使って通知を表示します:</p>
+
+<pre class="brush: js">// background-script.js
+
+browser.runtime.onMessage.addListener(notify);
+
+function notify(message) {
+ browser.notifications.create({
+ "type": "basic",
+ "iconUrl": browser.extension.getURL("link.png"),
+ "title": "You clicked a link!",
+ "message": message.url
+ });
+}
+</pre>
+
+<p>この例のコードは Github の <a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a> のサンプルから簡単に適用できます。</p>
+
+<h3 id="Connection-based_messaging" name="Connection-based_messaging">コネクションベースのメッセージ</h3>
+
+<p>ワンオフメッセージの送信は、バックグラウンドスクリプトとコンテンツスクリプトとで多くのメッセージを交換する場合はめんどくさいです。なので代替パターンは、この 2 つのコンテキスト間で寿命の長いコネクションを確立して、メッセージ交換にこのコネクションを使うことです。</p>
+
+<p>いずれの側にも <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port">runtime.Port</a></code> オブジェクトがあり、メッセージ交換に使えます。</p>
+
+<p>コネクションを作成するには:</p>
+
+<ul>
+ <li>片方で <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onConnect">runtime.onConnect</a></code> にてコネクションをリッスンする。</li>
+ <li>もう片方で次を呼び出す:
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/connect">tabs.connect()</a></code> (コンテンツスクリプトに接続する場合)</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/connect">runtime.connect()</a></code> (バックグラウンドスクリプトに接続する場合)</li>
+ </ul>
+ </li>
+</ul>
+
+<p>これは <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port">runtime.Port</a></code> オブジェクトを返します。</p>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onConnect">runtime.onConnect</a></code> リスナーには自身の <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port">runtime.Port</a></code> オブジェクトが渡される。</li>
+</ul>
+
+<p>それぞれがポートを持ったら、両方が:</p>
+
+<ul>
+ <li><code>runtime.Port.postMessage()</code> でメッセージを送って</li>
+ <li><code>runtime.Port.onMessage</code> でメッセージを受信できるようになる。</li>
+</ul>
+
+<p>例えば、ロードしたらすぐに、このコンテンツスクリプトは:</p>
+
+<ul>
+ <li>バックグラウンドに接続し</li>
+ <li><code>myPort</code> 変数に <code>Port</code> を格納する</li>
+ <li><code>myPort</code> のメッセージをリッスンする(ログに出す)</li>
+ <li>ユーザーがドキュメントをクリックしたとき、バックグラウンドスクリプトに <code>myPort</code> を使ってメッセージを送る</li>
+</ul>
+
+<pre class="brush: js">// content-script.js
+
+var myPort = browser.runtime.connect({name:"port-from-cs"});
+myPort.postMessage({greeting: "hello from content script"});
+
+myPort.onMessage.addListener(function(m) {
+ console.log("In content script, received message from background script: ");
+ console.log(m.greeting);
+});
+
+document.body.addEventListener("click", function() {
+ myPort.postMessage({greeting: "they clicked the page!"});
+});</pre>
+
+<p>対応するバックグラウンドスクリプトは:</p>
+
+<ul>
+ <li>コンテンツスクリプトからの通信試行をリッスンする</li>
+ <li>通信試行を受け取ったとき:
+ <ul>
+ <li><code>portFromCS</code> という名前の変数にポートを格納する</li>
+ <li>そのポートを使ってコンテンツスクリプトにメッセージを送る</li>
+ <li>ポートに届いたメッセージをリッスンしてログに出す</li>
+ </ul>
+ </li>
+ <li>ユーザーが拡張機能のブラウザーアクションをクリックしたとき、<code>portFromCS</code> を使ってコンテンツスクリプトにメッセージを送る</li>
+</ul>
+
+<pre class="brush: js">// background-script.js
+
+var portFromCS;
+
+function connected(p) {
+ portFromCS = p;
+ portFromCS.postMessage({greeting: "hi there content script!"});
+ portFromCS.onMessage.addListener(function(m) {
+ console.log("In background script, received message from content script")
+ console.log(m.greeting);
+ });
+}
+
+browser.runtime.onConnect.addListener(connected);
+
+browser.browserAction.onClicked.addListener(function() {
+ portFromCS.postMessage({greeting: "they clicked the button!"});
+});
+</pre>
+
+<h4 id="Multiple_content_scripts" name="Multiple_content_scripts">複数のコンテンツスクリプト</h4>
+
+<p>同時に複数のコンテンツスクリプトが通信する場合、各接続を配列に格納するのが良いかもしれません。</p>
+
+<ul>
+</ul>
+
+<pre class="brush: js">// background-script.js
+
+var ports = []
+
+function connected(p) {
+ ports[p.sender.tab.id] = p
+ //...
+}
+
+browser.runtime.onConnect.addListener(connected)
+
+browser.browserAction.onClicked.addListener(function() {
+ ports.forEach(p =&gt; {
+ p.postMessage({greeting: "they clicked the button!"})
+ })
+});</pre>
+
+<ul>
+</ul>
+
+<h3 id="Choosing_between_one-off_messages_and_connection-based_messaging" name="Choosing_between_one-off_messages_and_connection-based_messaging">ワンオフメッセージとコネクションベースのメッセージとの選択</h3>
+
+<p>ワンオフとコネクションベースのメッセージの選択は、拡張機能がどうメッセージを利用すると期待されるかに依存します。</p>
+
+<p>推奨のベストプラクティスは次の通りです:</p>
+
+<p><strong>次のときにワンオフメッセージを使用… </strong></p>
+
+<ul>
+ <li>メッセージに 1 つだけの応答がある場合</li>
+ <li>メッセージの受信を少しのスクリプトがリッスンする場合({{WebExtAPIRef("runtime.onMessage")}} 呼び出し)</li>
+</ul>
+
+<p><strong>次のときにコネクションベースメッセージを使用…</strong></p>
+
+<ul>
+ <li>スクリプトが、複数のメッセージを交換するセッションに関わる場合</li>
+ <li>拡張機能がタスクの進捗や、タスクが中断されたのを知る必要がある場合、または初期化されたタスクをメッセージング経由で中断したい場合</li>
+</ul>
+
+<h2 id="Communicating_with_the_web_page" name="Communicating_with_the_web_page">ウェブページとの通信</h2>
+
+<p>既定では、コンテンツスクリプトはページスクリプトが作成したオブジェクトにアクセスできませんが、DOM <code><a href="/ja/docs/Web/API/Window/postMessage">window.postMessage</a></code> と <code><a href="/ja/docs/Web/API/EventTarget/addEventListener">window.addEventListener</a></code> API を使ってページスクリプトと通信できます。</p>
+
+<p>例えば:</p>
+
+<pre class="brush: js">// page-script.js
+
+var messenger = document.getElementById("from-page-script");
+
+messenger.addEventListener("click", messageContentScript);
+
+function messageContentScript() {
+ window.postMessage({
+ direction: "from-page-script",
+ message: "Message from the page"
+ }, "*");</pre>
+
+<pre class="brush: js">// content-script.js
+
+window.addEventListener("message", function(event) {
+ if (event.source == window &amp;&amp;
+ event.data &amp;&amp;
+ event.data.direction == "from-page-script") {
+ alert("Content script received message: \"" + event.data.message + "\"");
+ }
+});</pre>
+
+<p>これの完全な動作サンプルは、<a href="https://mdn.github.io/webextensions-examples/content-script-page-script-messaging.html">GitHub のデモページを訪れて</a>指示に従ってください。</p>
+
+<div class="warning">
+<p><strong>この方法で信頼できないウェブコンテンツと相互作用するには細心の注意が必要です</strong>!<br>
+ 拡張機能は強力な力を持つコードの権限があり、敵意のあるウェブページは簡単にこの力にアクセスします。</p>
+
+<p>細かい例を作るには、メッセージを受け取ったコンテンツスクリプトがこのようなことを行うと仮定してください:</p>
+
+<pre class="brush: js">// content-script.js
+
+window.addEventListener("message", function(event) {
+ if (event.source == window &amp;&amp;
+ event.data.direction &amp;&amp;
+ event.data.direction == "from-page-script") {
+ eval(event.data.message);
+ }
+});</pre>
+
+<p>今やページスクリプトはコンテンツスクリプトのすべての権限でコードを実行できます。</p>
+</div>
+
+<h2 id="Using_eval_in_content_scripts" name="Using_eval()_in_content_scripts">コンテンツスクリプト内で eval() を使う</h2>
+
+<dl>
+ <dt>Chrome では</dt>
+ <dd>{{jsxref("eval")}} は常にページコンテキストではなくてコンテンツスクリプトのコンテキストで動作します。</dd>
+ <dt>Firefox では</dt>
+ <dd>
+ <p><code>eval()</code> を呼ぶ場合、<strong>コンテンツスクリプト</strong>のコンテキストで動作します。 <code>window.eval()</code> を呼ぶ場合、<strong>ページ</strong>のコンテキストで動作します。, it runs code in the context of the <strong>content script</strong>.</p>
+ </dd>
+</dl>
+
+<p>例えば、こんなコンテンツスクリプトを考えてみます:</p>
+
+<pre class="brush: js">// content-script.js
+
+window.eval('window.x = 1;');
+eval('window.y = 2');
+
+console.log(`In content script, window.x: ${window.x}`);
+console.log(`In content script, window.y: ${window.y}`);
+
+window.postMessage({
+ message: "check"
+}, "*");</pre>
+
+<p>このコードは単に変数 x と y を、<code>window.eval()</code> と <code>eval()</code> を用いて作成し、値をログに出し、ページにメッセージします。</p>
+
+<p>メッセージの受信に際し、ページスクリプトは同じ変数をログに出します:</p>
+
+<pre class="brush: js">window.addEventListener("message", function(event) {
+ if (event.source === window &amp;&amp; event.data &amp;&amp; event.data.message === "check") {
+ console.log(`In page script, window.x: ${window.x}`);
+ console.log(`In page script, window.y: ${window.y}`);
+ }
+});</pre>
+
+<p><strong>Chrome では、こんな出力が生成されます:</strong></p>
+
+<pre>In content script, window.x: 1
+In content script, window.y: 2
+In page script, window.x: undefined
+In page script, window.y: undefined</pre>
+
+<p><strong>Firefox では、こんな出力が生成されます:</strong></p>
+
+<pre>In content script, window.x: undefined
+In content script, window.y: 2
+In page script, window.x: 1
+In page script, window.y: undefined</pre>
+
+<p>同じことは <code><a href="/ja/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout">setTimeout()</a></code>、<code><a href="/ja/docs/Web/API/WindowOrWorkerGlobalScope/setInterval">setInterval()</a></code>、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Function">Function()</a></code> にも言えます。</p>
+
+<div class="blockIndicator warning">
+<p><strong>ページのコンテキストでコードを実行するときは特に注意してください!</strong></p>
+
+<p>ページの環境が悪意をはらんだウェブページにコントロールされ、期待しない方法であなたが操作するオブジェクトを再定義するかもしれません。</p>
+
+<pre class="brush: js">// page.js redefines console.log
+
+var original = console.log;
+
+console.log = function() {
+ original(true);
+}
+</pre>
+
+<pre class="brush: js">// content-script.js calls the redefined version
+
+window.eval('console.log(false)');
+</pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/content_security_policy/index.html b/files/ja/mozilla/add-ons/webextensions/content_security_policy/index.html
new file mode 100644
index 0000000000..4bd247cf03
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/content_security_policy/index.html
@@ -0,0 +1,109 @@
+---
+title: Content Security Policy
+slug: Mozilla/Add-ons/WebExtensions/Content_Security_Policy
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Content_Security_Policy
+---
+<div>{{AddonSidebar}}</div>
+
+<div class="summary">
+<p>WebExtension APIs で開発される拡張機能には、既定で適用される CSP(Content Security Policy の略) があります。これは<strong><a href="https://developer.mozilla.org/ja/docs/Web/HTML/Element/script"> </a></strong><a href="https://developer.mozilla.org/ja/docs/Web/HTML/Element/script">&lt;script&gt;</a> と <a href="https://developer.mozilla.org/ja/docs/Web/HTML/Element/object">&lt;object&gt;</a> リソースから読み込まれるソースを制限し、危険な行動、例えば <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code> の使用を非許可にします。</p>
+
+<p>この記事では CSP とは何かと、デフォルトポリシーとは何で拡張機能にはどんな意味があるのかと、拡張機能が既定の CSP を変更する方法を簡単に説明します。</p>
+</div>
+
+<p><a href="/ja/docs/Web/HTTP/CSP">Content Security Policy</a> (CSP) はウェブサイトが悪意のあるコンテンツを実行するのを防ぐのに役立つメカニズムです。ウェブサイトは サーバーから送られてくる HTTP ヘッダーを使って CSP を指定します。CSP は主に、スクリプトや組み込みプラグインといったさまざまな種類のコンテンツの合法なソースを特定することに関心を持っています。例えば、ウェブサイトは、ウェブサイト自身からの JavaScript だけを実行し、他のソースは受け付けないように指定できます。CSP はブラウザーに <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code>のような、潜在的に危険な行動を禁止するよう指示することもできます。</p>
+
+<p>ウェブサイトと同様に、拡張機能はさまざまなソースからコンテンツを読み込めます。例えば、ブラウザーアクションのポップアップは HTML 文書として指定できて、通常のウェブページのようにさまざまなソースからの JavaScript と CSS を入れることができます:</p>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;/head&gt;
+
+ &lt;body&gt;
+
+ &lt;!--Some HTML content here--&gt;
+
+ &lt;!--
+ Include a third-party script.
+ See also https://developer.mozilla.org/ja/docs/Web/Security/Subresource_Integrity.
+ --&gt;
+ &lt;script
+ src="https://code.jquery.com/jquery-2.2.4.js"
+ integrity="sha256-iT6Q9iMJYuQiMWNd9lDyBUStIq/8PuOW33aOqmvFpqI="
+ crossorigin="anonymous"&gt;
+ &lt;/script&gt;
+
+ &lt;!-- Include my popup's own script--&gt;
+ &lt;script src="popup.js"&gt;&lt;/script&gt;
+ &lt;/body&gt;
+
+&lt;/html&gt;</pre>
+
+<p>ウェブサイトと比較して、拡張機能は追加の特権付き API にアクセスできるので、悪意のあるコードに感染した場合、リスクは大きくなります。このため:</p>
+
+<ul>
+ <li>かなり厳密な CSP がデフォルトで適用されます。<a href="/ja/Add-ons/WebExtensions/Content_Security_Policy#Default_content_security_policy">既定の content security policy</a> を見てください</li>
+ <li>拡張機能のオーナーは <code>content_security_policy</code> manifest.json キーを使ってデフォルトのポリシーを変更できますが、許可できるポリシーには制限があります。<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a></code> を見てください。</li>
+</ul>
+
+<h2 id="Default_content_security_policy" name="Default_content_security_policy">既定の content security policy</h2>
+
+<p>拡張機能の既定の CSP は次のものです:</p>
+
+<pre>"script-src 'self'; object-src 'self';"</pre>
+
+<p>これは、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a></code> の manifest.json key を使って明示的に CSP をセットしないあらゆる拡張機能にあてはまります。下記の結論になります:</p>
+
+<ul>
+ <li>
+ <p><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Content_Security_Policy#Location_of_script_and_object_resources">&lt;script&gt; と &lt;object&gt; リソースは拡張機能のローカルからのみ読み込みできる</a></p>
+ </li>
+ <li>
+ <p><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Content_Security_Policy#eval()_and_friends">拡張機能は JavaScript で文字列を評価 (eval) できない</a></p>
+ </li>
+ <li>
+ <p><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Content_Security_Policy#Inline_JavaScript">インライン JavaScript は実行されない</a></p>
+ </li>
+</ul>
+
+<h3 id="Location_of_script_and_object_resources" name="Location_of_script_and_object_resources">スクリプトとオブジェクトリソースの場所</h3>
+
+<p>既定の CSP の下では、拡張機能のローカルにある <a href="/ja/docs/Web/HTML/Element/script">&lt;script&gt;</a> と <a href="/ja/docs/Web/HTML/Element/object">&lt;object&gt;</a> リソースだけを読み込みできます。例えば、拡張機能の文書内にこんな行があるとします:</p>
+
+<pre class="brush: html"> &lt;script src="https://code.jquery.com/jquery-2.2.4.js"&gt;&lt;/script&gt;</pre>
+
+<p>これは要求したリソースを読み込みません: 静かに失敗し、このリソースから取ってきたはずのいかなるオブジェクトも見つかりません。この解決方法が 2 つあります:</p>
+
+<ul>
+ <li>
+ <p>リソースをダウンロードして、拡張機能にパッケージして、このリソース版を参照する</p>
+ </li>
+ <li>
+ <p>必要なリモートオリジンを許可するために <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a></code> を使う</p>
+ </li>
+</ul>
+
+<h3 id="eval_and_friends" name="eval()_and_friends">eval() とその仲間</h3>
+
+<p>既定の CSP の下で、拡張機能は JavaScript 内の文字列の評価を許可しません。つまり次のことは許可されません:</p>
+
+<pre class="brush: js">eval("console.log('some output');");</pre>
+
+<pre class="brush: js">window.setTimeout("alert('Hello World!');", 500);</pre>
+
+<pre class="brush: js">var f = new Function("console.log('foo');");</pre>
+
+<h3 id="Inline_JavaScript" name="Inline_JavaScript">インライン JavaScript</h3>
+
+<p>既定の CSP ではインライン JavaScript は実行されません。これは <code>&lt;script&gt;</code> タグで直接置かれた JavaScript と、インラインイベントハンドラーの両方とも許可されず、つまり次のことは許可されません:</p>
+
+<pre class="brush: html">&lt;script&gt;console.log("foo");&lt;/script&gt;</pre>
+
+<pre class="brush: html">&lt;div onclick="console.log('click')"&gt;Click me!&lt;/div&gt;</pre>
+
+<p>ページが読み込まれた時にスクリプトを実行するのに <code>&lt;body onload="main()"&gt;</code> のようなコードを使っている場合、代わりに <a href="/ja/docs/Web/Events/DOMContentLoaded">DOMContentLoaded</a> か <a href="/ja/docs/Web/Events/load">load</a> をリッスンします。</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/debugging_(before_firefox_50)/index.html b/files/ja/mozilla/add-ons/webextensions/debugging_(before_firefox_50)/index.html
new file mode 100644
index 0000000000..0a9d5e2637
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/debugging_(before_firefox_50)/index.html
@@ -0,0 +1,243 @@
+---
+title: デバッグ (Firefox 50 より前)
+slug: Mozilla/Add-ons/WebExtensions/Debugging_(before_Firefox_50)
+translation_of: Mozilla/Add-ons/WebExtensions/Debugging_(before_Firefox_50)
+---
+<div>{{AddonSidebar}}</div>
+
+<div class="note">
+<p>この記事では Firefox バージョン50よりも前で WebExtension API を使った拡張機能のデバッグする方法を説明しています。</p>
+
+<p>Firefox 50 以降をお使いの場合、<a href="/ja/Add-ons/WebExtensions/Debugging">メイン記事の拡張機能をデバッグする</a>を見てください。</p>
+</div>
+
+<p>この記事では、デフォルトでインストールされている Firefox 開発ツールを使って、WebExtension API で開発された拡張機能をどのようにデバッグするか説明します。Add-on SDK で開発したアドオンをデバッグする場合は、<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/Add-on_Debugger">アドオンデバッガ</a> の解説を参照してください。</p>
+
+<p>{{英語版章題("A simple example: notify-link-clicks-i18n")}}</p>
+
+<ul>
+</ul>
+
+<h2 id="簡単なサンプル_notify-link-clicks-i18n">簡単なサンプル: notify-link-clicks-i18n</h2>
+
+<p>デバックツールへの接続方法を、簡単なサンプル拡張機能 "notify-link-clicks-i18n" を用いて説明します。このコードは <a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">GitHub の WebExtensions examples リポジトリ</a> で公開されています。</p>
+
+<p>この拡張機能は以下から構成されています。</p>
+
+<ul>
+ <li>バックグラウンドスクリプト "background-script.js"</li>
+ <li>コンテンツスクリプト "content-script.js" (全てのページに読み込まれるスクリプト)</li>
+</ul>
+
+<p>ページ上のリンクをクリックするという動作は、コンテンツスクリプトがイベントとして感知します。リンクがクリックされた際、 リンクを含んだメッセージがコンテンツスクリプトからバックグラウンドスクリプトに送られます。</p>
+
+<p>バックグラウンドスクリプトがメッセージを受け取ると、リンクを含んだ通知画面が表示されます。</p>
+
+<p>"content-script.js" は次の通りです:</p>
+
+<pre class="brush: js">/*
+ <code class="language-js"><span class="comment token">リンクがクリックされた場合、バックグラウンドページにメッセージを送信する。
+ このメッセージにはリンクの URL が含まれている。</span></code>
+*/
+function notifyExtension(e) {
+ var target = e.target;
+ while ((target.tagName != "A" || !target.href) &amp;&amp; target.parentNode) {
+ target = target.parentNode;
+ }
+ if (target.tagName != "A")
+ return;
+
+ console.log("content script sending message");
+ chrome.runtime.sendMessage({"url": target.href});
+}
+
+/*
+ <code class="language-js"><span class="comment token">クリックイベントのリスナ関数に notifyExtension() を追加する</span></code>
+*/
+window.addEventListener("click", notifyExtension);
+</pre>
+
+<p>"background-script.js" は次の通りです:</p>
+
+<pre class="brush: js">/*
+ <code class="language-js"><span class="comment token">受信したメッセージを記録する。
+ 続いて通知画面を表示する。
+ この通知画面には、メッセージから読み取った URL が含まれている。</span></code>
+*/
+function notify(message) {
+ console.log("background script received message");
+ var title = chrome.i18n.getMessage("notificationTitle");
+ var content = chrome.i18n.getMessage("notificationContent", message.url);
+ chrome.notifications.create({
+ "type": "basic",
+ "iconUrl": chrome.extension.getURL("icons/link-48.png"),
+ "title": title,
+ "message": content
+ });
+}
+
+/*
+ <code class="language-js"><span class="comment token">content script からのメッセージを受信するリスナ関数に `notify()` を追加する</span></code>
+*/
+chrome.runtime.onMessage.addListener(notify);
+</pre>
+
+<p>以下の手順を実際に試してみる際は、 <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> リポジトリからコードを clone し、"notify-link-clicks-i18n" を<a href="/ja/Add-ons/WebExtensions/Packaging_and_installation"> インストールして下さい</a>。</p>
+
+<p>{{英語版章題("The Browser Toolbox")}}</p>
+
+<h2 id="ブラウザツールボックス">ブラウザツールボックス</h2>
+
+<p>拡張機能をデバッグするには <a href="/ja/docs/Tools/Browser_Toolbox">ブラウザツールボックス</a> を使用します。</p>
+
+<p>{{英語版章題("Prerequisites")}}</p>
+
+<h3 id="前提条件">前提条件</h3>
+
+<p>ブラウザツールボックスを使用する準備として、以下の手順を踏む必要があります。</p>
+
+<ul>
+ <li>Firefox 開発ツールを開く (Shift+Ctrl+I / F12)</li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Tools/Settings">設定</a> タブ(歯車のアイコン)を開く</li>
+ <li>"詳細な設定" において下記の設定項目にチェックが入っているか確認する。
+ <ul>
+ <li><em>ブラウザとアドオンのデバッガを有効</em></li>
+ <li><em>リモートデバッグを有効</em></li>
+ </ul>
+ </li>
+</ul>
+
+<p>{{EmbedYouTube("LJAM2vXJ790")}}</p>
+
+<p>{{英語版章題("Opening the Browser Toolbox")}}</p>
+
+<h3 id="ブラウザツールボックスを開く">ブラウザツールボックスを開く</h3>
+
+<p>次に、ブラウザツールボックスを開きます。</p>
+
+<ul>
+ <li>Alt キーを押下して表示されるメニューで、"ツール" → "Web 開発" → "ブラウザツールボックス" の順にクリックします。ブラウザコンソールでは無いことに中止して下さい。</li>
+ <li>警告ダイアログが出るかもしれませんが OK を押して下さい。</li>
+</ul>
+
+<p>ブラウザツールボックスが新しいウインドウとして開きます。ここで Firefox のメインウィンドウが前面に表示された場合は、ブラウザツールボックスが前に表示されるように画面をクリックしてください。{{EmbedYouTube("fZ492zAAy3o")}}</p>
+
+<p>Firefox における "ツールボックス" とは、下図のように複数のツールがタブで句切られているウインドウの名前です。<img alt="" src="https://mdn.mozillademos.org/files/11873/browser-toolbox.png" style="display: block; height: 458px; margin-left: auto; margin-right: auto; width: 900px;">上記のツールボックスには 5 つのツール、"Inspector" / "Console" / "Debugger" / "Style Editor" / "Scratchpad" が含まれており、ウインドウの上部にあるタブで切り替えることができます。この記事では "Console(コンソール)" と "Debugger(デバッガ)" の 2 つのツールを使用します。</p>
+
+<p>{{英語版章題("Viewing log output")}}</p>
+
+<h3 id="ログの出力を見る">ログの出力を見る</h3>
+
+<p>コンソールタブでログを見ることができます。ここに表示されるメッセージは以下から出力されたものです。</p>
+
+<ul>
+ <li>バックグラウンドスクリプト</li>
+ <li>ポップアップの中で動作しているスクリプト</li>
+ <li>コンテンツスクリプト</li>
+</ul>
+
+<p>このメッセージには、<a href="/ja/docs/Web/API/Console">Console API</a> を使用しているコードから出力されたログも含まれています。また、JavaScript エンジンからもエラーメッセージが出力されます。</p>
+
+<p>それでは上記のサンプルを使って試してみましょう。ブラウザツールボックスのコンソールタブを選択し、何かしらの Web ページを開き、リンクをクリックし、コンテンツスクリプトやバックグラウンドスクリプトからメッセージが記録されるのを確認してみましょう。</p>
+
+<p>{{EmbedYouTube("Qpx0n8gP3Qw")}}</p>
+
+<p>ただし、ブラウザツールボックスはどんなメッセージも受け取るため、要らないメッセージも多く受け取ってしまう問題があります。この問題を解決するには<a href="/ja/docs/Tools/Web_Console/Console_messages#Filtering_and_searching">フィルタリングと検索</a>を参照して下さい。</p>
+
+<p>{{英語版章題("Debugging JavaScript")}}</p>
+
+<h3 id="JavaScript_をデバッグする">JavaScript をデバッグする</h3>
+
+<p>ブラウザツールボックスを用いると、バックグラウンドスクリプトやブラウザ上で動作しているスクリプト、ポップアップのページアクションで動作するスクリプトに対し、JavaScript デバッガでブレークポイントを設定することができます。</p>
+
+<p>拡張機能がインストールされて有効になっている間は、デバッガからバックグラウンドスクリプトにアクセス可能です。ポップアップスクリプトは、ポップアップが表示されている間にアクセス可能です。ポップアップスクリプトが読み込まれた時点ですぐにデバッガからアクセスしたい場合は、スクリプトの最初に <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/debugger">debugger;</a></code> 文を挿入してみてください。</p>
+
+<p>JavaScript デバッガを使用するために、まずはブラウザツールボックスのデバッガタブを選択します。ここにはブラウザで動いている全てのソースコードが表示されています。そのため、<a href="/ja/docs/Tools/Debugger/How_to/Search_and_filter">検索ボックスをクリックしてソースの名前を入力し</a>、自分のスクリプトが表示されるようにします。</p>
+
+<p>自分のスクリプトを見つかったら、ブレークポイントをコードに設定したり、コードをステップ実行したり、<a href="/ja/docs/Tools/Debugger">他にもデバッガに可能なことは何でも実行できます</a>。</p>
+
+<p>{{EmbedYouTube("3edeJiG38ZA")}}</p>
+
+<p>{{英語版章題("JavaScript command line interpreter")}}</p>
+
+<h3 id="JavaScript_コマンドラインインタプリタ">JavaScript コマンドラインインタプリタ</h3>
+
+<p>コンソールには <a href="/ja/docs/Tools/Web_Console/The_command_line_interpreter">コマンドラインインタプリタ</a> が含まれており、実行しているプログラムの状態を調べたり操作することができます。この機能はコンソールを Web ページにアタッチしている際によく使いますが、ブラウザツールボックスでインタプリタを用いるのは一般に難しくなります(ブラウザツールボックスのコンソールは、デバッグしたい特定の拡張機能だけではなく、ブラウザ全体をスコープとしてしまうため)。</p>
+
+<p>とはいえ、次のようなトリックを使うと上手くいきます。デバッガがブレークポイントで停止している間は、そのプログラムにコンソールのスコープが設定されます。そのため、拡張機能のコードにブレークポイントを設定しておくことで、拡張機能中の関数を呼び出したり、変数値を再代入したりするなど、拡張機能に対して動的にアクセスすることができます。</p>
+
+<p>この機能は <a href="/ja/docs/Tools/Web_Console/Split_console">コンソールを常時表示</a> (画面の半分にはコンソールを、もう半分にはデバッガなどの異なるツールを表示)している際に特に効果的です。</p>
+
+<p>{{EmbedYouTube("xprf58qOtLY")}}</p>
+
+<p>{{英語版章題("Debugging content scripts")}}</p>
+
+<h3 id="コンテンツスクリプトをデバッグする">コンテンツスクリプトをデバッグする</h3>
+
+<p>ブラウザツールボックスには大きな制約が 1 つあります。それは、<a href="/ja/docs/Mozilla/Firefox/Multiprocess_Firefox">マルチプロセス Firefox</a> で開発している場合に、 JavaScript Debugger からコンテンツスクリプトにアタッチできない点です。</p>
+
+<p>マルチプロセス Firefox では少なくとも 2 つのプロセスに分かれています。一つはブラウザ自身の UI やシステムコードを実行し、他は Web ページのスクリプト実行などを担当する<em>コンテンツプロセス </em>です。ブラウザツールボックスは前者のプロセスにデバッガとしてアタッチします。しかし、コンテンツスクリプトは他のプロセスで実行しているため、ブラウザツールボックスのスクリプト一覧には表示されないのです。</p>
+
+<p>コンテンツスクリプトスクリプトをマルチプロセス Firefox でデバッグするには Browser Content Toolbox を使用して下さい。Browser Content Toolbox はブラウザツールボックスにちょうど似ていますが、開発ツールをブラウザのコンテンツプロセスにアタッチさせる点で異なり、コンテンツスクリプトにアクセスできるようになります。</p>
+
+<div class="note">
+<p>補足: この Browser Content Toolbox は、マルチプロセス Firefox で開発している場合にのみ必要なものであり、またその場合のみ利用可能です。</p>
+</div>
+
+<div class="warning">
+<p>ブラウザツールボックスのオプションで "Worker のデバッグを有効" を設定すると、Browser Content Toolbox でデバッグができなくなります。この問題は<span id="summary_alias_container"><span id="short_desc_nonedit_display"> </span></span> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1236892">Bug 1236892</a> で解決されるはずです。</p>
+</div>
+
+<p>{{EmbedYouTube("xAt3Q0PgJP4")}}</p>
+
+<p>{{英語版章題("Debugging popups")}}</p>
+
+<h3 id="ポップアップをデバッグする">ポップアップをデバッグする</h3>
+
+<div class="geckoVersionNote">Firefox 47 からの新機能です</div>
+
+<p>Firefox 47 から、ブラウザツールボックスでポップアップの中身をデバッグできるようになりました。デバッグは 3 つの手順からなります。</p>
+
+<ul>
+ <li>パネルの autohide を無効化する</li>
+ <li>ポップアップを開く</li>
+ <li>ポップアップを含んだドキュメントを選択する</li>
+</ul>
+
+<p>{{EmbedYouTube("EEU4NeAS1s4")}}</p>
+
+<h4 id="autohide_を無効化する">autohide を無効化する</h4>
+
+<p>パネルのデバッグに関してありがちな問題は、パネルの外をクリックすると隠れてしまう点です。そのため、まず初めにこの動作を無効化しておきましょう。ブラウザツールボックスで 4 つの小さい四角形からなるアイコンをクリックします。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/12622/disable-autohide.png" style="display: block; height: 417px; margin-left: auto; margin-right: auto; width: 877px;">すると、Escape キーを押した場合でもパネルが前面に表示されたままになるはずです。</p>
+
+<div class="note">
+<p>ここで設定した authohide の無効化は、拡張機能のポップアップのみならず、ハンバーガーメニュー (<img alt="" src="https://mdn.mozillademos.org/files/12712/hamburger.png" style="height: 20px; width: 22px;">) などによる <a href="/ja/docs/Tools/Browser_Toolbox#Debugging_popups">ブラウザ本体のポップアップ</a> にも適用されます。</p>
+
+<p>また、この設定はブラウザを再起動した後も引き継がれます。この件に関しては <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1251658">bug 1251658</a> で修正中ですが、現時点ではブラウザツールボックスを閉じる前に autohide を再び有効にしておくと良いでしょう。</p>
+
+<p>ブラウザの内部構造的には、この autohide ボタンは <code>ui.popup.disable_autohide</code> の設定項目を切り替えるだけのものです。そのため、about:config において手動で切り替えることも可能です。</p>
+</div>
+
+<h4 id="ポップアップを開く">ポップアップを開く</h4>
+
+<p>次にポップアップを開きます。ここでブラウザツールボックスに戻ると、パネルが開いたままになっているはずです。</p>
+
+<h4 id="ポップアップのフレームを選択する">ポップアップのフレームを選択する</h4>
+
+<p>ポップアップはそれ自身のフレームに読み込まれています。そのため、ブラウザツールボックスの <a href="/ja/docs/Tools/Browser_Toolbox#Targeting_a_document">フレーム選択ボタン</a> でポップアップのドキュメントを選択します。<img alt="" src="https://mdn.mozillademos.org/files/12624/frame-selection.png" style="display: block; height: 417px; margin-left: auto; margin-right: auto; width: 877px;">このドキュメントは以下のような名前を持っています。</p>
+
+<pre class="line-numbers language-html"><code class="language-html">moz-extension://<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>some-uuid</span><span class="punctuation token">&gt;</span></span>/path/to/your-popup.html</code></pre>
+
+<p>{{EmbedYouTube("/9jdHDCKIN-U")}}</p>
+
+<p>こうしてツールボックスのスコープがポップアップに設定されました。インスペクタでポップアップの HTML や CSS の確認・変更が行えます。デバッガでは、ポップアップに読み込まれているスクリプトを検索したり、スクリプトにブレークポイントを設定することができます。</p>
+
+<p>{{英語版章題("What about the Add-on Debugger?")}}</p>
+
+<h2 id="Add-on_Debuggerとは?">Add-on Debuggerとは?</h2>
+
+<p>Firefox での拡張機能のデバッグは、今後 <a href="/ja/Add-ons/Add-on_Debugger">Add-on Debugger</a> が用いられる予定になっています。</p>
+
+<p>ブラウザツールボックスと比較した際、<a href="/ja/docs/Mozilla/Add-ons/Add-on_Debugger">Add-on Debugger</a> は拡張機能ファイルのみを表示するため、容易にスクリプトを探すことができるという大きな利点があります。しかし今のところ、コンソールメッセージを拡張機能から Add-on Debugger へ表示させられないため、ブラウザツールボックスのほうが便利です。</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/examples/index.html b/files/ja/mozilla/add-ons/webextensions/examples/index.html
new file mode 100644
index 0000000000..a5d7895db9
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/examples/index.html
@@ -0,0 +1,29 @@
+---
+title: 拡張機能の例
+slug: Mozilla/Add-ons/WebExtensions/Examples
+tags:
+ - Interface
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Examples
+---
+<div>{{AddonSidebar}}</div>
+
+<p>拡張機能の開発方法を分かりやすく説明するため、シンプルな拡張機能のサンプルを集めたリポジトリ <a href="https://github.com/mdn/webextensions-examples">https://github.com/mdn/webextensions-examples</a> を公開しています。この記事では、そのリポジトリで使われている WebExtension API について説明します。</p>
+
+<p>これらのサンプルは Firefox Nightly で動作します。ほとんどのものがよりバージョン番号の小さい Firefox でも動作しますが、拡張機能の manifest.json に指定されている <code><a href="/ja/Add-ons/WebExtensions/manifest.json/applications">strict_min_version</a></code> キーを確認してください。</p>
+
+<p>試してみたい方には、3 つの選択肢があります:</p>
+
+<ol>
+ <li>リポジトリを clone し、アドオンをソースディレクトリーから直接読み込む方法。<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">{{原語併記("Load Temporary Add-on", "一時的にアドオンを読み込み")}}</a> 機能を使います。Firefox を再起動するまで拡張機能は読み込まれたままです。</li>
+ <li>リポジトリを clone し、<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> コマンドラインツールを使って その拡張機能がインストールされた状態で Firefox を起動する。</li>
+ <li>リポジトリを clone し、<a href="https://github.com/mdn/webextensions-examples/tree/master/build">build</a> ディレクトリーに移動する。ここにはすべてのサンプルのビルドされ署名されたバージョンが置かれています。Firefox のメニュー ファイル/ファイルを開く から開いて、拡張機能をインストールすることができます。<a href="https://addons.mozilla.org/en-US/firefox/">addons.mozilla.org</a> からインストールしたのと同じ状態になります。</li>
+</ol>
+
+<div class="blockIndicator warning">
+<p><strong>重要</strong>: この例の WebExtension を AMO (addons.mozilla.org)に投稿しないでください、WebExtension のサンプルを実行するのに署名をする必要はありません。単に上記の手順に従ってください。</p>
+</div>
+
+<p>リポジトリにコントリビュートしたい方は、是非とも <a href="https://github.com/mdn/webextensions-examples/blob/master/CONTRIBUTING.md">pull request</a> を送ってください!</p>
+
+<p>{{WebExtAllExamples}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/extending_the_developer_tools/index.html b/files/ja/mozilla/add-ons/webextensions/extending_the_developer_tools/index.html
new file mode 100644
index 0000000000..75fdb38e28
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/extending_the_developer_tools/index.html
@@ -0,0 +1,166 @@
+---
+title: developer tools の拡張
+slug: Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools
+tags:
+ - Add-ons
+ - DevTools
+ - Needs Privileges
+ - WebExtensions
+ - ガイド
+ - 拡張機能
+translation_of: Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools
+---
+<div>{{AddonSidebar}}</div>
+
+<div class="note">
+<p>このページでは、Firefox 55に存在するdevtools APIについて説明しています。このAPIは<a href="https://developer.chrome.com/extensions/devtools">Chrome devtools APIs</a>に基づいていますが、まだFirefoxでは実装されていないため、ここでは説明していません。現在欠けている機能を確認するには、<a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Using_the_devtools_APIs#Limitations_of_the_devtools_APIs">devtools APIの制限</a>を参照してください。</p>
+</div>
+
+<p><span class="seoSummary">WebExtensions API を使用して、ブラウザの組み込み開発者ツールを拡張できます。</span> devtools 拡張機能を作成するには、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> に "<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a>" キーを含めます:</p>
+
+<pre class="brush: json">"devtools_page": "devtools/devtools-page.html"</pre>
+
+<p>このキーの値は、拡張機能にバンドルされている HTML ファイルを指す URL です。URL は manifest.json ファイル自体に関連する必要があります。</p>
+
+<p>HTML ファイルは、devtools ページと呼ばれる特別なページを拡張機能で定義します。</p>
+
+<h2 id="devtools_ページ">devtools ページ</h2>
+
+<p>devtools ページはブラウザの devtools を開くとロードされ、閉じるとアンロードされます。devtools ウィンドウは単一のタブに関連付けられているため、複数の devtools ウィンドウ、つまり複数の devtools ページが同時に存在する可能性が非常に高いことに注意してください。</p>
+
+<p>devtools ページには目に見える DOM はありませんが、<code><a href="/ja/docs/Web/HTML/Element/Script">&lt;script&gt;</a></code> タグを使用して JavaScript ソースを含めることができます。ソースは拡張機能自体にバンドルする必要があります。ソースは以下にアクセスできます:</p>
+
+<ul>
+ <li>グローバル <code><a href="/ja/docs/Web/API/Window">window</a></code> オブジェクトを介してアクセス可能な通常の DOM API</li>
+ <li>コンテンツスクリプトと<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#WebExtension_APIs">同じ WebExtension API</a></li>
+ <li>devtools API:
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow">devtools.inspectedWindow</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.network">devtools.network</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels">devtools.panels</a></code></li>
+ </ul>
+ </li>
+</ul>
+
+<p>devtools ページは他の WebExtension API にアクセスできず、バックグラウンドページは devtools API にアクセスできないことに注意してください。代わりに、devtools ページとバックグラウンドページは <code>runtime</code> メッセージング API を使用して通信する必要があります。ここに例があります:</p>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;meta charset="utf-8"&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+    &lt;script src="devtools.js"&gt;&lt;/script&gt;
+  &lt;/body&gt;
+&lt;/html&gt;</pre>
+
+<p>devtools.js ファイルには、開発ツール拡張機能を作成する実際のコードが保持されます。</p>
+
+<h2 id="パネルの作成">パネルの作成</h2>
+
+<p>devtools ウィンドウは、JavaScript デバッガ、ネットワークモニターなどの多数の個別ツールをホストします。上部にあるタブの行により、ユーザーはさまざまなツールを切り替えることができます。各ツールのユーザーインターフェイスをホストするウィンドウは「パネル」と呼ばれます。</p>
+
+<p><code>devtools.panels.create()</code> API を使用して、devtools ウィンドウに独自のパネルを作成できます:</p>
+
+<pre class="brush: js">browser.devtools.panels.create(
+ "My Panel", // title
+ "icons/star.png", // icon
+ "devtools/panel/panel.html" // content
+).then((newPanel) =&gt; {
+ newPanel.onShown.addListener(initialisePanel);
+ newPanel.onHidden.addListener(unInitialisePanel);
+});</pre>
+
+<p>これにはパネルのタイトル、アイコン、コンテンツの3つの引数が必要です。新しいパネルを表す <code>devtools.panels.ExtensionPanel</code> オブジェクトに解決される <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> を返します。</p>
+
+<h2 id="ターゲットウィンドウとのインタラクション">ターゲットウィンドウとのインタラクション</h2>
+
+<p>開発者ツールは常に特定のブラウザタブに添付されます。これは開発者ツールの「ターゲット」または「検出済みウィンドウ」と呼ばれます。<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow">devtools.inspectedWindow</a></code> を使用して、検出されたウィンドウとインタラクションできます。</p>
+
+<h3 id="ターゲットウィンドウでコードを実行する">ターゲットウィンドウでコードを実行する</h3>
+
+<p><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval">devtools.inspectedWindow.eval()</a></code> は、検出されたウィンドウでコードを実行する1つの方法を提供します。</p>
+
+<p>これは {{WebExtAPIRef("tabs.executeScript()")}} を使用してコンテンツスクリプトを挿入することに似ていますが、1つの重要な違いがあります:</p>
+
+<ul>
+ <li>コンテンツスクリプトとは異なり、<code>devtools.inspectedWindow.eval()</code><strong> </strong>を使用してロードされたスクリプトは「<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#DOM_access">DOM のクリーンビュー</a>」を取得<strong>しません</strong>。つまり、ページスクリプトによって行われたページの変更を確認できます。</li>
+</ul>
+
+<div class="note">
+<p>DOM のクリーンビューはセキュリティ機能であり、ネイティブ DOM 関数の動作を再定義することにより、悪意のあるページが拡張機能をだますことを防ぐのに役立つことに注意してください。これは eval() を使用する際に非常に注意する必要があることを意味し、可能であれば通常のコンテンツスクリプトを使用する必要があります。</p>
+</div>
+
+<p><code>devtools.inspectedWindow.eval()</code> を使用してロードされたスクリプトも、コンテンツスクリプトで定義された JavaScript 変数を認識しません。</p>
+
+<h3 id="コンテンツスクリプトの使用">コンテンツスクリプトの使用</h3>
+
+<p>devtoolsドキュメントは {{WebExtAPIRef("tabs.executeScript()")}} に直接アクセスできません。したがって、コンテンツスクリプトを挿入する必要がある場合、devtools ドキュメントはバックグラウンドスクリプトにメッセージを送信してスクリプトの挿入を要求する必要があります。<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/tabId">devtools.inspectedWindow.tabId</a></code> はターゲットタブの ID を提供します。devtools ドキュメントはこれをバックグラウンドスクリプトに渡すことができ、バックグラウンドスクリプトはそれを {{WebExtAPIRef("tabs.executeScript()")}} に渡すことができます:</p>
+
+<pre class="brush: js">// devtools-panel.js
+
+const scriptToAttach = "document.body.innerHTML = 'Hi from the devtools';";
+
+window.addEventListener("click", () =&gt; {
+ browser.runtime.sendMessage({
+ tabId: browser.devtools.inspectedWindow.tabId,
+ script: scriptToAttach
+ });
+});</pre>
+
+<pre class="brush: js">// background.js
+
+function handleMessage(request, sender, sendResponse) {
+ browser.tabs.executeScript(request.tabId, {
+ code: request.script
+ });
+}
+
+browser.runtime.onMessage.addListener(handleMessage);</pre>
+
+<p>ターゲットウィンドウで実行されているコンテンツスクリプトとdevtoolsドキュメントの間でメッセージを交換する必要がある場合は、{{WebExtAPIRef("runtime.connect()")}} および {{WebExtAPIRef("runtime.onConnect")}} を使用してバックグラウンドページと devtools ドキュメント間の接続を設定することを<span class="tlid-translation translation" lang="ja"><span title="">お勧め</span></span>します。バックグラウンドページはタブ ID と {{WebExtAPIRef("runtime.Port")}} オブジェクト間のマッピングを維持し、これを使用して2つのスコープ間でメッセージをルーティングできます。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/14923/devtools-content-scripts.png" style="display: block; height: 416px; margin-left: auto; margin-right: auto; width: 600px;"></p>
+
+<h2 id="devtools_APIs_の制限">devtools APIs の制限</h2>
+
+<p>これらの API は Chrome devtools API に基づいていますが、Chrome と比較して多くの機能がまだありません。このセクションでは、Firefox 54 の時点でまだ実装されていない機能をリストします。devtools API は活発に開発中であり、将来のリリースでそれらのほとんどのサポートを追加する予定です。</p>
+
+<h3 id="devtools.inspectedWindow">devtools.inspectedWindow</h3>
+
+<p>以下はサポートされていません:</p>
+
+<ul>
+ <li><code>inspectedWindow.getResources()</code></li>
+ <li><code>inspectedWindow.onResourceAdded</code></li>
+ <li><code>inspectedWindow.onResourceContentCommitted</code></li>
+</ul>
+
+<p><code>inspectedWindow.eval()</code> のオプションはいずれもサポートされていません。</p>
+
+<p><code>inspectedWindow.eval()</code> を使用して挿入されたスクリプトは、コンソールのすべてのコマンドラインヘルパー関数を使用できませんが、 <code>$0</code> と <code>inspect(...)</code> の両方がサポートされています (Firefox 55 以降)。</p>
+
+<h3 id="devtools.panels">devtools.panels</h3>
+
+<p>以下はサポートされていません:</p>
+
+<ul>
+ <li><code>panels.elements</code></li>
+ <li><code>panels.sources</code></li>
+ <li><code>panels.setOpenResourceHandler()</code></li>
+ <li><code>panels.openResource()</code></li>
+ <li><code>panels.ExtensionPanel.createStatusBarButton()</code></li>
+ <li><code>panels.Button</code></li>
+ <li><code>panels.ElementsPanel</code></li>
+ <li><code>panels.SourcesPanel</code></li>
+</ul>
+
+<h2 id="例">例</h2>
+
+<p>GitHub の <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> リポジトリには、devtools パネルを使用する拡張機能のいくつかの例が含まれています。</p>
+
+<ul>
+ <li>
+ <p><a href="https://github.com/mdn/webextensions-examples/blob/master/devtools-panels/">devtools-panels</a> は devtools パネルを使用します:</p>
+ </li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/implement_a_settings_page/index.html b/files/ja/mozilla/add-ons/webextensions/implement_a_settings_page/index.html
new file mode 100644
index 0000000000..b07cf5c99e
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/implement_a_settings_page/index.html
@@ -0,0 +1,221 @@
+---
+title: 設定ページを実装する
+slug: Mozilla/Add-ons/WebExtensions/Implement_a_settings_page
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Implement_a_settings_page
+---
+<div>{{AddonSidebar}}</div>
+
+<p>設定ページは、ユーザーに拡張機能の設定を確認して変える方法を与えます(「プリファレンス」や「オプション」とも呼ばれます)。</p>
+
+<p>WebExtension API では一般に、設定は <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></code> API で保存されます。設定ページの実装は次の 3 ステップの手順です:</p>
+
+<ul>
+ <li>設定を表示して、ユーザーがそれを変更できる HTML を書く。</li>
+ <li>HTML からインクルードされる、ストレージから設定ページに投入し、ユーザーが変更した時に保存された設定を更新するスクリプトを書く。</li>
+ <li>HTML ファイルのパスを manifest.json の <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code> キーに設定する。これにより、HTML 文書が、拡張機能の名前や説明と共に、文書ブラウザーのアドオンマネージャーに表示される。</li>
+</ul>
+
+<div class="note">
+<p><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/openOptionsPage">runtime.openOptionsPage()</a></code> 関数を使ってプログラム的に開くこともできます。</p>
+</div>
+
+<h2 id="A_simple_extension" name="A_simple_extension">簡単な拡張機能</h2>
+
+<p>まずは、ユーザーが訪問するページに青い枠をつける拡張機能を書きます。</p>
+
+<p>"settings" というディレクトリーを作り、そこに "manifest.json" という名前のファイルを作って下記の中身を入れます:</p>
+
+<pre class="brush: json">{
+
+ "manifest_version": 2,
+ "name": "Settings example",
+ "version": "1.0",
+
+ "content_scripts": [
+ {
+ "matches": ["&lt;all_urls&gt;"],
+ "js": ["borderify.js"]
+ }
+ ]
+
+}</pre>
+
+<p>この拡張機能はブラウザーに対し、"borderify.js" というコンテンツスクリプトを、ユーザーが訪問するすべてのウェブページで読み込むよう指示します。</p>
+
+<p>次に、"settings" ディレクトリー内に "borderify.js" というファイルを作り、次の中身を入れます:</p>
+
+<pre class="brush: js">document.body.style.border = "10px solid blue";</pre>
+
+<p>これは単にページに青い枠をつけます。</p>
+
+<p><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">この拡張機能をインストール</a>してテストします — お好みのあらゆるウェブページを開きます:</p>
+
+<p>{{EmbedYouTube("E-WUhihF8fw")}}</p>
+
+<h2 id="Adding_settings" name="Adding_settings">設定を追加する</h2>
+
+<p>今度は枠の色をユーザーが設定できるような設定ページを作りましょう。</p>
+
+<p>まずは "manifest.json" を次の中身に更新します:</p>
+
+<pre class="brush: json line-numbers language-json">{
+
+ "manifest_version": 2,
+ "name": "Settings example",
+ "version": "1.0",
+
+ "content_scripts": [
+ {
+ "matches": ["&lt;all_urls&gt;"],
+ "js": ["borderify.js"]
+ }
+ ],
+
+ "options_ui": {
+ "page": "options.html"
+ },
+
+ <code class="language-json"><span class="property token">"permissions"</span><span class="operator token">:</span> <span class="punctuation token">[</span><span class="string token">"storage"</span><span class="punctuation token">]</span><span class="punctuation token">,</span>
+
+ <span class="property token">"applications"</span><span class="operator token">:</span> <span class="punctuation token">{</span>
+ <span class="property token">"gecko"</span><span class="operator token">:</span> <span class="punctuation token">{</span>
+ <span class="property token">"id"</span><span class="operator token">:</span> <span class="string token">"addon@example.com"</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span>
+
+<span class="punctuation token">}</span></code></pre>
+
+<p>新しく次の 3 つのキーを追加しました:</p>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code>: これは HTML 文書に、この拡張機能の設定ページ(オプションページともいう)であることを設定します</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code>: <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></code> API を使って設定を保存し、この API を使うパーミッションが必要です</li>
+ <li><code>applications</code>: 同期ストレージに設定を読み書きするには、拡張機能の ID を入れておく必要があります</li>
+</ul>
+
+<p>次に "options.html" を提供する約束をしたので、作成します。"settings" ディレクトリー内にその名前でファイルを作成して、次の中身を与えます:</p>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;/head&gt;
+
+ &lt;body&gt;
+
+ &lt;form&gt;
+ &lt;label&gt;Border color&lt;input type="text" id="color" &gt;&lt;/label&gt;
+ &lt;button type="submit"&gt;Save&lt;/button&gt;
+ &lt;/form&gt;
+
+ &lt;script src="options.js"&gt;&lt;/script&gt;
+
+ &lt;/body&gt;
+
+&lt;/html&gt;
+</pre>
+
+<p>これは {{htmlelement("form")}} と、そこにラベル付きのテキスト {{htmlelement("input")}} と送信 {{htmlelement("button")}} を定義します。また "options.js" というスクリプトも入っています。</p>
+
+<p>もう一度 "options.js"を "settings" ディレクトリーに作り、次の中身を与えます:</p>
+
+<pre class="brush: js">function saveOptions(e) {
+ e.preventDefault();
+ browser.storage.sync.set({
+ color: document.querySelector("#color").value
+ });
+}
+
+function restoreOptions() {
+
+ function setCurrentChoice(result) {
+ document.querySelector("#color").value = result.color || "blue";
+ }
+
+ function onError(error) {
+ console.log(`Error: ${error}`);
+ }
+
+ var getting = browser.storage.sync.get("color");
+ getting.then(setCurrentChoice, onError);
+}
+
+document.addEventListener("DOMContentLoaded", restoreOptions);
+document.querySelector("form").addEventListener("submit", saveOptions);
+</pre>
+
+<p>これは 2 つのことをします:</p>
+
+<ul>
+ <li>文書が読み込まれた時、"color" の値を <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/get">storage.sync.get()</a></code> を使ってストレージから取り出します。値が未設定なら、既定の "blue" を用います。これで値を <code>sync</code> ストレージ領域から取得できます。</li>
+ <li>ユーザーが "Save" を押して送信した時、テキストボックスの値を <code><a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/set">storage.sync.set()</a></code> を用いて保存します。これで値を <code>sync</code> ストレージ領域に保存できます。</li>
+</ul>
+
+<div class="blockIndicator note">
+<p>記: 別々の .js ファイルの指定が必要です。インライン JavaScript は使用できません。</p>
+</div>
+
+<p>ローカルストレージがふさわしいと感じる場合、代わりにローカルストレージに設定値を保存できます。</p>
+
+<div class="note">
+<p>Firefox の <code>storage.sync</code> の実装はアドオン ID に依存しているのに注意します。<code>storage.sync</code> を使う場合、上記manifest にあるように、manifest.json の <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">applications</a></code> キーに拡張機能の ID をセットしておく必要があります。</p>
+</div>
+
+<p>最後に、ストレージから枠の色を読むのに "borderify.js" を更新します:</p>
+
+<div class="warning">
+<p>バージョン 52 より前の Firefox の <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/get">browser.storage.local.get()</a> のバグにより、下記のコードは機能しません。バージョン 52 より前の Firefox で動作させるには、<code>onGot()</code> の中で 2 回出てくる <code>item.color</code> を <code>item[0].color</code> に変えないといけません。</p>
+</div>
+
+<pre class="brush: js"> function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+function onGot(item) {
+ var color = "blue";
+ if (item.color) {
+ color = item.color;
+ }
+ document.body.style.border = "10px solid " + color;
+}
+
+var getting = browser.storage.sync.get("color");
+getting.then(onGot, onError);
+</pre>
+
+<p>この時点で、拡張機能はこのようになります:</p>
+
+<pre>settings/
+ borderify.js
+ manifest.json
+ options.html
+ options.js</pre>
+
+<p>いま、次を行ってみます:</p>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Temporary_Installation_in_Firefox#Reloading_a_temporary_add-on">拡張機能を再読み込み</a></li>
+ <li>ウェブページを読み込む</li>
+ <li>設定ページを開いて枠の色を変える</li>
+ <li>ウェブページを再読み込みして違いを見る</li>
+</ul>
+
+<p>Firefox で設定ページにアクセスするには about:addons に移動して拡張機能のエントリーの隣の "Preferences" ボタンをクリックします。</p>
+
+<p>{{EmbedYouTube("ECt9cbWh1qs")}}</p>
+
+<h2 id="Learn_more" name="Learn_more">詳しく学ぶ</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code> マニフェストキーのリファレンス文書</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></code> API のリファレンス文書</li>
+ <li>拡張機能から直接設定ページを開くには <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/openOptionsPage">runtime.openOptionsPage()</a></code> API を使う</li>
+ <li>設定ページの例:
+ <ul>
+ <li><a href="https://github.com/mdn/webextensions-examples/tree/master/favourite-colour">favourite-colour</a></li>
+ </ul>
+ </li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/index.html b/files/ja/mozilla/add-ons/webextensions/index.html
new file mode 100644
index 0000000000..dcbf313a44
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/index.html
@@ -0,0 +1,141 @@
+---
+title: ブラウザー拡張機能
+slug: Mozilla/Add-ons/WebExtensions
+tags:
+ - Add-ons
+ - Extensions
+ - Landing
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions
+---
+<p>{{AddonSidebar}}</p>
+
+<p><span class="seoSummary">拡張機能はブラウザーの能力を拡張・修正するものです。Firefox の拡張機能は WebExtensions API を使ってビルドされ、この API は拡張機能をクロスブラウザーで開発するシステムです。</span>このシステムの大半は Google Chrome と Opera と <a href="https://browserext.github.io/browserext/">W3C Draft Community Group</a> でサポートされている <a class="external-icon external" href="https://developer.chrome.com/extensions">extension API</a> と互換性があります。</p>
+
+<p>これらのブラウザー用に書かれた拡張機能は大抵の場合、<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Porting_from_Google_Chrome">ほんの少し変更を加えるだけで</a> Firefox や <a href="https://developer.microsoft.com/en-us/microsoft-edge/platform/documentation/extensions/">Microsoft Edge</a> でも動かすことができます。この API は <a href="https://developer.mozilla.org/ja/Firefox/Multiprocess_Firefox">マルチプロセス Firefox</a> にも完全互換です。</p>
+
+<p>お持ちのアイデアや質問があったり、レガシーアドオンを WebExtensions API を使うように移行するのに助けが要る場合、<a href="https://mail.mozilla.org/listinfo/dev-addons">dev-addons のメーリングリスト</a> (英語) や <a href="https://chat.mozilla.org/#/room/#addons:mozilla.org">Add-ons room</a> (英語) や <a href="irc://irc.mozilla.org/webextensions">Matrix</a> (英語) にてご連絡ください。</p>
+
+<p>日本語情報としては <a href="https://bit.ly/mozilla-jp-slack">Mozilla Japan コミュニティの Slack</a> の #extdev チャンネルで情報交換が行われています。</p>
+
+<div class="row topicpage-table">
+<div class="section">
+<h2 id="Getting_started" name="Getting_started">始めましょう</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions">拡張機能とは何か?</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension">初めての拡張機能</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Walkthrough">2 つめの拡張機能</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">拡張機能の中身</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Examples">拡張機能の例</a></li>
+</ul>
+
+<h2 id="Concepts" name="Concepts">概念</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">コンテンツスクリプト</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">マッチパターン</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Working_with_files">ファイルの操作</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Internationalization">多言語対応</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Security_best_practices">セキュリティのベストプラクティス</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security Policy</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Native_messaging">Native messaging</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools">devtools APIs を使用する</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Native_manifests">ネイティブマニフェスト</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Native_manifests">manifests ファイル</a></li>
+</ul>
+
+<h2 id="User_interface" name="User_interface">ユーザーインターフェイス</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface">導入</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action">ブラウザーツールバーボタン</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups">ポップアップ付きブラウザーツールバーボタン</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions">アドレスバーボタン</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups">ポップアップ付きアドレスバーボタン</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items">コンテキストメニューの項目</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars">サイドバー</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">オプションページ</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages">Extension pages</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Notifications">通知</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Omnibox">アドレスバーの入力候補</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels">開発ツールパネル</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles">ブラウザースタイル</a></li>
+</ul>
+
+<h2 id="How_to" name="How_to">逆引きリファレンス</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests">HTTP リクエストへの介入</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Modify_a_web_page">web ページの変更</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar">ツールバーボタンの追加</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page">設定画面の実装</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard">クリップボードとのやりとり</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Working_with_the_Tabs_API">Tabs API を使用する</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Work_with_the_Bookmarks_API">Bookmarks API を使用する</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Work_with_the_Cookies_API">Cookies API を使用する</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Work_with_contextual_identities">Contextual Identity を使用する</a></li>
+ <li><a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/userScripts/Working_with_userScripts">userScripts を使用する</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Safely_inserting_external_content_into_a_page">外部コンテンツの挿入</a></li>
+</ul>
+
+<h2 id="Porting" name="Porting">移行</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Porting_from_Google_Chrome">Google Chrome extension からの移行</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on">古い Firefox アドオンの移行</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Developing_WebExtensions_for_Firefox_for_Android">Android 向け Firefox 拡張機能の開発</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Thunderbird における WebExtensions によるアドイン開発">Thunderbird における WebExtensions によるアドイン開発</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK">Add-on SDK との比較</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">XUL/XPCOM 拡張との比較</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities">Chrome との非互換性</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Differences_between_desktop_and_Android">デスクトップ版と Android 版の拡張機能の違い</a></li>
+</ul>
+
+<h2 id="Firefox_workflow" name="Firefox_workflow">Firefox でのワークフロー</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/User_experience_best_practices">ユーザー体験の成功事例</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">Firefox への一時的なインストール</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/デバッグ">デバッグ</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Testing_persistent_and_restart_features">テストの持続と再起動機能</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">はじめての web-ext</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/web-ext_command_reference">web-ext コマンドリファレンス</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">Extensions と Add-on ID</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Distribution_options">配布方法の選択肢</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Request_the_right_permissions">正しいパーミッションを要求する</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Sharing_objects_with_page_scripts">オブジェクトを Web ページのスクリプトと共有する</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Retiring_your_extension">拡張機能を引退させる</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Tips">Tips and Tricks</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Development_Tools">ブラウザー拡張機能の開発ツール</a></li>
+</ul>
+</div>
+
+<div class="section">
+<h2 id="Reference" name="Reference">リファレンス</h2>
+
+<h3 id="JavaScript_APIs" name="JavaScript_APIs">JavaScript API 群</h3>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API">JavaScript API の概要</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">JavaScript API 群のブラウザー互換性表</a></li>
+</ul>
+
+<div class="twocolumns">{{ ListSubpages ("/ja/docs/Mozilla/Add-ons/WebExtensions/API") }}</div>
+
+<h3 id="Manifest_keys" name="Manifest_keys">Manifest keys</h3>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json の概要</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">manifest.json のブラウザー互換性</a></li>
+</ul>
+
+<div class="twocolumns">{{ ListSubpages ("/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json") }}</div>
+</div>
+</div>
+
+<div class="SnapLinksContainer" style="margin-left: 0px; margin-top: 0px; display: none;">
+<div class="SL_SelectionRect">
+<div class="SL_SelectionLabel"></div>
+</div>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/index/index.html b/files/ja/mozilla/add-ons/webextensions/index/index.html
new file mode 100644
index 0000000000..ec4a9066f7
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/index/index.html
@@ -0,0 +1,14 @@
+---
+title: 索引
+slug: Mozilla/Add-ons/WebExtensions/Index
+tags:
+ - Add-ons
+ - Index
+ - WebExtensions
+ - アドオン
+ - 索引
+translation_of: Mozilla/Add-ons/WebExtensions/Index
+---
+<div>{{AddonSidebar}}</div>
+
+<div style="overflow: auto;">{{Index("/ja/docs/Mozilla/Add-ons/WebExtensions")}}</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/interact_with_the_clipboard/index.html b/files/ja/mozilla/add-ons/webextensions/interact_with_the_clipboard/index.html
new file mode 100644
index 0000000000..3947b8491f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/interact_with_the_clipboard/index.html
@@ -0,0 +1,106 @@
+---
+title: クリップボードとのやりとり
+slug: Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard
+---
+<div>{{AddonSidebar}}</div>
+
+<p><code><a href="/ja/docs/Web/API/Document/execCommand">document.execCommand()</a></code>を使用することで、WebExtension API で構築されたブラウザー拡張がシステムのクリップボードと連携できるようになります:</p>
+
+<ul>
+ <li><code>document.execCommand("copy")</code></li>
+ <li><code>document.execCommand("cut")</code></li>
+ <li><code>document.execCommand("paste")</code></li>
+</ul>
+
+<h2 id="Writing_to_the_clipboard" name="Writing_to_the_clipboard">クリップボードへの書き込み</h2>
+
+<p>document.execCommand をユーザー操作に対する短命なイベントハンドラー(例えば click ハンドラー)のなかで実行することで、特別な許可なしに"切り取り"や"コピー"などのクリップボード操作が可能になります。</p>
+
+<p>例えば、次のような HTML を含むポップアップを見たとします:</p>
+
+<pre class="brush: html">&lt;input id="input" type="text"/&gt;
+&lt;button id="copy"&gt;Copy&lt;/button&gt;
+</pre>
+
+<p>"copy"ボタンで"input"要素の内容をコピーするためには、次のようなコードを使用します。:</p>
+
+<pre class="brush: js">function copy() {
+ var copyText = document.querySelector("#input");
+ copyText.select();
+ document.execCommand("copy");
+}
+
+document.querySelector("#copy").addEventListener("click", copy);</pre>
+
+<p><code>execCommand()</code> が click イベントハンドラーの中で呼ばれているので、特別な許可はここでは不要です。</p>
+
+<p>しかし、たとえば alarm の中からコピーを実行するとどうなるでしょうか。:</p>
+
+<pre class="brush: js">function copy() {
+ var copyText = document.querySelector("#input");
+ copyText.select();
+ document.execCommand("copy");
+}
+
+browser.alarms.create({
+ delayInMinutes: 0.1
+});
+
+browser.alarms.onAlarm.addListener(copy);</pre>
+
+<p>ブラウザーにもよりますが、おそらくコピーはうまくいかないでしょう。Firefox ではうまくいきません。そして、ブラウザーコンソールに以下のようなメッセージが出力されているのが確認できると思います。:</p>
+
+<pre>"document.execCommand(‘cut’/‘copy’) was denied because it was not called from inside a short running user-generated event handler."</pre>
+
+<p>上記のようなケースでもコピーを可能にするには、"clipboardWrite" <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> の要求が必要です。"clipboardWrite"はユーザー操作に対する短命なイベントハンドラー以外の箇所でもクリップボードに対する書き込みを可能にします。</p>
+
+<h3 id="Browser-specific_considerations" name="Browser-specific_considerations">特定のブラウザーにおける留意事項</h3>
+
+<p>Chrome の場合:</p>
+
+<ul>
+ <li>バックグラウンドページ、コンテンツスクリプト、オプションページ、ポップアップなどすべての実行コンテキストでクリップボードへの書き込みが可能です。</li>
+ <li>ユーザー操作が起点のイベントハンドラーの外でクリップボードに書き込む場合でも、実際には"clipboardWrite"は不要です。</li>
+</ul>
+
+<p>Firefox の場合:</p>
+
+<ul>
+ <li>バックグラウンドページを除くすべての実行コンテキストでクリップボードへの書き込みが可能です。Firefox ではテキストを選択したり、入力フィールドにフォーカスすることがバックグラウンドページではできません。そのため、バックグラウンドページからはクリップボードへの書き込みができません。</li>
+ <li>"clipboardWrite" パーミッションはバージョン 51以降でのみサポートされます。</li>
+ <li>バージョン 57以降では、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/clipboard/setImageData">clipboard.setImageData()</a></code> API を使用することでクリップボードへの画像のコピーが可能です。</li>
+</ul>
+
+<h2 id="Reading_from_the_clipboard" name="Reading_from_the_clipboard">クリップボードからの読み込み</h2>
+
+<p>"貼り付け"を使用するには"clipboardRead" <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Request_the_right_permissions">permission</a> が必要です。例えば、HTML に次のような内容を含めると思います:</p>
+
+<pre class="brush: html">&lt;textarea id="output"&gt;&lt;/textarea&gt;
+&lt;button id="paste"&gt;Paste&lt;/button&gt;
+</pre>
+
+<p>ユーザーが"paste"をクリックした際に"output"要素にクリップボードの内容を設定する場合、次のようなコードを使用します:</p>
+
+<pre class="brush: js">function paste() {
+ var pasteText = document.querySelector("#output");
+ pasteText.focus();
+ document.execCommand("paste");
+ console.log(pasteText.textContent);
+}
+
+document.querySelector("#paste").addEventListener("click", paste);</pre>
+
+<p>このコードには、ユーザー操作が起点のイベントハンドラーの場合でも"clipboardRead"のパーミッションが必要です。</p>
+
+<h3 id="Browser-specific_considerations_2" name="Browser-specific_considerations_2">特定のブラウザーにおける留意事項</h3>
+
+<p>Firefox は"clipboardRead" <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> をバージョン 54 からサポートしています。しかし、クリップボードからの読み込みにはパーミッションの他に、貼り付け先の要素が <a href="/ja/docs/Web/Guide/HTML/Editable_content">content editable mode</a> である必要があります。さらに、コンテンツスクリプトの場合は&lt;textarea&gt;要素のみ動作します。バックグラウンドスクリプトでは、どの要素でも content editable mode に設定できます。</p>
+
+<div id="simple-translate-button" style="display: none;"> </div>
+
+<div id="simple-translate-panel" style="display: none;">
+<p>...</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/intercept_http_requests/index.html b/files/ja/mozilla/add-ons/webextensions/intercept_http_requests/index.html
new file mode 100644
index 0000000000..e6b809f440
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/intercept_http_requests/index.html
@@ -0,0 +1,159 @@
+---
+title: HTTP リクエストへの介入
+slug: Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests
+tags:
+ - Add-ons
+ - Extensions
+ - How-to
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests
+---
+<div>{{AddonSidebar}}</div>
+
+<p>HTTP リクエストへ介入するには {{WebExtAPIRef("webRequest")}} API を用います。 この API を利用すると、HTTP リクエストの生成段階における様々なタイミングにリスナ関数を追加できます。追加したリスナの中では、以下の処理を行うことができます。</p>
+
+<ul>
+ <li>リクエストヘッダやボディとレスポンスヘッダにアクセス</li>
+ <li>リクエストのキャンセルやリダイレクト</li>
+ <li>リクエスト・レスポンスヘッダの改変</li>
+</ul>
+
+<p>この記事では、以下の 3 つの目的それぞれについて、<code>webRequest</code> モジュールの使い方を説明します。</p>
+
+<ul>
+ <li>リクエストの生成時にリクエスト URL を記録する</li>
+ <li>リクエストをリダイレクトする</li>
+ <li>リクエストヘッダを改変する</li>
+</ul>
+
+<h2 id="Logging_request_URLs" name="Logging_request_URLs">リクエスト URL の記録</h2>
+
+<p>まず "requests" というディレクトリを新しく作成しましょう。このディレクトリ内に "manifest.json" というファイルを作成し、以下の内容を書き込みます。</p>
+
+<pre class="brush: json">{
+ "description": "Demonstrating webRequests",
+ "manifest_version": 2,
+ "name": "webRequest-demo",
+ "version": "1.0",
+
+ "permissions": [
+<code class="language-json"> <span class="string token">"webRequest"</span><span class="punctuation token">,</span>
+ <span class="string token">"&lt;all_urls&gt;"</span></code>
+ ],
+
+ "background": {
+ "scripts": ["background.js"]
+ }
+}</pre>
+
+<p>続いて "background.js" というファイルを作成し、以下のスクリプトを書き込みます。</p>
+
+<pre class="brush: js">function logURL(requestDetails) {
+ console.log("Loading: " + requestDetails.url);
+}
+
+<code class="language-js">browser</code>.webRequest.onBeforeRequest.addListener(
+ logURL,
+ {urls: ["&lt;all_urls&gt;"]}
+);
+</pre>
+
+<p>ここでは、リクエストを作成する直前に <code>logURL()</code> 関数を呼ぶため、{{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} を利用しています。<code>logURL()</code> 関数では、イベントオブジェクトからリクエスト URL を取得し、ブラウザのコンソールに出力しています。 <code>{urls: ["&lt;all_urls&gt;"]}</code> <a href="/ja/Add-ons/WebExtensions/Match_patterns">パターン</a> は、すべての URL に対する HTTP リクエストに介入することを表しています。</p>
+
+<p>それでは実際に動かしてみましょう。まず作成した <a href="/ja/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">拡張機能をインストールし</a>、<a href="/ja/docs/Tools/Browser_Console">ブラウザコンソールを開きます</a>。 この状態で適当な web ページを開いてみましょう。すると、ブラウザがリクエストした全リソースの URL がブラウザコンソールに表示されるはずです。</p>
+
+<p>{{EmbedYouTube("X3rMgkRkB1Q")}}</p>
+
+<h2 id="Redirecting_requests" name="Redirecting_requests">リクエストのリダイレクト</h2>
+
+<p>さて、 <code>webRequest</code> を使って HTTP リクエストをリダイレクトさせてみましょう。まず最初に manifest.json を以下の内容へ変更します。</p>
+
+<pre class="brush: json">{
+
+ "description": "Demonstrating webRequests",
+ "manifest_version": 2,
+ "name": "webRequest-demo",
+ "version": "1.0",
+
+ "permissions": [
+ "webRequest",
+ "webRequestBlocking",
+<code class="language-json"><span class="string token"> "https://developer.mozilla.org/"</span><span class="punctuation token">,</span></code>
+<code class="language-json"><span class="string token"> "https://mdn.mozillademos.org/"</span></code>
+ ],
+
+ "background": {
+ "scripts": ["background.js"]
+ }
+
+}</pre>
+
+<p>先程と違うのは <code>"webRequestBlocking"</code> <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a> を追加した点だけです。リクエストを積極的に改変する際には、このパーミッションを追加で指定する必要があります。</p>
+
+<p>引き続いて "background.js" を以下のように書き換えます。</p>
+
+<pre class="brush: js">var pattern = "https://mdn.mozillademos.org/*";
+
+function redirect(requestDetails) {
+ console.log("Redirecting: " + requestDetails.url);
+ return {
+ redirectUrl: "https://38.media.tumblr.com/tumblr_ldbj01lZiP1qe0eclo1_500.gif"
+ };
+}
+
+browser.webRequest.onBeforeRequest.addListener(
+ redirect,
+ {urls:[pattern], types:["image"]},
+ ["blocking"]
+);</pre>
+
+<p>ここでも再び、各リクエストを生成する直前に関数を実行するため {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} イベントリスナを利用しています。リスナ関数では、宛先の URL を <code>redirectUrl</code> で指定したものに書き換えています。</p>
+
+<p>今回はすべてのリクエストに介入しないこととします。<code>{urls:[pattern], types:["image"]}</code> というオプションにより、(1) "https://mdn.mozillademos.org/" 配下の URL であり、かつ (2) 画像リソースなリクエストのみに介入します。詳細は {{WebExtAPIRef("webRequest.RequestFilter")}} を参照してください。</p>
+
+<p>また、<code>"blocking"</code> というオプションも渡していることに注意してください。このオプションは、リクエストを改変する際に必ず必要となります。これによってネットワークリクエストがリスナ関数にブロックされるため、リスナ関数から処理が戻るまでブラウザは待機します。<code>"blocking"</code> に関する詳細は {{WebExtAPIRef("webRequest.onBeforeRequest")}} のドキュメントを参照してください。</p>
+
+<p>それでは実際に動かしてみましょう。画像が多く載っている MDN のページ(<a href="https://developer.mozilla.org/ja/docs/Tools/Network_Monitor">https://developer.mozilla.org/ja/docs/Tools/Network_Monitor</a> など)を開き、<a href="/ja/Add-ons/WebExtensions/Temporary_Installation_in_Firefox#Reloading_a_temporary_add-on"> 拡張機能をリロード</a> します。終わったら MDN のページをリロードしてみましょう。</p>
+
+<p>{{EmbedYouTube("ix5RrXGr0wA")}}</p>
+
+<h2 id="Modifying_request_headers" name="Modifying_request_headers">リクエストヘッダの改変</h2>
+
+<p>最後の例として、<code>webRequest</code> を使ってリクエストヘッダを改変してみましょう。ここでは、ブラウザが Opera 12.16 と認識されるように "User-Agent" ヘッダを改変してみます。ただし、"http://useragentstring.com/" の配下へアクセスした際にのみ改変することとします。</p>
+
+<p>"manifest.json" は先程の例で使用したのと同じです。</p>
+
+<p>"background.js" を以下のように書き換えます。</p>
+
+<pre class="brush: js">var targetPage = "http://useragentstring.com/*";
+
+var ua = "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16";
+
+function rewriteUserAgentHeader(e) {
+ <code class="language-js">e<span class="punctuation token">.</span>requestHeaders<span class="punctuation token">.</span><span class="function token">forEach</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span>header<span class="punctuation token">)</span><span class="punctuation token">{</span></code>
+ if (header.name<code class="language-js"><span class="punctuation token">.</span><span class="function token">toLowerCase</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="operator token">===</span> <span class="string token">"user-agent"</span><span class="punctuation token">)</span></code> {
+ header.value = ua;
+ }
+ });
+ return {requestHeaders: e.requestHeaders};
+}
+
+<code class="language-js">browser</code>.webRequest.onBeforeSendHeaders.addListener(
+ rewriteUserAgentHeader,
+ {urls: [targetPage]},
+ ["blocking", "requestHeaders"]
+);</pre>
+
+<p>ここでは、リクエストヘッダが送信される直前に関数を実行するため {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}} イベントリスナを利用しています。</p>
+
+<p>このリスナ関数は、<code>targetPage</code> <a href="/ja/Add-ons/WebExtensions/Match_patterns">パターン</a> に URL がマッチしたリクエストに対してのみ呼び出されます。 ここでも再び、<code>"blocking"</code> がオプションとして与えられていることに注意してください。また、<code>"requestHeaders"</code> もオプションで渡すことにより、送信予定のリクエストヘッダを含んだ配列がリスナ関数に渡されます。これらのオプションに関しては {{WebExtAPIRef("webRequest.onBeforeSendHeaders")}} で詳細を確認してください。</p>
+
+<p>リスナ関数では、リクエストヘッダの配列から "User-Agent" ヘッダを探し、ヘッダの値を変数値 ua で置き換え、改変された配列を最後に返しています。この改変された配列は、やがてサーバへ送信されることとなります。</p>
+
+<p>それでは実際に動かしてみましょう。<a href="http://useragentstring.com/">useragentstring.com</a> へアクセスし、自分のブラウザが Firefox と判定されることを確認します。ここで拡張機能をリロードし、<a href="http://useragentstring.com/">useragentstring.com</a> のページをリロードします。すると、先程 Firefox と判定されたのは Opera になっているはずです。</p>
+
+<p>{{EmbedYouTube("SrSNS1-FIx0")}}</p>
+
+<h2 id="Learn_more" name="Learn_more">より詳しく</h2>
+
+<p> <code>webRequest</code> API でできることを詳しく知りたい場合は、<a href="/ja/Add-ons/WebExtensions/API/WebRequest"><code>webRequest</code> API のリファレンス</a> を参照してください。</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/internationalization/index.html b/files/ja/mozilla/add-ons/webextensions/internationalization/index.html
new file mode 100644
index 0000000000..368cba4d29
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/internationalization/index.html
@@ -0,0 +1,415 @@
+---
+title: 国際化
+slug: Mozilla/Add-ons/WebExtensions/Internationalization
+tags:
+ - Article
+ - Guide
+ - Internationalization
+ - Localization
+ - WebExtensions
+ - i18n
+ - messages.json
+ - placeholders
+ - predefined messages
+translation_of: Mozilla/Add-ons/WebExtensions/Internationalization
+---
+<div>{{AddonSidebar}}</div>
+
+<p><a href="/ja/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> API には、拡張機能を国際化するとても簡単なモジュール — <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/i18n">i18n</a> があります。この記事ではその機能を見てみて、どのように動作するのかの実例を提供します。WebExtensions API を使った拡張機能用の i18n システムは、<a href="http://i18njs.com/">i18n.js</a> のような、よくある i10n 用 JavaScript ライブラリーと同様です。</p>
+
+<div class="note">
+<p>この記事の見本の拡張機能— <a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a> — は GitHub で入手できます。以下の節を進んでいくのに合わせてコードを追ってください。</p>
+</div>
+
+<h2 id="Anatomy_of_an_internationalized_extension" name="Anatomy_of_an_internationalized_extension">国際化拡張機能の中身</h2>
+
+<p>国際化された拡張機能は、他の拡張機能と同じ機能 — <a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">バックグラウンドスクリプト</a>、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">コンテンツスクリプト</a>など — を含む他、さまざまなロケールに切り替えられるような追加の部分もあります。これは下記のディレクトリーツリーのように要約されます:</p>
+
+<ul class="directory-tree">
+ <li>extension-root-directory/
+ <ul>
+ <li>_locales
+ <ul>
+ <li>en
+ <ul>
+ <li>messages.json
+ <ul>
+ <li>英語メッセージ (文字列)</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>de
+ <ul>
+ <li>messages.json
+ <ul>
+ <li>ドイツ語メッセージ (文字列)</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>etc.</li>
+ </ul>
+ </li>
+ <li>manifest.json
+ <ul>
+ <li>ロケール依存のメタデータ</li>
+ </ul>
+ </li>
+ <li>myJavascript.js
+ <ul>
+ <li>ブラウザーロケールや、ロケール固有メッセージなどを取得する JavaScript</li>
+ </ul>
+ </li>
+ <li>myStyles.css
+ <ul>
+ <li>ロケール依存の CSS</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+</ul>
+
+<p>それぞれの新機能を順に見ていきましょう— 以下の節は拡張機能を国際化するときのそれぞれのステップを表しています。</p>
+
+<h2 id="Providing_localized_strings_in__locales" name="Providing_localized_strings_in__locales">_locales 内にローカライズ済み文字列を提供する</h2>
+
+<div class="pull-aside">
+<div class="moreinfo">言語のサブタグを探すには、<a href="https://r12a.github.io/app-subtags/">Language subtag lookup page</a> の検索ツールを使います。注意点としては言語の名前の英語で探す必要があります。</div>
+</div>
+
+<p>すべての i18n システムはサポートする全ロケールに翻訳済みの文字列が要ります。拡張機能では、これは拡張機能のルート内に置かれる <code>_locales</code> と呼ばれるディレクトリーに入っています。各ロケールはそれぞれの文字列 (メッセージとも呼ばれる) を <code>messages.json</code> というファイル内に入れていて、これは <code>_locales</code> のサブディレクトリー内に置かれており、そこはロケール言語の言語サブタグを使った名前になっています。</p>
+
+<p>サブタグには基本的な言語に加えて、地域の異型があるのに注意してください。ここで言語と異型は伝統的にハイフンで区切られます: 例えば "en-US"。しかし、<code>_locales</code> 内のディレクトリーでは、<strong>区切り文字はアンダースコアでなければならず</strong>: "en_US"となります。</p>
+
+<p><a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n/_locales">例えば、見本のアプリでは</a> "en" (英語), "de" (ドイツ語), "nl" (オランダ語), "ja" (日本語) のフォルダーがあります。それぞれの中に <code>messages.json</code> ファイルがあります。</p>
+
+<p>このファイル (<a href="https://github.com/mdn/webextensions-examples/blob/master/notify-link-clicks-i18n/_locales/en/messages.json">_locales/en/messages.json</a>) の構造を見てみます:</p>
+
+<pre class="brush: json">{
+ "extensionName": {
+ "message": "Notify link clicks i18n",
+ "description": "Name of the extension."
+ },
+
+ "extensionDescription": {
+ "message": "Shows a notification when the user clicks on links.",
+ "description": "Description of the extension."
+ },
+
+ "notificationTitle": {
+ "message": "Click notification",
+ "description": "Title of the click notification."
+ },
+
+ "notificationContent": {
+ "message": "You clicked $URL$.",
+ "description": "Tells the user which link they clicked.",
+ "placeholders": {
+      "url" : {
+        "content" : "$1",
+        "example" : "https://developer.mozilla.org"
+      }
+    }
+ }
+}</pre>
+
+<p>このファイルは標準の JSON — メンバーがそれぞれに <code>message</code> と <code>description</code>. を含む名前付きオブジェクトです。すべての項目が文字列です; <code>$URL$</code> はプレースホルダーで、拡張機能から呼ばれる <code>notificationContent</code> メンバーに置き換えられます。{{anch("Retrieving message strings from JavaScript")}} 節でその方法を学びます。</p>
+
+<div class="note">
+<p><strong>注</strong>: <code>messages.json</code> ファイルの中身についての詳しい情報は<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/i18n/Locale-Specific_Message_reference">ロケール固有のメッセージリファレンス</a>にあります。</p>
+</div>
+
+<h2 id="Internationalizing_manifest.json" name="Internationalizing_manifest.json">manifest.json を国際化する</h2>
+
+<p>manifest.json の国際化を実行するにはいくつかの異なるタスクがあります。</p>
+
+<h3 id="Retrieving_localized_strings_in_manifests" name="Retrieving_localized_strings_in_manifests">マニフェスト内のローカライズ済み文字列を取得する</h3>
+
+<p><a href="https://github.com/mdn/webextensions-examples/blob/master/notify-link-clicks-i18n/manifest.json">manifest.json</a> にはユーザーに表示される文字列が入っています、例えば拡張機能の名前や説明です。この文字列を国際化して messages.json に適切な訳を置くと、現在のロケールなどに基づき、正しく翻訳された文字列がユーザーに表示されます。</p>
+
+<p>文字列を国際化するには、このように指定します:</p>
+
+<pre class="brush: json">"name": "__MSG_extensionName__",
+"description": "__MSG_extensionDescription__",</pre>
+
+<p>ここで、単なる固定文字列ではなく、ブラウザーのロケールに依存しないメッセージ文字列を取得します。</p>
+
+<p>このようなメッセージ文字列を呼び出すには、次のように指定します:</p>
+
+<ol>
+ <li>2 つのアンダースコアに続いて</li>
+ <li>"MSG" という文字列に続いて</li>
+ <li>1 つのアンダースコアに続いて</li>
+ <li><code>messages.json</code> で定義した呼び出しのメッセージ名に続いて</li>
+ <li>2 つのアンダースコア</li>
+</ol>
+
+<pre><strong>__MSG_</strong> + <em>messageName</em> + <strong>__</strong></pre>
+
+<h3 id="Specifying_a_default_locale" name="Specifying_a_default_locale">デフォルトロケールを指定する</h3>
+
+<p>manifest.json にて指定すべきフィールドは <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/default_locale">default_locale</a> です:</p>
+
+<pre class="brush: json">"default_locale": "en"</pre>
+
+<p>これは拡張機能がブラウザーの現在のロケールに対するロケール文字列を含んでいない場合のデフォルトロケールを指定します。ブラウザーロケールで利用できないあらゆるメッセージ文字列が代わりのデフォルトロケールとして引受られます。ブラウザーが文字列を選ぶ方法に関して意識すべき詳細な点があります —  {{anch("Localized string selection")}} を見てください。</p>
+
+<h2 id="Locale-dependent_CSS" name="Locale-dependent_CSS">ロケールに依存しない CSS</h2>
+
+<p>拡張機能の CSS ファイルからもローカライズされた文字列を取得できます。例えば、ロケールに依存しない CSS を組み立てるなら、このようにします:</p>
+
+<pre class="brush: css">header {
+ background-image: url(../images/__MSG_extensionName__/header.png);
+}</pre>
+
+<p>{{anch("Predefined messages")}} を使ってこんな状況を扱う方がより良いものの、これは便利です。</p>
+
+<h2 id="Retrieving_message_strings_from_JavaScript" name="Retrieving_message_strings_from_JavaScript">JavaScript からメッセージ文字列を取得する</h2>
+
+<p>それで、メッセージ文字列とマニフェストがセットアップできました。今は単に JavaScript からメッセージ文字列を呼び出して、拡張機能ができるだけ多くの正しい言語を話すようにします。実際の <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/i18n">i18n API</a> はとてもシンプルで、そこには 4 つのメソッドがあります:</p>
+
+<ul>
+ <li>たぶん一番多く {{WebExtAPIRef("i18n.getMessage()")}} を使うでしょう — これは上記に触れられたとおり、特定の文字列を取得するのに使うメソッドです。これの使用例は下記で見ます。</li>
+ <li>{{WebExtAPIRef("i18n.getAcceptLanguages()")}} と{{WebExtAPIRef("i18n.getUILanguage()")}} メソッドはロケールに応じて UI をカスタマイズする場合に使います — たぶんユーザーの好みの言語に応じて設定リストの上の方に表示したり、特定言語だけに関連する文化的情報を表示したり、ブラウザーロケールに従って日付表示を整形したりすると良いでしょう。</li>
+ <li>{{WebExtAPIRef("i18n.detectLanguage()")}} メソッドはユーザーが投稿したコンテンツの言語を特定したり、それを適切に整形したりするのに使います。</li>
+</ul>
+
+<p><a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a> の見本の中で、<a href="https://github.com/mdn/webextensions-examples/blob/master/notify-link-clicks-i18n/background-script.js">バックグラウンドスクリプト</a>に下記の行があります:</p>
+
+<pre class="brush: js">var title = browser.i18n.getMessage("notificationTitle");
+var content = browser.i18n.getMessage("notificationContent", message.url);</pre>
+
+<p>最初は単に <code>messages.json</code> ファイルからブラウザーの現ロケールのための <code>notificationTitle message</code> 項目を取得します。2 つ目は同様ですが、2 つ目のパラメーターに URL を渡されます。これは何でしょう?これは <code>notificationContent message</code> 項目の中の <code>$URL$</code> プレースホルダーを置き換えるためにコンテンツを指定する方法です: </p>
+
+<pre class="brush: json">"notificationContent": {
+ "message": "You clicked $URL$.",
+ "description": "Tells the user which link they clicked.",
+ "placeholders": {
+ "url" : {
+ "content" : "$1",
+ "example" : "https://developer.mozilla.org"
+ }
+ }
+}
+</pre>
+
+<p><code>"placeholders"</code> メンバーはプレースホルダーを定義し、ここから取得します。<code>"url"</code> プレースホルダーは $1、つまり 2 つ目のパラメーターの <code>getMessage()</code>.の最初の値から取ってきたコンテンツを指定します。プレースホルダーは<code>"url"</code> と呼ばれるため、実際のメッセージ文字列の中で呼び出すのに <code>$URL$</code> を使います (なので <code>"name"</code> には <code>$NAME$</code>などを使う)。複数のプレースホルダーがある場合、{{WebExtAPIRef("i18n.getMessage()")}} の 2 つ目のパラメーターとして渡す配列の中で提供できます —  <code>messages.json</code> 内部で <code>[a, b, c]</code> は<code>$1</code>, <code>$2</code>, <code>$3</code>, として使われる、など。</p>
+
+<p>例をざっと見ましょう: <code>en/messages.json</code> ファイル内のオリジナルの <code>notificationContent</code> メッセージ文字列はこうです</p>
+
+<pre>You clicked $URL$.</pre>
+
+<p><code>https://developer.mozilla.org</code> を指すリンクがクリックされたとします。{{WebExtAPIRef("i18n.getMessage()")}} を呼び出した後、2 つ目のパラメーターのコンテンツは messages.json 内で <code>$1</code> として利用できて、これは <code>"url"</code> プレースホルダー内で定義された <code>$URL$</code> プレースホルダーを置換します。よって最終のメッセージ文字列はこうなります</p>
+
+<pre>You clicked https://developer.mozilla.org.</pre>
+
+<h3 id="Direct_placeholder_usage" name="Direct_placeholder_usage">直接プレースホルダーを使う</h3>
+
+<p>メッセージ文字列の中に直接に変数 (<code>$1</code>, <code>$2</code>, <code>$3</code> など) を挿入できます。例えば上記の <code>"notificationContent"</code> メンバーをこう書き換えてみます:</p>
+
+<pre class="brush: json">"notificationContent": {
+ "message": "You clicked $1.",
+ "description": "Tells the user which link they clicked."
+}</pre>
+
+<p>これはややこしくなくて速いように見えますが、他の方法 (<code>"プレースホルダー"</code>を使う)が最も良いやり方です。これはプレースホルダー名 (例えば<code>"url"</code>) や例によって、プレースホルダーの目的を思い出せます — コードを書いた 1週間後には、<code>$1</code>–<code>$8</code> が何を指すか忘れているでしょうが、プレースホルダー名が何を指すかならもっと思い出しやすいでしょう。</p>
+
+<h3 id="Hardcoded_substitution" name="Hardcoded_substitution">ハードコーディングされた置き換え</h3>
+
+<p>プレースホルダーにハードコードされた文字列を入れることもできます、これでコード内の変数の代わりに、いつでも同じ値が使われます。例えば:</p>
+
+<pre class="brush: json">"mdn_banner": {
+ "message": "For more information on web technologies, go to $MDN$.",
+ "description": "Tell the user about MDN",
+ "placeholders": {
+ "mdn": {
+ "content": "https://developer.mozilla.org/"
+ }
+ }
+}</pre>
+
+<p>ここでは、<code>$1</code> といった変数から取るのではなく、プレースホルダーの content をハードコードしています。これはメッセージが複雑で、ファイル内で読みやすくするために色々な値に分割したい時に役立ちますし、さらにこの値はプログラム的にアクセスすることもできます。</p>
+
+<p>それに加えて、個人やビジネス名といった翻訳したくない文字列を、このような置き換えから指定するのに使うことができます。</p>
+
+<h2 id="Localized_string_selection" name="Localized_string_selection">ローカライズ済みの文字列の選択</h2>
+
+<p>ロケールは <code>fr</code> や <code>en</code> のような言語コードによってのみ指定されるか、さらに <code>en_US</code> や <code>en_GB</code> といった地域コードつきで (これは同じ言語の地域的な変形を記述します) 認証されます。i18n に文字列を問い合わせた時、次のアルゴリズムで文字列を選択します:</p>
+
+<ol>
+ <li>現在のロケールと全く同じ <code>messages.json</code> ファイルがあって、そこに文字列が入っている場合、それを返します</li>
+ <li>それ以外で、現在のロケールが地域つきで認証されて (例<code>en_US</code>) 、そのロケールの地域になし版の <code>messages.json</code> ファイルがあって (例<code>en</code>)、そこに文字列が入っている場合、それを返します</li>
+ <li>それ以外で、<code>manifest.json</code>内に定義された <code>default_locale</code> 用の <code>messages.json</code> ファイルがあって、そこに文字列が入っている場合、それを返します</li>
+ <li>それ以外は空文字を返します</li>
+</ol>
+
+<p>下記の例を見てみます:</p>
+
+<ul class="directory-tree">
+ <li>extension-root-directory/
+ <ul>
+ <li>_locales
+ <ul>
+ <li>en_GB
+ <ul>
+ <li>messages.json
+ <ul>
+ <li><code>{ "colorLocalised": { "message": "colour", "description": "Color." }, ... }</code></li>
+ </ul>
+ </li>
+ </ul>
+ en
+
+ <ul>
+ <li>messages.json
+ <ul>
+ <li><code>{ "colorLocalised": { "message": "color", "description": "Color." }, ... }</code></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>fr
+ <ul>
+ <li>messages.json
+ <ul>
+ <li><code>{ "colorLocalised": { "message": "<span lang="fr">couleur</span>", "description": "Color." }, ...}</code></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+</ul>
+
+<p><code>default_locale</code> が <code>fr</code> にセットされ、ブラウザーの現在のロケールが <code>en_GB</code> と仮定します:</p>
+
+<ul>
+ <li>拡張機能が <code>getMessage("colorLocalised")</code>を呼び出すと、"colour"を返します</li>
+ <li><code>en_GB</code> に "colorLocalised" がなかったとしたら、<code>getMessage("colorLocalised")</code> は"couleur" でなく "color" を返します</li>
+</ul>
+
+<h2 id="Predefined_messages" name="Predefined_messages">事前定義されたメッセージ</h2>
+
+<p>i18n モジュールでは、事前定義されたメッセージを提供しており、これまで見てきた{{anch("Calling message strings from manifests and extension CSS")}} と同じ方法で呼び出すことができます。例えばこのように:</p>
+
+<pre>__MSG_extensionName__</pre>
+
+<p>事前定義されたメッセージでも全く同じ文法を使っていますが、メッセージ名の前に <code>@@</code> をつけるのが異なります、その例は</p>
+
+<pre>__MSG_@@ui_locale__</pre>
+
+<p>下記の表は利用可能なさまざまな事前定義されたメッセージ:を示しています:</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">メッセージ名</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>@@extension_id</code></td>
+ <td>
+ <p>拡張機能の内部生成された UUID。この文字列は拡張機能内のリソースの URL を作るのに使います。. ローカライズされた拡張機能でもこのメッセージを使用できます。</p>
+
+ <p>このメッセージをマニフェストファイル内で使用することはできません。</p>
+
+ <p>もう一つの注意点として、この ID は {{WebExtAPIRef("runtime.id")}} から返される、manifest.json 内の<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications"> applications </a>キーを用いてセットされるアドオン ID とは異なっています。これはアドオンの URL内にある生成された UUID です。つまりこの値を{{WebExtAPIRef("runtime.sendMessage()")}} の <code>extensionId</code> パラメーターの値として使うことはできず、{{WebExtAPIRef("runtime.MessageSender")}} オブジェクトの <code>id</code> プロパティの値のチェックに使うこともできません。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>@@ui_locale</code></td>
+ <td>現在のロケールで、この文字列をロケール固有の URL 生成に使うことができます。</td>
+ </tr>
+ <tr>
+ <td><code>@@bidi_dir</code></td>
+ <td>現在のロケールにおけるテキストの向きで、英語のような左から右の言語では "ltr" で、アラビア語のような右から左への言語では "rtl" となり、このいずれかです。</td>
+ </tr>
+ <tr>
+ <td><code>@@bidi_reversed_dir</code></td>
+ <td><code>@@bidi_dir</code> が "ltr" なら "rtl" で、そうでなれば "ltr" です。</td>
+ </tr>
+ <tr>
+ <td><code>@@bidi_start_edge</code></td>
+ <td><code>@@bidi_dir</code> が "ltr" なら "left" で、そうでなれば "right" です。</td>
+ </tr>
+ <tr>
+ <td><code>@@bidi_end_edge</code></td>
+ <td><code>@@bidi_dir</code> が "ltr" なら "right" で、そうでなれば "left" です。</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>前の例に戻って、次のように書いてみるともっと意味がわかります:</p>
+
+<pre class="brush: css">header {
+ background-image: url(../images/__MSG_@@ui_locale__/header.png);
+}</pre>
+
+<p>サポートしているロケール(en, de など)にマッチしたディレクトリー内にロケール固有の画像を保管しているとすると、もっとわかり良いです。</p>
+
+<p>CSS ファイル内で <code>@@bidi_*</code> メッセージを使った次の例を見てみましょう:</p>
+
+<pre class="brush: css">body {
+ direction: __MSG_@@bidi_dir__;
+}
+
+div#header {
+ margin-bottom: 1.05em;
+ overflow: hidden;
+ padding-bottom: 1.5em;
+ padding-__MSG_@@bidi_start_edge__: 0;
+ padding-__MSG_@@bidi_end_edge__: 1.5em;
+ position: relative;
+}</pre>
+
+<p>英語のような左から右への言語では、上の事前定義されたメッセージを含んだ CSS 定義は、下記の最終コード行に変換されます:</p>
+
+<pre class="brush: css">direction: ltr;
+padding-left: 0;
+padding-right: 1.5em;
+</pre>
+
+<p>アラビア語のような右から左への言語では、次を得ます:</p>
+
+<pre class="brush: css">direction: rtl;
+padding-right: 0;
+padding-left: 1.5em;</pre>
+
+<h2 id="Testing_out_your_extension" name="Testing_out_your_extension">あなたの拡張機能をテストする</h2>
+
+<p>Firefox 45 からは、拡張機能を一時的にディスクからインストールできます — <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Packaging_and_installation#Loading_from_disk">ディスクから読み込む</a>を見てください。これを行ってから、<a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a> 拡張機能をテストしてみます。お好きなウェブサイトに移動してクリックしたリンクの URL を報告した通知が出てくるか見てください。</p>
+
+<p>次に、Firefox のロケールをテストしたい拡張機能がサポートするものに変えます。</p>
+
+<ol>
+ <li>Firefox で"about:config"を開き、<code>intl.locale.requested</code> の設定を探します (Firefox 59 より前では、この設定は <code>general.useragent.locale</code> と呼ばれます)。</li>
+ <li>設定がある場合、それをダブルクリックして (または Return/Enter を押して) 選択し、テストしたいロケールの言語コードを入力して"OK" をクリックします (または Return/Enter を押す)。例えば我々の例では "en" (英語), "de" (ドイツ語), "nl" (オランダ語), "ja" (日本語) がサポートされます。空文字(<code>""</code>)をセットすることもできて、そうするとブラウザーは OS のデフォルトロケールを使います。</li>
+ <li><code>intl.locale.requested</code> の設定が存在しない場合、設定リストを右クリックします (あるいはキーボードからコンテキストメニューを起動します)、そして"New" と "String"を選びます。設定名に <code>intl.locale.requested</code> を入力して、上記ステップ 2 の説明の通りに "de" や "nl" などの値を設定値に入力します。</li>
+ <li><code>intl.locale.matchOS</code> を探してその設定をダブルクリックし、<code>false</code> に設定します。</li>
+ <li>ブラウザーを再起動して変更を完了します。</li>
+</ol>
+
+<div class="note">
+<p><strong>注</strong>: これはブラウザーのロケールを変更させる動作で、この言語用の<a href="https://addons.mozilla.org/en-US/firefox/language-tools/">言語パック</a>がインストールされていなくてもそうなります。その場合はブラウザー UI はデフォルト言語となります。</p>
+</div>
+
+<ol>
+</ol>
+
+<div class="note">
+<p><strong>注:</strong> <code>getUILanguage</code> の結果を変更するには言語パックが要求されます、これはブラウザー UI 言語を変更して拡張機能メッセージ用の言語は変更しないためです。</p>
+</div>
+
+<p>ディスクから拡張機能を読み込み直して、新しいロケールをテストします</p>
+
+<ul>
+ <li>もう一度 "about:addons" へ移動します — 拡張機能が一覧となり、アイコンと、選択した言語での名前と説明があるのが見えます。</li>
+ <li>拡張機能をまたテストします。我々の見本では、他のウェブサイトでリンクをクリックして、通知が選択した言語で出てくるのが見えます。</li>
+</ul>
+
+<p>{{EmbedYouTube("R7--fp5pPGg")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/author/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/author/index.html
new file mode 100644
index 0000000000..b44cecf9d4
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/author/index.html
@@ -0,0 +1,44 @@
+---
+title: author
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/author
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/author
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"author": "Walt Whitman"</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>拡張機能の作者で、ブラウザーの UI で表示されることを目的とするものです。<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/developer">developer</a> キーが与えられてそこに "name" プロパティが含まれる場合、それは author キーを上書きします。複数の作者を指定する方法はありません。</p>
+
+<p>これは<a href="/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">ローカライズ可能なプロパティ</a>です。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers">"author": "Walt Whitman"</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.author")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/background/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/background/index.html
new file mode 100644
index 0000000000..96eca3f2fb
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/background/index.html
@@ -0,0 +1,115 @@
+---
+title: background
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/background
+tags:
+ - Add-ons
+ - Extensions
+ - Manifest
+ - Reference
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/background
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">種類</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"background": {
+ "scripts": ["background.js"]
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code>background</code> を使って拡張機能に 1 つ以上のバックグラウンドスクリプトや、オプションとしてバックグラウンドページを含めます。</p>
+
+<p>バックグラウンドスクリプトは、特定のウェブページやブラウザーウィンドウとは独立した、長い期間の状態や、長い期間の操作を維持する必要があるコードを置く場所です。</p>
+
+<p><code>persistent</code> が <code>false</code> と指定されている場合を除き、バックグラウンドスクリプトは拡張機能が読み込まれるとすぐに読み込まれて、拡張機能が無効化やアンインストールされるまで読み込まれたままになります。スクリプト内では、必要な <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a> を要求している限り、あらゆる WebExtension APIs を使用できます</p>
+
+<p>詳しくは <a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_pages">拡張機能の中身</a>の「バックグラウンドページ」の節を見てください。</p>
+
+<p><code>background</code> キーは次の 2 つのプロパティ(両方ともオプションです)のうち 1 つを持つオブジェクトです:</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>"scripts"</code></td>
+ <td>
+ <p>文字列配列であり、各要素は JavaScript ファイルへのパスです。パスは manifest.json を基準にした相対パスです。これらは、拡張機能に含まれるバックグラウンドスクリプトです。</p>
+
+ <p>これらのスクリプトは、同じグローバル <code>window</code> を共有します。</p>
+
+ <p>これらのスクリプトは、配列内の出現順で読み込まれます。</p>
+
+ <p><code>"scripts"</code> を指定したときは、スクリプトを実行するための空のバックグラウンドページが作られます。</p>
+
+ <div class="note">
+ <p><strong>注:</strong> <code>&lt;script&gt;</code> タグを使って外部からスクリプトを取り込む場合 (例: <code>&lt;script src = "https://code.jquery.com/jquery-1.7.1.min.js"&gt;</code>)、拡張機能の manifest.json で <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a></code> キーを変更する必要があります。</p>
+ </div>
+
+ <div class="note">
+ <p><strong>注:</strong> Firefox 50 より前のバージョンにはこれに影響するバグがあることに注意してください。Firefox のデバッガーが開いているときは、必ずしも配列内の出現順でスクリプトが読み込まれるとは限りません。このバグに対処するには、<code>"page"</code> プロパティを使い、そのページから <code>&lt;script&gt;</code> タグによってバックグラウンドスクリプトを読み込んでください。このバグは Firefox 50 で修正され、それ以降は常に配列内の出現順でスクリプトが読み込まれます。</p>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><code>"page"</code></td>
+ <td>
+ <p>もしバックグラウンド ページに何か内容を持たせたい場合、そのページを <code>"page"</code> により指定することができます。 manifest.json から拡張機能の中に含まれるHTMLドキュメントを参照するためのパス文字列の <code>String</code> を指定します。</p>
+
+ <p>このプロパティを使うときは、<code>"scripts"</code> を使ってバックグラウンドスクリプトを指定することはできませんが、通常のウェブページと同じように、バックグラウンドページ内からスクリプトを読み込むことができます。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code>background</code> は以下の追加のキーを含むこともできます:</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>persistent</code></td>
+ <td>
+ <p><code>Boolean</code> の値。</p>
+
+ <ul>
+ <li><code>true</code> を指定すると、拡張機能が読み込まれるかブラウザーが起動した時から、拡張機能の削除、無効化、もしくはブラウザーが終了するまでの間、バックグラウンドページがメモリー上に保持され続けます(つまり、バックグラウンドページが永続化されます)。</li>
+ <li><code>false</code> を指定すると、バックグラウンドページはアイドル状態の時にメモリー上からアンロードされ、必要に応じて再生成されます。このようなバックグラウンドページは、リスナーを登録したイベントを処理するためだけにメモリー上に読み込まれるため、イベントページとも呼ばれます。バックグラウンドページがメモリ上からアンロードされていても、リスナーの登録状態は永続化されますが、他の値は永続化されません。イベントページにおいてデータを永続化したい場合は、<a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage API</a>を使う必要があります。</li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers">  "background": {
+    "scripts": ["jquery.js", "my-background.js"]
+  }</pre>
+
+<p>2つのバックグラウンドスクリプトを読み込みます。</p>
+
+<pre class="brush: json"> "background": {
+ "page": "my-background.html"
+ }</pre>
+
+<p>カスタムのバックグラウンドページを読み込みます。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.background", 10)}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/browser_action/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/browser_action/index.html
new file mode 100644
index 0000000000..3b0dba68a6
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/browser_action/index.html
@@ -0,0 +1,240 @@
+---
+title: browser_action
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/browser_action
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/browser_action
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers notranslate">
+"browser_action": {
+ "browser_style": true,
+ "default_icon": {
+ "16": "button/geo-16.png",
+ "32": "button/geo-32.png"
+ },
+ "default_title": "Whereami?",
+ "default_popup": "popup/geo.html",
+ "theme_icons": [{
+    "light": "icons/geo-16-light.png",
+    "dark": "icons/geo-16.png",
+    "size": 16
+ }, {
+   "light": "icons/geo-32-light.png",
+   "dark": "icons/geo-32.png",
+   "size": 32
+ }]
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>browser actionはあなたのブラウザーのツールバーに拡張機能のボタンを追加します。ボタンはアイコンと、オプションでHTML、CSSとJavaScriptを使用した、ポップアップコンテンツを使用できます。</p>
+
+<p>ポップアップを提供する場合は、ユーザーがボタンをクリックしたときポップアップが開かれ、ポップアップで実行されているJavaScriptは、ユーザーの実行を処理できます。ポップアップを提供しない場合、ユーザーがボタンをクリックすると、クリックイベントが拡張機能の<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">バックグラウンドスクリプト</a>に送信されます。</p>
+
+<p>You can also create and manipulate browser actions programmatically using the <a href="/ja/Add-ons/WebExtensions/API/browserAction">browserAction API</a>.</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p>The <code>browser_action</code> key is an object that may have any of the following properties, all optional:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">型</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>browser_style</code></td>
+ <td><code>Boolean</code></td>
+ <td>
+ <div class="geckoVersionNote">New in Firefox 48</div>
+
+ <p>Optional, defaulting to <code>false</code>.</p>
+
+ <p>Use this to include a stylesheet in your popup that will make it look consistent with the browser's UI and with other extensions that use the <code>browser_style</code> property. Although this key defaults to <code>false</code>, it's recommended that you include it and set it to <code>true</code>.</p>
+
+ <p>In Firefox, the stylesheet can be seen at chrome://browser/content/extension.css, or chrome://browser/content/extension-mac.css on OS X.</p>
+
+ <p>The <a href="https://firefoxux.github.io/StyleGuide/#/controls">Firefox Style Guide</a> describes the classes you can apply to elements in the popup in order to get particular styles.</p>
+
+ <p>The <a href="https://github.com/mdn/webextensions-examples/tree/master/latest-download">latest-download</a> example extension uses <code>browser_style</code> in its popup.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>default_area</code></td>
+ <td><code>String</code></td>
+ <td>
+ <div class="geckoVersionNote">New in Firefox 54</div>
+
+ <p>Defines the part of the browser in which the button is initially placed. This is a string that may take one of four values:</p>
+
+ <ul>
+ <li>"navbar": the button is placed in the main browser toolbar, alongside the URL bar.</li>
+ <li>"menupanel": the button is placed in a popup panel.</li>
+ <li>"tabstrip": the button is placed in the toolbar that contains browser tabs.</li>
+ <li>"personaltoolbar": the button is placed in the bookmarks toolbar.</li>
+ </ul>
+
+ <p>This property is only supported in Firefox.</p>
+
+ <p>This property is optional, and defaults to "navbar".</p>
+
+ <p>An extension can't change the location of the button after it has been installed, but the user may be able to move the button using the browser's built-in UI customization mechanism.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>default_icon</code></td>
+ <td><code>Object</code> or <code>String</code></td>
+ <td>
+ <p>Use this to specify one or more icons for the browser action. The icon is shown in the browser toolbar 既定では.</p>
+
+ <p>Icons are specified as URLs relative to the manifest.json file itself.</p>
+
+ <p>You can specify a single icon file by supplying a string here:</p>
+
+ <pre class="brush: json no-line-numbers notranslate">
+"default_icon": "path/to/geo.svg"</pre>
+
+ <p>To specify multiple icons in different sizes, specify an object here. The name of each property is the icon's height in pixels, and must be convertible to an integer. The value is the URL. 例えば、:</p>
+
+ <pre class="brush: json no-line-numbers notranslate">
+ "default_icon": {
+ "16": "path/to/geo-16.png",
+ "32": "path/to/geo-32.png"
+ }</pre>
+
+ <p>See <a href="/ja/Add-ons/WebExtensions/manifest.json/browser_action#Choosing_icon_sizes">Choosing icon sizes</a> for more guidance on this.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>default_popup</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>The path to an HTML file containing the specification of the popup.</p>
+
+ <p>The HTML file may include CSS and JavaScript files using <code><a href="/ja/docs/Web/HTML/Element/link">&lt;link&gt;</a></code> and <code><a href="/ja/docs/Web/HTML/Element/script">&lt;script&gt;</a></code> elements, just like a normal web page.</p>
+
+ <p>Unlike a normal web page, JavaScript running in the popup can access all the <a href="/ja/Add-ons/WebExtensions/API">WebExtension APIs</a> (subject, of course, to the extension having the appropriate <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a>).</p>
+
+ <p>これは<a href="/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">ローカライズ可能なプロパティ</a>です。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>default_title</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>Tooltip for the button, displayed when the user moves their mouse over it. If the button is added to the browser's menu panel, this is also shown under the app icon.</p>
+
+ <p>これは<a href="/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">ローカライズ可能なプロパティ</a>です。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>theme_icons</code></td>
+ <td><code>Array</code></td>
+ <td>
+ <p>This property enables you to specify different icons for dark and light themes.</p>
+
+ <p>If this property is present, it's an array containing at least one <code>ThemeIcons</code> object. A <code>ThemeIcons</code> object contains three properties, all mandatory:</p>
+
+ <dl>
+ <dt><code>"dark"</code></dt>
+ <dd>A URL pointing to an icon. This icon will be selected when themes with dark text are active (e.g. Firefox's Light theme, and the Default theme if no default_icon is specified).</dd>
+ <dt><code>"light"</code></dt>
+ <dd>A URL pointing to an icon. This icon will be selected when themes with light text are active (e.g. Firefox's Dark theme).</dd>
+ <dt><code>"size"</code></dt>
+ <dd>The size of the two icons in pixels.</dd>
+ </dl>
+
+ <p>Icons are specified as URLs relative to the manifest.json file itself.</p>
+
+ <p>You need to supply an <code>ThemeIcons</code> in size 16 and one in size 32 (for retina display).</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Choosing_icon_sizes" name="Choosing_icon_sizes">アイコンサイズを選ぶ</h2>
+
+<p>The browser action's icon may need to be displayed in different sizes in different contexts:</p>
+
+<ul>
+ <li>The icon is displayed 既定では in the browser toolbar, but the user can move it into the browser's menu panel (the panel that opens when the user clicks the "hamburger" icon). The icon in the toolbar is smaller than the icon in the menu panel.</li>
+ <li>On a high-density display like a Retina screen, icons needs to be twice as big.</li>
+</ul>
+
+<p>If the browser can't find an icon of the right size in a given situation, it will pick the best match and scale it. Scaling may make the icon appear blurry, so it's important to choose icon sizes carefully.</p>
+
+<p>There are two main approaches to this. You can supply a single icon as an SVG file, and it will be scaled correctly:</p>
+
+<pre class="brush: json no-line-numbers notranslate">"default_icon": "path/to/geo.svg"</pre>
+
+<p>Alternatively, you can supply several icons in different sizes, and the browser will pick the best match.</p>
+
+<p>In Firefox:</p>
+
+<ul>
+ <li>The default height and width for icons in the toolbar is 16 * <code><a href="/ja/docs/Web/API/Window/devicePixelRatio">window.devicePixelRatio</a></code>.</li>
+ <li>The default height and width for icons in the menu panel is 32 * <code><a href="/ja/docs/Web/API/Window/devicePixelRatio">window.devicePixelRatio</a></code>.</li>
+</ul>
+
+<p>So you can specify icons that match exactly, on both normal and Retina displays, by supplying three icon files, and specifying them like this:</p>
+
+<pre class="brush: json no-line-numbers notranslate"> "default_icon": {
+ "16": "path/to/geo-16.png",
+ "32": "path/to/geo-32.png",
+ "64": "path/to/geo-64.png"
+ }</pre>
+
+<p>If Firefox can't find an exact match for the size it wants, then it will pick the smallest icon specified that's bigger than the ideal size. If all icons are smaller than the ideal size, it will pick the biggest icon specified.</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers notranslate">"browser_action": {
+ "default_icon": {
+ "16": "button/geo-16.png",
+ "32": "button/geo-32.png"
+ }
+}</pre>
+
+<p>A browser action with just an icon, specified in 2 different sizes. The extension's background scripts can receive click events when the user clicks the icon using code like this:</p>
+
+<p class="brush: js no-line-numbers"> browser.browseAction.onClicked.addListener(handleClick);</p>
+
+<pre class="brush: json notranslate">"browser_action": {
+ "default_icon": {
+ "16": "button/geo-16.png",
+ "32": "button/geo-32.png"
+ },
+ "default_title": "Whereami?",
+ "default_popup": "popup/geo.html"
+}</pre>
+
+<p>A browser action with an icon, a title, and a popup. The popup will be shown when the user clicks the button.</p>
+
+<p>For a simple, but complete, extension that uses a browser action, see the <a href="/ja/Add-ons/WebExtensions/Your_second_WebExtension">walkthrough tutorial</a>.</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p>{{Compat("webextensions.manifest.browser_action", 10)}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html
new file mode 100644
index 0000000000..16553c9422
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html
@@ -0,0 +1,91 @@
+---
+title: browser_specific_settings
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+ - manifest.json
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>
+ <p>通常は不要です (<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID#When_do_you_need_an_Add-on_ID"> いつ Add-on ID が必要か?</a>を参考に) 。Firefox 48 より前と Android版Firefox では必須です。</p>
+ </td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers language-json">
+<code class="language-json"><span class="key token">"browser_specific_settings":</span> <span class="punctuation token">{</span>
+ <span class="key token">"gecko":</span> <span class="punctuation token">{</span>
+ <span class="key token">"id":</span> <span class="string token">"addon@example.com"</span><span class="punctuation token">,</span>
+ <span class="key token">"strict_min_version":</span> <span class="string token">"42.0"</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span></code></pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>browser_specific_settings</code> キーは、特定のホストアプリケーションのキーを含みます。</p>
+
+<h3 id="Firefox_(Gecko)_プロパティ">Firefox (Gecko) プロパティ</h3>
+
+<p>現在、4 つの文字列属性を含む <code>gecko</code> キーのみが存在します。</p>
+
+<ul>
+ <li><code>id</code> は <a href="https://developer.mozilla.org/ja/Add-ons/Install_Manifests#id">拡張機能ID</a> です。Firefox 48 からオプションですが、Firefox 48 より前では必須です。いつ特定の add-on ID が必要になるかについては、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">拡張機能と Add-on ID</a> を見てください。</li>
+ <li><code>strict_min_version</code>: サポートする Gecko の最小バージョンです。"*" を含むバージョンは、このフィールドでは無効です。既定は "42a1" です。</li>
+ <li><code>strict_max_version</code>: サポートする Gecko の最大バージョンです。拡張機能がこのバージョンを超えた Firefox のバージョンにインストールや実行された場合、拡張機能は無効または、インストールが許可されません。既定は "*" で、最大バージョンのチェックは無効です。</li>
+ <li><code>update_url</code> は <a href="/ja/Add-ons/Updates">add-on update manifest</a> へのリンクです。リンクは "https" で始まっている必要があることに注意してください。このキーは拡張機能が自分自身で更新を管理するためのものです(つまり AMO以外で)。</li>
+</ul>
+
+<p><a href="https://addons.mozilla.org/en-US/firefox/pages/appversions/">有効な Gecko バージョン</a>のリストを見てください。</p>
+
+<h3 id="Extension_ID_format" name="Extension_ID_format">拡張機能 ID フォーマット</h3>
+
+<p>拡張機能 ID は次のどれかでなければなりません:</p>
+
+<ul>
+ <li><a href="https://en.wikipedia.org/wiki/Universally_unique_identifier" title="Generating_GUIDs">GUID</a></li>
+ <li>メールアドレスのような文字列フォーマット: <code class="plain">extensionname@example.org</code></li>
+</ul>
+
+<p>後者のフォーマットは生成したり扱うのが簡単です。本当のメールアドレスをここで使うと SPAM を呼びかねないのに気を払ってください。</p>
+
+<p>例えば:</p>
+
+<pre class="brush:json;auto-links:false no-line-numbers language-json"><code class="language-json"><span class="key token">"id":</span> <span class="string token">"extensionname@example.org"</span><span class="punctuation token">,</span>
+
+<span class="key token">"id":</span> <span class="string token">"{daf44bf7-a45e-4450-979c-91cf07434c3d}"</span></code></pre>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>使用可能なキーをすべて使用した例です。たいていの拡張機能では <code>strict_max_version</code> と <code>update_url</code> は省略するのに注意してください。</p>
+
+<pre class="brush: json">"applications": {
+ "gecko": {
+ "id": "addon@example.com",
+ "strict_min_version": "42.0",
+ "strict_max_version": "50.*",
+ "update_url": "https://example.com/updates.json"
+ }
+}</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.browser_specific_settings")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/chrome_settings_overrides/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/chrome_settings_overrides/index.html
new file mode 100644
index 0000000000..5a92e26d97
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/chrome_settings_overrides/index.html
@@ -0,0 +1,136 @@
+---
+title: chrome_settings_overrides
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+ - chrome_settings_overrides
+ - manifest.json
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides
+---
+<div>{{AddonSidebar}}</div>
+
+<p><code>chrome_settings_overrides</code> キーを使ってブラウザー設定を上書きします。2つの設定が利用できます:</p>
+
+<ul>
+ <li><code>"homepage"</code>、これによりブラウザーのホームページを上書きできます。</li>
+ <li><code>"search_provider"</code>、これにより新しい検索エンジンを追加できます。</li>
+</ul>
+
+<pre class="brush: json no-line-numbers">"chrome_settings_overrides" : {
+ "homepage": "https://developer.mozilla.org/"
+}</pre>
+
+<pre class="brush: json no-line-numbers">"chrome_settings_overrides": {
+ "search_provider": {
+ "name": "Discogs",
+ "search_url": "https://www.discogs.com/search/?q={searchTerms}",
+ "keyword": "disc",
+ "favicon_url": "https://www.discogs.com/favicon.ico"
+ }
+}</pre>
+
+<table class="properties">
+ <tbody>
+ <tr>
+ <th colspan="2" scope="row">マニフェストキー: <code>chrome_settings_overrides</code></th>
+ </tr>
+ <tr>
+ <th scope="row">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>No</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p><code>chrome_settings_overrides</code> キーは次のプロパティを持つオブジェクトです:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">型</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>homepage</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>Defines the page to be used as the browser's homepage.</p>
+
+ <p>The replacement is given as a URL. The URL may:</p>
+
+ <ul>
+ <li>point to a file bundled with the extension, in which case it is given as a URL relative to the manifest.json file</li>
+ <li>be a remote URL, such as "https://developer.mozilla.org/".</li>
+ </ul>
+
+ <p>If two or more extensions both set this value, then the setting from the most recently installed one will take precedence.</p>
+
+ <p>To override new tabs, use "<a href="/ja/Add-ons/WebExtensions/manifest.json/chrome_url_overrides">chrome_url_overrides</a>" instead.</p>
+
+ <p>This is a <a href="/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">localizable property</a>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>search_provider</code></td>
+ <td><code>Object</code></td>
+ <td>
+ <p>Defines a search provider to add to the browser.</p>
+
+ <p>The search provider has a name and a primary search URL. Alternative URLs may be provided, including URLs for more specialized searches like image search. In the URL you supply, use "<code>{searchTerms}</code>" to interpolate the search term into the URL, like: <code>https://www.discogs.com/search/?q={searchTerms}</code>. You can also provide POST parameters to be sent along with the search.</p>
+
+ <p>The search provider will be presented to the user alongside the built-in providers. If you include the <code>is_default</code> property and set it to <code>true</code>, the new search provider will be the default option. By supplying the <code>keyword</code> property, you enable the user to select your search provider by typing the keyword into the search/address bar before the search term.</p>
+
+ <p>This is an object with the properties listed below. All string properties are <a href="/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">localizable</a>.</p>
+
+ <dl>
+ <dt><code>name</code></dt>
+ <dd>String: The search engine's name, displayed to the user.</dd>
+ <dt><code>search_url</code></dt>
+ <dd>String: URL used by the search engine. This must be an HTTPS URL.</dd>
+ <dt><code>is_default</code></dt>
+ <dd>Boolean: True if the search engine should be the default choice.</dd>
+ <dt><code>alternate_urls {{optional_inline}}</code></dt>
+ <dd>Array of String: An array of alternative URLs that can be used instead of <code>search_url</code>.</dd>
+ <dt><code>encoding {{optional_inline}}</code></dt>
+ <dd>String: Encoding of the search term, specified as a <a href="https://www.iana.org/assignments/character-sets/character-sets.xhtml">standard character encoding name</a>, such as "UTF-8".</dd>
+ <dt><code>favicon_url {{optional_inline}}</code></dt>
+ <dd>String: URL pointing to an icon for the search engine. This must be a absolute HTTP or HTTPS URL.</dd>
+ <dt><code>image_url {{optional_inline}}</code></dt>
+ <dd>String: URL used for image search.</dd>
+ <dt><code>image_url_post_params {{optional_inline}}</code></dt>
+ <dd>String: POST parameters to send to <code>image_url</code>.</dd>
+ <dt><code>instant_url {{optional_inline}}</code></dt>
+ <dd>String: URL used for instant search.</dd>
+ <dt><code>instant_url_post_params {{optional_inline}}</code></dt>
+ <dd>String: POST parameters to send to <code>instant_url</code>.</dd>
+ <dt><code>keyword {{optional_inline}}</code></dt>
+ <dd>String: Address bar keyword for the search engine.</dd>
+ <dt><code>prepopulated_id {{optional_inline}}</code></dt>
+ <dd>The ID of a built-in search engine to use.</dd>
+ <dt><code>search_url_post_params {{optional_inline}}</code></dt>
+ <dd>String: POST parameters to send to <code>search_url</code>.</dd>
+ <dt><code>suggest_url {{optional_inline}}</code></dt>
+ <dd>String: URL used for search suggestions.</dd>
+ <dt><code>suggest_url_post_params {{optional_inline}}</code></dt>
+ <dd>String: POST parameters to send to <code>suggest_url</code>.</dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.chrome_settings_overrides", 10)}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/chrome_url_overrides/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/chrome_url_overrides/index.html
new file mode 100644
index 0000000000..057d937605
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/chrome_url_overrides/index.html
@@ -0,0 +1,97 @@
+---
+title: chrome_url_overrides
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/chrome_url_overrides
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/chrome_url_overrides
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+  "chrome_url_overrides" : {
+    "newtab": "my-new-tab.html"
+  }</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code>chrome_url_overrides</code> キーを使って、通常はブラウザー自身が行っているいろいろなページへの文書の置き換えをカスタムすることができます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p><code>chrome_url_overrides</code> キーは次のプロパティを持つオブジェクトです:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">型</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>bookmark</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>ブックマークに出てくるページへの置き換えを提供します。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>history</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>履歴に出てくるページへの置き換えを提供します。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>newtab</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>"新規タブ" ページに出てくる文書の置き換えを提供します。これはユーザーが新しいタブを開いてまだ文書を読み込んでない時のページです: 例えば、 <kbd>Ctrl</kbd>/<kbd>Command</kbd>+<kbd>T</kbd> のキーボードショートカットで。</p>
+
+ <p>置き換えは HTML ファイルへの URL として与えられます。ファイルは拡張機能に同梱する必要があります: ここにはリモートの URL を指定できません。拡張機能のルートフォルダーから相対的に、次のように指定できます: "path/to/newtab.html".</p>
+
+ <p>文書は通常のウェブページと同様に CSS と JavaScript をロードできます。 ページ内で実行する JavaScript はバックグラウンドスクリプトと同じように <a href="/ja/Add-ons/WebExtensions/API">privileged "browser.*" APIs</a> のアクセスを得ます。</p>
+
+ <p>ページに <a href="/ja/docs/Web/HTML/Element/title">&lt;title&gt;</a> を入れるのは良い習慣で、そうしないとタブのタイトルは "moz-extension://..." の URL になるでしょう。</p>
+
+ <p>よくあるユースケースはユーザーに新しいタブページを定義できるようにすることです: これをするには、ユーザーが定義したページにナビゲートするカスタムの新規タブページを提供します。</p>
+
+ <p>2 つ以上の拡張機能がいずれもカスタムの新規タブページを定義する場合、インストールや有効化された最後の分の値を使われます。</p>
+
+ <p>ブラウザーのホームページを上書きするには、代わりに"<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides">chrome_settings_overrides</a>" を使います。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>すべてのプロパティは<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">ローカライズ可能です</a>。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers">"chrome_url_overrides" : {
+ "newtab": "my-new-tab.html"
+}</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.chrome_url_overrides")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/commands/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/commands/index.html
new file mode 100644
index 0000000000..cddcb59c6c
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/commands/index.html
@@ -0,0 +1,186 @@
+---
+title: commands
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/commands
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/commands
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"commands": {
+ "toggle-feature": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+Y",
+ "linux": "Ctrl+Shift+U"
+ },
+ "description": "Send a 'toggle-feature' event"
+ }
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code>commands</code> キーを使うと拡張機能用のキーボードショートカットを定義できます。</p>
+
+<p>それぞれのショートカットは名前、キーの組み合わせ、説明で定義されます。manifest.json で command を定義すると、関連したキーの組み合わせを {{WebExtAPIRef("commands")}} JavaScript API を用いてリッスンできます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p><code>commands</code> キーはオブジェクトで、それぞれのショートカットはそのプロパティです。プロパティ名はショートカットの名前です。</p>
+
+<p>それぞれのショートカット自身がオブジェクトで、最大2 つのプロパティを持ちます:</p>
+
+<ul>
+ <li><code>suggested_key</code>: これはキーの組み合わせを定義します</li>
+ <li><code>description</code>: このショートカットを説明する文字</li>
+</ul>
+
+<p><code>suggested_key</code> プロパティ自身がオブジェクトで、次のプロパティ(これがすべてです)のいくつかを持ちます:</p>
+
+<ul>
+ <li><code>"default"</code>, <code>"mac"</code>, <code>"linux"</code>, <code>"windows"</code>, <code>"chromeos"</code>, <code>"android"</code>, <code>"ios"</code></li>
+</ul>
+
+<p>それぞれのプロパティの値はそのプラットフォーム用のキーボードショートカットで、"+" で分割されたキーの文字列で与えられます。<code>"default"</code> 用の値が明示的に載っていないすべてのプラットフォームで使われます。</p>
+
+<p>例えば:</p>
+
+<pre class="brush: json no-line-numbers">"commands": {
+ "toggle-feature": {
+ "suggested_key": {
+ "default": "Alt+Shift+U",
+ "linux": "Ctrl+Shift+U"
+ },
+ "description": "Send a 'toggle-feature' event to the extension"
+ },
+ "do-another-thing": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+Y"
+ }
+ }
+}</pre>
+
+<p>これは 2 つのショートカットを定義します:</p>
+
+<ul>
+ <li>1 つは "toggle-feature" という名前で、Linux では <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>U</kbd> 、その他のプラットフォームでは <kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>U</kbd> でアクセスされます。</li>
+ <li>1 つは "do-another-thing" という名前で、すべてのプラットフォームで <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Y</kbd> でアクセスされます。</li>
+</ul>
+
+<p>次に、これらのコマンドの最初を下記のようにリッスンできます:</p>
+
+<pre class="brush: js no-line-numbers">browser.commands.onCommand.addListener(function(command) {
+ if (command == "toggle-feature") {
+ console.log("toggling the feature!");
+ }
+});</pre>
+
+<h3 id="Special_shortcuts" name="Special_shortcuts">特殊なショートカット</h3>
+
+<p>特殊なショートカットが 3 つあります:</p>
+
+<ul>
+ <li>_execute_browser_action: 拡張機能の<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_action">ブラウザーアクション</a>のクリックのように動作します。</li>
+ <li>_execute_page_action: 拡張機能の<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Page_actions">ページアクション</a>のクリックのように動作します。</li>
+ <li>_execute_sidebar_action: 拡張機能の<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Sidebars">サイドバー</a>を開きます。Firefox のバージョン 54 以降のみでサポートされます。</li>
+</ul>
+
+<p>例えば、これはブラウザーアクションをクリックするキーの組み合わせを定義します:</p>
+
+<pre class="brush: js no-line-numbers">"commands": {
+ "_execute_browser_action": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+Y"
+ }
+ }
+}</pre>
+
+<h2 id="Shortcut_values" name="Shortcut_values">ショートカットの値</h2>
+
+<p>ショートカットキーには2つのフォーマットがあります: キーの組み合わせとメディアキーです。</p>
+
+<h3 id="Key_combinations" name="Key_combinations">キーの組み合わせ</h3>
+
+<div class="pull-aside">
+<div class="moreinfo">Mac では、"Ctrl" は"Command" と翻訳され、実際の "Ctrl"が必要ならば "MacCtrl"と指定します。</div>
+</div>
+
+<p>キーの組み合わせは 2 つか 3 つのキーからなります:</p>
+
+<ul>
+ <li><strong>modifier</strong> (ファンクションキー以外では必須)。これは次のいずれかです: "Ctrl", "Alt", "Command", "MacCtrl".</li>
+ <li><strong>secondary modifier</strong> (オプション)。指定する場合は"Shift"でなければなりません。</li>
+ <li><strong>key</strong> (必須)。これは次のいずれかです:
+ <ul>
+ <li>A-Z の範囲の文字</li>
+ <li>0-9 の範囲の数字</li>
+ <li>ファンクションキー F1-F12</li>
+ <li>カンマ, ピリオド, Home, End, PageUp, PageDown, スペース, Insert, Delete, 上矢印, 下矢印, 左矢印, 右矢印</li>
+ </ul>
+ </li>
+</ul>
+
+<p>キーは、上記のリストの順に、"+" で区切られたキー値の組み合わせで与えられます: 例えば、 "Ctrl+Shift+Z".</p>
+
+<p>キーの組み合わせがブラウザーや(例えば "Ctrl+P")、既存のアドオンですでに使われている場合、それを上書きできます。定義することもできますが、ユーザーが入力してもイベントハンドラーは呼ばれません。</p>
+
+<h3 id="Media_keys" name="Media_keys">メディアキー</h3>
+
+<p>あるいは、ショートカットキーは次のいずれかでも指定できます:</p>
+
+<ul>
+ <li>"MediaNextTrack", "MediaPlayPause", "MediaPrevTrack", "MediaStop"</li>
+</ul>
+
+<h2 id="Example" name="Example">例</h2>
+
+<p>既定値だけを使って単一のショートカットを定義するには:</p>
+
+<pre class="brush: json no-line-numbers">"commands": {
+ "toggle-feature": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+Y"
+ },
+ "description": "Send a 'toggle-feature' event"
+ }
+}</pre>
+
+<p>2つのショートカットを定義し、1つはプラットフォーム固有のキーの組み合わせとするには:</p>
+
+<pre class="brush: json no-line-numbers">"commands": {
+ "toggle-feature": {
+ "suggested_key": {
+ "default": "Alt+Shift+U",
+ "linux": "Ctrl+Shift+U"
+ },
+ "description": "Send a 'toggle-feature' event"
+ },
+ "do-another-thing": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+Y"
+ }
+ }
+}</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.commands")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/content_scripts/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/content_scripts/index.html
new file mode 100644
index 0000000000..601b79ec4a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/content_scripts/index.html
@@ -0,0 +1,229 @@
+---
+title: content_scripts
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 50%;">
+ <p>タイプ</p>
+ </th>
+ <td><code>Array</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須か</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers language-json notranslate">
+"content_scripts": [
+ {
+ "matches": ["*://*.mozilla.org/*"],
+ "js": ["borderify.js"]
+ }
+]</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>与えられたパターンに URL がマッチしているページに<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">コンテンツスクリプト</a>をロードすることをブラウザに教えます。</p>
+
+<p>このキーは配列です。それぞれのアイテムは以下の条件を満たすオブジェクトです:</p>
+
+<ul>
+ <li><strong>必ず matches という名前のキー</strong>を含まなければならず、これはスクリプトが読み込まれる URL パターンを指定します</li>
+ <li><strong><code>js</code></strong> と <strong><code>css</code></strong> というキーを入れても<strong>よく</strong>、それはマッチしたページに読み込まれるスクリプトを列挙します</li>
+ <li>その他のプロパティを入れてもよく、それはコンテンツスクリプトがいつどのように読み込まれるか管理します</li>
+</ul>
+
+<p>入れることのできるキーの詳細は下記の表にあります。</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">型</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><a id="all_frames"><code>all_frames</code></a></td>
+ <td><code>Boolean</code></td>
+ <td>
+ <p><code>true</code>: <code><a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts$edit#js">js</a></code> と <code><a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts$edit#css">css</a></code> で指定されたすべてのスクリプトを、指定した URL要求にマッチするすべてのフレームに(タブの最上位フレームでなくても)挿入します。これは親のフレームだけが URL要求にマッチしている子フレームには挿入しません。URL 要求は各フレームごとにチェックされます。</p>
+
+ <p><code>false</code>: タブの最上位フレームで URL要求にマッチしたフレームだけに挿入します。</p>
+
+ <p>デフォルトは <code>false</code></p>
+ </td>
+ </tr>
+ <tr>
+ <td><a id="css"><code>css</code></a></td>
+ <td><code>Array</code></td>
+ <td>
+ <p>manifest.json からの相対パスの配列で、マッチしたページに挿入される CSS ファイルを参照する。</p>
+
+ <p>ファイルは指定した順で、DOM が読み込まれる前に挿入される。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><a id="exclude_globs"><code>exclude_globs</code></a></td>
+ <td><code>Array</code></td>
+ <td>ワイルドカードを含む文字配列。下記の <a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts#Matching_URL_patterns">URL パターンにマッチする</a> を見てください。</td>
+ </tr>
+ <tr>
+ <td><a id="exclude_matches"><code>exclude_matches</code></a></td>
+ <td><code>Array</code></td>
+ <td><a href="/ja/Add-ons/WebExtensions/match_patterns">マッチパターン</a>の配列。下記の <a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts#Matching_URL_patterns">URL パターンにマッチする</a>を見てください。</td>
+ </tr>
+ <tr>
+ <td><a id="include_globs"><code>include_globs</code></a></td>
+ <td><code>Array</code></td>
+ <td>ワイルドカードを含む文字配列。下記の <a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts#Matching_URL_patterns">URL パターンにマッチする</a> を見てください。</td>
+ </tr>
+ <tr>
+ <td><a id="js"><code>js</code></a></td>
+ <td><code>Array</code></td>
+ <td>
+ <p>manifest.json からの相対パスの配列で、マッチしたページに挿入される JavaScript ファイルを参照する。</p>
+
+ <p>ファイルは指定した順でに挿入される。つまり、例えば、ここで jQuery をインクルードしてから他のコンテンツスクリプトを読み込むには、このようにします:</p>
+
+ <pre class="brush: json no-line-numbers notranslate">
+<code>"js": ["jquery.js", "my-content-script.js"]</code></pre>
+
+ <p><code>こうすると <code>"my-content-script.js"</code> から jQuery を使えます。</code></p>
+
+ <p><code>ファイルは <code><a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts$edit#run_at">run_at</a></code> で指定した時に挿入されます。</code></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code><a id="match_about_blank">match_about_blank</a></code></td>
+ <td><code>Boolean</code></td>
+ <td>
+ <p>コンテンツスクリプトを <code>"about:blank"</code> もしくは<code>"about:srcdoc"</code>のURLを持つページに挿入します。 if the URL of the page that opened or created this page <a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts#Matching_URL_patterns">matches the patterns</a> specified in the rest of the <code>content_scripts</code> key.</p>
+
+ <p>This is especially useful to run scripts in empty iframes , whose URL is <code>"about:blank"</code>. To do this you should also set the <code>all_frames</code> key.</p>
+
+ <p>例えば、 以下のような <code>content_scripts</code> キーがあるとします:</p>
+
+ <pre class="brush: json no-line-numbers language-json notranslate">
+"content_scripts": [
+ {
+ "js": ["my-script.js"],
+ "matches": ["https://example.org/"],
+ "match_about_blank": true,
+ "all_frames": true
+ }
+ ]</pre>
+
+ <p>ユーザーが<code>https://example.org/</code>をロードすると、ページに空のiframeが埋め込まれ、 <code>"my-script.js"</code> がそのiframe内に読み込まれます。</p>
+
+ <p><code>match_about_blank</code> is supported in Firefox from version 52. Note that in Firefox, content scripts won't be injected into empty iframes at <code>"document_start"</code> even if you specify that value in <code><a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts#run_at">run_at</a></code>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><a id="matches"><code>matches</code></a></td>
+ <td><code>Array</code></td>
+ <td>
+ <p><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">マッチパターン</a>の配列。下記の <a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts#Matching_URL_patterns">URLパターンにマッチする</a> を見てください。</p>
+
+ <p>これは唯一の必須なキーです。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><a id="run_at"><code>run_at</code></a></td>
+ <td><code>String</code></td>
+ <td>
+ <p>This option determines when the scripts specified in <code><a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts$edit#js">js</a></code> are injected. You can supply one of three strings here, each of which identifies a state in the process of loading a document. The states directly correspond to {{domxref("Document/readyState", "Document.readyState")}}:</p>
+
+ <ul>
+ <li>"<code>document_start</code>": corresponds to <code>loading</code>. The DOM is still loading.</li>
+ <li>"<code>document_end</code>": corresponds to <code>interactive</code>. The DOM has finished loading, but resources such as scripts and images may still be loading.</li>
+ <li>"<code>document_idle</code>": corresponds to <code>complete</code>. The document and all its resources have finished loading.</li>
+ </ul>
+
+ <p>The default value is <code>"document_idle"</code>.</p>
+
+ <p>In all cases, files in <code><a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts$edit#js">js</a></code> are injected after files in <code><a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts$edit#css">css</a></code>.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="URL_パターンにマッチする">URL パターンにマッチする</h2>
+
+<p><code>"content_scripts"</code> キーは URL マッチングを元にしてコンテンツスクリプトをドキュメントに添付します: ドキュメントの URL がキーに指定されたものとマッチしたら、スクリプトは添付されます。<code>"content_scripts"</code> 内には指定に使える 4 つのキーワードがあります:</p>
+
+<ul>
+ <li><code>matches</code>: <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">マッチパターン</a>の配列</li>
+ <li><code>exclude_matches:</code> <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">マッチパターン</a>の配列</li>
+ <li><code>include_globs</code>: <a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts$edit#globs">globs</a> の配列</li>
+ <li><code>exclude_globs:</code> <a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts$edit#globs">globs</a> の配列</li>
+</ul>
+
+<p>これらのプロパティにマッチするには、URL は配列内で少なくとも 1 つの項目にマッチしなれりばなりません。例えばこのようなプロパティが与えられたら:</p>
+
+<pre class="brush: json no-line-numbers language-json notranslate">"matches": ["*://*.example.org/*", "*://*.example.com/*"]</pre>
+
+<p>"http://example.org/" と "http://example.com/" の両方がマッチします。</p>
+
+<p><code>matches</code> は唯一必須のキーなため、その他の 3 つのキーはそれ以降のマッチ URL の制限に使われます。全体のキーにマッチするために、URL は下記のようでなければなりません:</p>
+
+<ol>
+ <li> <code>matches</code> プロパティにマッチしている</li>
+ <li>かつ、<code>include_globs</code> があれば、それにマッチする</li>
+ <li>かつ、<code>exclude_matches</code> があれば、それにマッチしない</li>
+ <li>かつ、<code>exclude_globs</code> があれば、それにマッチしない</li>
+</ol>
+
+<h3 id="globs">globs</h3>
+
+<p>glob は単にワイルドカードを含むことのある文字列です。ワイルドカードには 2種類あって、glob内に組み合わせることができます:</p>
+
+<ul>
+ <li>"*" は 0個以上のキャラクターにマッチします</li>
+ <li>"?" はちょうど 1個のキャラクターにマッチします</li>
+</ul>
+
+<p>例えば: <code>"*na?i"</code> は <code>"illuminati"</code> と <code>"annunaki"</code> にマッチし、<code>"sagnarelli"</code> にはマッチしせん</p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: json no-line-numbers language-json notranslate">"content_scripts": [
+ {
+ "matches": ["*://*.mozilla.org/*"],
+ "js": ["borderify.js"]
+ }
+]</pre>
+
+<p>これは "borderify.js" という 1 つのコンテンツスクリプトを、HTTP か HTTPS のいずれかで配布される、"mozilla.org" かそのサブドメインのページに挿入します。</p>
+
+<pre class="brush: json no-line-numbers language-json notranslate">"content_scripts": [
+ {
+ "exclude_matches": ["*://developer.mozilla.org/*"],
+ "matches": ["*://*.mozilla.org/*"],
+ "js": ["jquery.js", "borderify.js"]
+ }
+ ]</pre>
+
+<p>これは 2 つのコンテンツスクリプトを、HTTP か HTTPS のいずれかで配布される、 "mozilla.org" かそのサブドメイン(ただし "developer.mozilla.org" を除く)のページに挿入します。</p>
+
+<p>コンテンツスクリプトは同じ DOM を見て、配列の順番どおりに挿入されます。よって "borderify.js" からは "jquery.js" によって追加されたグローバル変数が見えます。</p>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.content_scripts")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.html
new file mode 100644
index 0000000000..17a3658865
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.html
@@ -0,0 +1,121 @@
+---
+title: content_security_policy
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"content_security_policy": "default-src 'self'"</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>拡張機能はデフォルトでCSP(content security policy)が適用されています。デフォルトのポリシーの場合、ソースは <a href="/ja/docs/Web/HTML/Element/script">&lt;script&gt;</a> タグ及び <a href="/ja/docs/Web/HTML/Element/object">&lt;object&gt;</a> タグからのみロードできるように制限されており、 <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code>のような潜在的に安全でない慣習(バッドプラクティス)は制限されます。この実装のより詳細は <a href="/ja/Add-ons/WebExtensions/Content_Security_Policy#Default_content_security_policy">Default content security policy</a>を見てください。</p>
+
+<p><code>"content_security_policy"</code> manifestキーを使用して、アドオンのセキュリティを緩くしたり逆にもっと制限することができます。  このキーは、Content-Security-Policy HTTPヘッダーと同じ方法で指定されます。 CSP  の文法の一般的な記述は<a href="/ja/docs/Web/HTTP/CSP">CSPを使用する</a>を見てください。</p>
+
+<p>例として以下のような使用方法が可能です:</p>
+
+<ul>
+ <li>拡張機能にパッケージ外からスクリプトやオブジェクトの読み込みを許可する、その方法は URL を{{CSP("script-src")}} や {{CSP("object-src")}} ディレクティブで指定する</li>
+ <li>拡張機能にインラインスクリプトの実行を許可する、その方法は<a href="/ja/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#Unsafe_inline_script"> <code>"script-src"</code> ディレクティブでスクリプトのハッシュを指定する</a></li>
+ <li>拡張機能に <code>eval()</code> やそれに類する機能を許可する、その方法は <code>'unsafe-eval'</code> を {{CSP("script-src")}} ディレクティブの中に入れる</li>
+ <li>その他のコンテンツを許可されたソースのみ、例えば画像やスタイルシートのみに制限する、適切な<a href="/ja/docs/Web/HTTP/Headers/Content-Security-Policy">ポリシーディレクティブ</a>を使って。</li>
+</ul>
+
+<p>指定できるポリシーには以下のような制限があります。</p>
+
+<ul>
+ <li>ポリシーは少なくとも {{CSP("script-src")}} ディレクティブ及び {{CSP("object-src")}} ディレクティブを含む必要があり、 {{CSP("script-src")}} ディレクティブは <code>'self'</code>キーワードを含まなければならない。</li>
+ <li>外部のソースを使用する場合は<code>https:</code> スキームを使用しなければならない。</li>
+ <li><a href="https://publicsuffix.org/list/">public suffix list</a> 内のドメインのリモートリソースはワイルドカードを使用禁止(よって "*.co.uk" と "*.blogspot.com" は許可されないが、 "*.foo.blogspot.com" は許可される)。</li>
+ <li>すべてのソースはホストを指定しなければならない。</li>
+ <li><code>blob:</code>, <code>filesystem:</code>, <code>moz-extension:</code>, <code>https:</code> スキームのリソースのみ指定することができる。</li>
+ <li><code>'none'</code>, <code>'self'</code>, <code>'unsafe-eval'</code> <a href="/ja/docs/Web/HTTP/Headers/Content-Security-Policy/default-src#Sources">キーワード</a>のみ指定することができる。{{訳注("chromeと同様unsafe-inlineは許可されない")}}</li>
+</ul>
+
+<h2 id="例">例</h2>
+
+<h3 id="有効な例">有効な例</h3>
+
+<p>"https://example.com" からのリモートスクリプトを許可: (<em>注</em> <a href="#exampleNote_1">1</a><sup><a href="#exampleNote_1"> </a></sup>を見よ)</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' https://example.com; object-src 'self'"</pre>
+
+<p>"jquery.com" のサブドメインからのリモートスクリプトを許可:</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' https://*.jquery.com; object-src 'self'"</pre>
+
+<p><a href="/ja/Add-ons/WebExtensions/Content_Security_Policy#eval%28%29_and_friends"><code>eval()</code> and friends</a>を許可:</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"</pre>
+
+<p>次のインラインスクリプトを許可: <code>"&lt;script&gt;alert('Hello, world.');&lt;/script&gt;"</code>:</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng='; object-src 'self'"</pre>
+
+<p>他のポリシーはそのままだが、画像は拡張機能にパッケージされていることを要求する:</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self'; object-src 'self'; img-src 'self'"</pre>
+
+<p>すべてのコンテンツが拡張機能にパッケージされていることを要求する:</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "default-src 'self'"
+</pre>
+
+<h3 id="無効な例">無効な例</h3>
+
+<p><code>"object-src"</code> ディレクティブが省略されているポリシー:</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' https://*.jquery.com;"</pre>
+
+<p> <code>"script-src"</code> ディレクティブにおいて <code>"self"</code> キーワードが入っていないポリシー:</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "script-src https://*.jquery.com; object-src 'self'"</pre>
+
+<p>リモートソーススキームが <code>https</code> ではない:</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' <strong>http</strong>://code.jquery.com; object-src 'self'"</pre>
+
+<p>ワイルドカードを通常のドメインに使用している:</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' https://<strong>*.blogspot.com</strong>; object-src 'self'"</pre>
+
+<p>リモートソーススキームは https だがホストがない:</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' https:; object-src 'self'"</pre>
+
+<p>ディレクティブに現在サポートしていない <code>'unsafe-inline'</code>キーワードが含まれている:</p>
+
+<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' 'unsafe-inline'; object-src 'self'"</pre>
+
+<p><span id="exampleNote_1">1. 注<em>記: 有効な例は正しい CSP のキーの使い方を表しますが、'unsafe-eval', 'unsafe-inline', リモートスクリプト、リモートソースを CSP に指定する拡張機能は</em></span><span><em>、主なセキュリティの問題から、addons.mozilla.org に載せる拡張機能には許可されません。</em></span></p>
+
+<h2 id="ブラウザ互換性">ブラウザ互換性</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p> </p>
+
+<p>{{Compat("webextensions.manifest.content_security_policy")}}</p>
+
+<p> </p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/default_locale/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/default_locale/index.html
new file mode 100644
index 0000000000..39e70b0d6a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/default_locale/index.html
@@ -0,0 +1,44 @@
+---
+title: default_locale
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/default_locale
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/default_locale
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>条件次第: _locales サブディレクトリがある場合は必要で、そうでない場合は不要。</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json">
+"default_locale": "en"</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>このキーは拡張機能が _locales ディレクトリを含んでいる場合は必要で、そうでない場合は不要です。これは _locales のサブディレクトリを識別し、このサブディレクトリは拡張機能の既定の文字列を探すために使用されます。</p>
+
+<p><a href="/ja/Add-ons/WebExtensions/Internationalization">国際化</a>を見てください。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers language-json"><code class="language-json"><span class="key token">"default_locale":</span> <span class="string token">"en"</span></code></pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.default_locale")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/description/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/description/index.html
new file mode 100644
index 0000000000..0caa680efe
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/description/index.html
@@ -0,0 +1,44 @@
+---
+title: description
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/description
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/description
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"description": "Replaces pictures with pictures of cats."</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>ブラウザーのユーザーインターフェースに表示するための、拡張機能の簡単な説明です。</p>
+
+<p>これは<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">ローカライズ可能なプロパティ</a>です。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers language-json"><code class="language-json"><span class="key token">"description":</span> <span class="string token">"Replaces pictures with pictures of cats."</span></code></pre>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.description")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/developer/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/developer/index.html
new file mode 100644
index 0000000000..0495588666
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/developer/index.html
@@ -0,0 +1,52 @@
+---
+title: developer
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/developer
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/developer
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"developer": {
+ "name": "Walt Whitman",
+ "url": "https://en.wikipedia.org/wiki/Walt_Whitman"
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>拡張機能の開発者の名前と、そのホームページ URL で、ブラウザーの UI に表示されるためのもの。</p>
+
+<p>このオブジェクトと、そのプロパティの2つ共、オプションです。"name" と "url" プロパティは、存在する場合、<a href="/ja/Add-ons/WebExtensions/manifest.json/author">author</a> と<a href="/ja/Add-ons/WebExtensions/manifest.json/homepage_url"> homepage_url</a> キーをそれぞれ上書きします。このオブジェクトでは単独の開発者名と URL が指定できます。</p>
+
+<p>これは<a href="/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">ローカライズ可能なプロパティです</a>。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers">"developer": {
+ "name": "Walt Whitman",
+ "url": "https://en.wikipedia.org/wiki/Walt_Whitman"
+}</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.developer")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html
new file mode 100644
index 0000000000..42a1b0d092
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html
@@ -0,0 +1,42 @@
+---
+title: devtools_page
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"devtools_page": "devtools/my-page.html"</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>このキーを使って拡張機能にブラウザー組み込みの開発ツールを拡張することができます。</p>
+
+<p>このキーは HTML ファイルの URL として定義されます。その HTML ファイルは拡張機能に同梱し、URL は拡張機能のルートからの相対パスである必要があります。</p>
+
+<p>詳しくは <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools">開発者ツールの拡張</a>を見てください。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers">"devtools_page": "devtools/my-page.html"</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.devtools_page")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html
new file mode 100644
index 0000000000..484b6ac14b
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html
@@ -0,0 +1,46 @@
+---
+title: homepage_url
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers language-json">
+<code class="language-json"><span class="key token">"homepage_url":</span> <span class="string token">"https://example.org/my-addon"</span></code></pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>拡張機能のホームページの URL です。</p>
+
+<p><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/developer">developer</a> キーが提供されていて、そこに "url" プロパティが含まれている場合、homepage_url キーは上書きされます。</p>
+
+<p>これは<a href="/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">国際化できるプロパティ</a>です。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json">"homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/beastify"</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.homepage_url")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/icons/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/icons/index.html
new file mode 100644
index 0000000000..e6f5b3d376
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/icons/index.html
@@ -0,0 +1,78 @@
+---
+title: icons
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/icons
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/icons
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"icons": {
+ "48": "icon.png",
+ "96": "icon@2x.png"
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>The <code>icons</code> key specifies icons for your extension. Those icons will be used to represent the extension in components such as the Add-ons Manager.</p>
+
+<p>It consists of key-value pairs of image size in px and image path relative to the root directory of the extension.</p>
+
+<p>If <code>icons</code> is not supplied, a standard extension icon will be used by default.</p>
+
+<p>You should supply at least a main extension icon, ideally 48x48 px in size. This is the default icon that will be used in the Add-ons Manager. You may, however, supply icons of any size and Firefox will attempt to find the best icon to display in different components.</p>
+
+<p>Firefox will consider the screen resolution when choosing an icon. To deliver the best visual experience to users with high-resolution displays, such as Retina displays, provide double-sized versions of all your icons.</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<p>The keys in the <code>icons</code> object specify the icon size in px, values specify the relative icon path. This example contains a 48px extension icon and a larger version for high-resolution displays.</p>
+
+<pre class="brush: json no-line-numbers">"icons": {
+ "48": "icon.png",
+ "96": "icon@2x.png"
+}</pre>
+
+<h2 id="SVG" name="SVG">SVG</h2>
+
+<p>You can use SVG and the browser will scale your icon appropriately. There are currently two caveats though:</p>
+
+<ol>
+ <li>You need to specify a viewBox in the image. E.g.:
+ <pre class="brush: html">&lt;svg viewBox="0 0 48 48" width="48" height="48" ...</pre>
+ </li>
+ <li>Even though you can use one file, you still need to specify various size of the icon in your manifest. E.g.:
+ <pre class="brush: json">"icons": {
+ "48": "icon.svg",
+ "96": "icon.svg"
+}</pre>
+ </li>
+</ol>
+
+<div class="note">
+<p>If you are using a program like Inkscape for creating SVG, you might want to save it as a "plain SVG". Firefox might be confused by various special namespaces and not display your icon.</p>
+</div>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.icons")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/incognito/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/incognito/index.html
new file mode 100644
index 0000000000..e7876c1859
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/incognito/index.html
@@ -0,0 +1,70 @@
+---
+title: incognito
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/incognito
+tags:
+ - Add-ons
+ - WebExtensions
+ - incognito
+ - manifest.json
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/incognito
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"incognito": "spanning"</pre>
+
+ <pre class="brush: json no-line-numbers">
+"incognito": "split"</pre>
+
+ <pre class="brush: json no-line-numbers">
+"incognito": "not_allowed"</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code>incognito</code> キーを使ってプライベートブラウジングウィンドウで機能拡張が動作する方法を管理できます。</p>
+
+<p>This is a string which may take any of the following values:</p>
+
+<ul>
+ <li>
+ <p>"spanning" (the default): the extension will see events from private and non-private windows and tabs. Windows and tabs will get an <code>incognito</code> property in the <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/windows/Window">Window</a></code> or <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/Tab">Tab</a></code> that represents them. This property indicates whether or not the object is private:</p>
+
+ <pre class="brush: js">browser.windows.getLastFocused().then((windowInfo) =&gt; {
+ console.log(`Window is private: ${windowInfo.incognito}`);
+});</pre>
+ </li>
+ <li>"split": the extension will be split between private and non-private windows. There are effectively two copies of the extension running: one sees only non-private windows, the other sees only private windows. Each copy has isolated access to Web APIs (so, for example, <code><a href="/ja/docs/Web/API/Storage/LocalStorage">localStorage</a></code> is not shared). However, the WebExtension API <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/local">storage.local</a></code> is shared.</li>
+ <li>"not_allowed": private tabs and windows are invisible to the extension.</li>
+</ul>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers">"incognito": "spanning"
+</pre>
+
+<pre class="brush: json no-line-numbers">"incognito": "split"
+</pre>
+
+<pre class="brush: json no-line-numbers">"incognito": "not_allowed"
+</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.incognito")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/index.html
new file mode 100644
index 0000000000..34274940de
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/index.html
@@ -0,0 +1,123 @@
+---
+title: manifest.json
+slug: Mozilla/Add-ons/WebExtensions/manifest.json
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json
+---
+<div>{{AddonSidebar}}</div>
+
+<p>manifest.json ファイルは、WebExtension API を使う拡張機能に必ず含めなければならない唯一のファイルです。</p>
+
+<p>manifest.json を使うことで、拡張機能の名前やバージョンといった基本的なメタデータを指定したり、拡張機能の機能的な側面として、例えばバックグラウンドスクリプトやコンテンツスクリプト、ブラウザーアクションを指定することもできます。</p>
+
+<p>これは <a href="https://developer.mozilla.org/ja/docs/Glossary/JSON">JSON</a>形式のファイルですが、1つ例外があります: "<code>//</code>"-形式のコメントが許可されています。</p>
+
+<p>manifest.json のキー一覧は次の通り:</p>
+
+<p>{{ListSubpages("/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json")}}</p>
+
+<h3 class="index" id="manifest.json_のキーの注意点">manifest.json のキーの注意点</h3>
+
+<ul>
+ <li>必須のキーは、<code>"manifest_version"</code>, <code>"version"</code>, <code>"name"</code> だけです。</li>
+ <li><code>"default_locale"</code> は <code>"_locales"</code> ディレクトリーが存在する場合は必要ですが、そうでない場合は不要です。</li>
+ <li><code>"applications"</code> は Google Chrome でサポートされていません。</li>
+</ul>
+
+<h3 id="manifest.json_の情報を実行時に参照する">manifest.json の情報を実行時に参照する</h3>
+
+<p>拡張機能の manifest には、拡張機能の JavaScript から {{WebExtAPIRef("runtime.getManifest()")}} 関数を使ってアクセスできます:</p>
+
+<pre class="brush: js">browser.runtime.getManifest().version;</pre>
+
+<h2 id="Example" name="Example">例</h2>
+
+<p>下記のブロックには一般的な manifest keys の基本文法を示します。</p>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> これはコピー・ペーストできるような使われ方のつもりではないのに注意してください: どのキーが必要かは開発している拡張機能に依存します。</p>
+</div>
+
+<p>完全な例は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Examples">Example extensions</a> を見てください。</p>
+
+<pre class="brush: json">{
+ "applications": {
+ "gecko": {
+ "id": "addon@example.com",
+ "strict_min_version": "42.0"
+ }
+ },
+
+ "background": {
+ "scripts": ["jquery.js", "my-background.js"],
+ "page": "my-background.html"
+ },
+
+ "browser_action": {
+ "default_icon": {
+ "19": "button/geo-19.png",
+ "38": "button/geo-38.png"
+ },
+ "default_title": "Whereami?",
+ "default_popup": "popup/geo.html"
+ },
+
+ "commands": {
+ "toggle-feature": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+Y",
+ "linux": "Ctrl+Shift+U"
+ },
+ "description": "Send a 'toggle-feature' event"
+ }
+ },
+
+ "content_security_policy": "script-src 'self' https://example.com; object-src 'self'",
+
+ "content_scripts": [
+ {
+ "exclude_matches": ["*://developer.mozilla.org/*"],
+ "matches": ["*://*.mozilla.org/*"],
+ "js": ["borderify.js"]
+ }
+ ],
+
+ "default_locale": "en",
+
+ "description": "...",
+
+ "icons": {
+ "48": "icon.png",
+ "96": "icon@2x.png"
+ },
+
+ "manifest_version": 2,
+
+ "name": "...",
+
+ "page_action": {
+ "default_icon": {
+ "19": "button/geo-19.png",
+ "38": "button/geo-38.png"
+ },
+ "default_title": "Whereami?",
+ "default_popup": "popup/geo.html"
+ },
+
+ "permissions": ["webNavigation"],
+
+ "version": "0.1",
+
+ "web_accessible_resources": ["images/my-image.png"]
+}</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの実装状況</h2>
+
+<p>マニフェストキーとサブキーのすべてを見るには、<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">完全な manifest.json ブラウザー互換テーブルを見てください。</a></p>
+
+
+
+<p>{{Compat("webextensions.manifest")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html
new file mode 100644
index 0000000000..0690f56e8d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html
@@ -0,0 +1,45 @@
+---
+title: manifest_version
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version
+---
+<p>{{AddonSidebar}}</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Number</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>はい</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json">
+"manifest_version": 2</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>このキーは、拡張機能で使用される manifest.json のバージョンを指定します。</p>
+
+<p>現在、この値は常に 2 です。</p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: json no-line-numbers">"manifest_version": 2
+</pre>
+
+<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.manifest_version")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/name/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/name/index.html
new file mode 100644
index 0000000000..b3e34dd25f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/name/index.html
@@ -0,0 +1,46 @@
+---
+title: name
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/name
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/name
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>はい</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json">
+"name": "My Extension"</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>拡張機能の名前です。これはブラウザーのユーザーインターフェースや addons.mozilla.org のようなサイトで拡張機能を識別するために使用されます。</p>
+
+<p>名前がUIに表示されるよう長すぎないようにするのは良い習慣です。Google Chrome と Microsoft Edge は名前を45文字に制限しています。</p>
+
+<p>これは<a href="/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">国際化できるプロパティ</a>です。</p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: json no-line-numbers language-json"><code class="language-json"><span class="key token">"name":</span> <span class="string token">"My Extension"</span></code></pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.name")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/omnibox/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/omnibox/index.html
new file mode 100644
index 0000000000..3bc821b62e
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/omnibox/index.html
@@ -0,0 +1,50 @@
+---
+title: omnibox
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/omnibox
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/omnibox
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"omnibox": {
+  "keyword": "mdn"
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code>omnibox</code> を使って拡張機能のための omnibox キーワードを定義します。</p>
+
+<p>ユーザーがブラウザーのアドレスバーにキーワードを入力する時、スペースに続いて、続きの文字が <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/omnibox">omnibox</a></code> API を使って拡張機能に送られます。拡張機能は自身のサジェストを使ってアドレスバーのドロップダウンサジェストのリストを生成できます。</p>
+
+<p>2つ以上の拡張機能が同じキーワードを定義している場合、最後にインストールされた拡張機能がキーワードを管理します。以前にインストールされたあらゆる拡張機能はもう <code>omnibox</code> API を使えません。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers">"omnibox": {
+ "keyword": "mdn"
+}</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.omnibox")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/optional_permissions/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/optional_permissions/index.html
new file mode 100644
index 0000000000..66d1571eea
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/optional_permissions/index.html
@@ -0,0 +1,98 @@
+---
+title: optional_permissions
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions
+tags:
+ - Add-ons
+ - WebExtensions
+ - manifest.json
+ - optional_permissions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Array</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"optional_permissions": [
+ "*://developer.mozilla.org/*",
+ "webRequest"
+]</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code>optional_permissions</code> キーを使って、拡張機能がインストールされた後に、実行時に要求するパーミッションを一覧できます。</p>
+
+<p><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> キーは拡張機能がインストールされる時に必要とするパーミッションを一覧しますが、<code>optional_permissions</code> は拡張機能のインストール時には必要でないが、インストール後のどこかで要求されることのあるパーミッションを一覧します。パーミッションを要求するには、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/permissions">permissions</a></code> API を使います。パーミッションを要求すると、おそらくユーザーに拡張機能にパーミッションを許可しても良いかを尋ねるダイアログが表示されるでしょう。</p>
+
+<p>このキーは 2種類のパーミッションを含みます: ホストパーミッションと API パーミッションです。</p>
+
+<h2 id="Host_permissions" name="Host_permissions">ホストパーミッション</h2>
+
+<p>これは <code><a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions</a></code> キーで指定できるホストパーミッションと同じです。</p>
+
+<h2 id="API_permissions" name="API_permissions">API パーミッション</h2>
+
+<p>下記のいずれも入れることができますが、すべてのブラウザーに入ってはいません: ブラウザー固有の詳細については、互換性テーブルを確認してください:</p>
+
+<ul>
+ <li><code>activeTab</code></li>
+ <li><code>background</code></li>
+ <li><code>bookmarks</code></li>
+ <li><code>browserSettings</code></li>
+ <li><code>clipboardRead</code></li>
+ <li><code>clipboardWrite</code></li>
+ <li><code>contentSettings</code></li>
+ <li><code>contextMenus</code></li>
+ <li><code>cookies</code></li>
+ <li><code>debugger</code></li>
+ <li><code>downloads</code></li>
+ <li><code>downloads.open</code></li>
+ <li><code>geolocation</code></li>
+ <li><code>history</code></li>
+ <li><code>idle</code></li>
+ <li><code>management</code></li>
+ <li><code>notifications</code></li>
+ <li><code>pageCapture</code></li>
+ <li><code>tabs</code></li>
+ <li><code>topSites</code></li>
+ <li><code>webNavigation</code></li>
+ <li><code>webRequest</code></li>
+ <li><code>webRequestBlocking</code></li>
+</ul>
+
+<p>これは <code><a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permissions</a></code> で許可される API パーミッションのサブセットです。</p>
+
+<p>このセットでは、下記のパーミッションが、ユーザープロンプトなしで暗黙的に許可されます<span class="blob-code-inner"><span class="pl-s">:</span></span><span class="blob-code-inner"><span class="pl-s"> activeTab, cookies, idle, webRequest, webRequestBlocking</span></span></p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers"> "optional_permissions": ["*://developer.mozilla.org/*"]</pre>
+
+<p>拡張機能に developer.mozilla.org 以下のページの権限アクセス要求を有効にします。</p>
+
+<pre class="brush: json no-line-numbers"> "optional_permissions": ["tabs"]</pre>
+
+<p>拡張機能に <code>tabs</code> API の権限部分へのアクセス要求を有効にします。</p>
+
+<pre class="brush: json no-line-numbers"> "optional_permissions": ["*://developer.mozilla.org/*", "tabs"]</pre>
+
+<p>拡張機能に上記の両方への要求を有効にします。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.optional_permissions")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html
new file mode 100644
index 0000000000..ce6eb64d2f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html
@@ -0,0 +1,103 @@
+---
+title: options_ui
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/options_ui
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/options_ui
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"options_ui": {
+ "page": "options/options.html"
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p><code>options_ui</code> キーは、拡張機能の<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Options_pages">オプションページ</a>を定義するために使用します。</p>
+
+<p>オプションページは、拡張機能の設定を含みます。オプションページはブラウザーのアドオンマネージャー、または拡張機能内で {{WebExtAPIRef("runtime.openOptionsPage()")}} を使用することでアクセスできます。</p>
+
+<p><code>options_ui</code> を拡張機能にパッケージされた HTML ファイルへのパスとして指定します。通常のウェブページのように、HTML、CSS、JavaScript ファイルを含めることができます。しかし、通常のページと異なり、拡張機能が<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">権限</a>を持つすべての <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API">WebExtension API</a> を使用できます。しかし、バックグラウンドスクリプトとは異なるスコープで実行されます。</p>
+
+<p><strong>オプションページ</strong>と<strong>バックグラウンドスクリプト</strong>の JavaScript 上で、データや関数を<strong>共有したい</strong>場合、{{WebExtAPIRef("extension.getBackgroundPage()")}} を使用してバックグラウンドスクリプトの <a href="/ja/docs/Web/API/Window">Window</a> への参照を直接取得するか、{{WebExtAPIRef("extension.getViews()")}} で拡張機能内で実行されているいずれかのページの {{domxref("Window")}} を取得します。あるいは、JavaScript で <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage">runtime.sendMessage()</a></code> や <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage">runtime.onMessage</a></code>、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/connect">runtime.connect()</a></code> を使用することで、オプションページとバックグラウンドスクリプト間で相互にコミュニケーションできます。後者の方法 (や同等の <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port">runtime.Port</a></code> ) でも <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Background_scripts">バックグラウンドスクリプト</a>と<strong><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Content_scripts">コンテンツスクリプト</a></strong>とでオプションを共有できます。</p>
+
+<p>一般的に、オプションページで変更されたオプションは、<a href="/ja/Add-ons/WebExtensions/API/storage">storage API</a> を使用して、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/sync">storage.sync</a> (ユーザーがログインしているすべてのブラウザーインスタンス間で設定を同期する場合) か <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/local">storage.local</a> (現在のマシン / プロファイルのローカル設定にする場合) のいずれかに保存します。バックグラウンドスクリプトに変更を通知する必要がある場合、バックグラウンドスクリプトで <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/onChanged">storage.onChanged</a> にリスナーを追加します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p><code>options_ui</code> キーは次のコンテンツを持つオブジェクトです:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">型</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>browser_style</code></td>
+ <td><code>Boolean</code></td>
+ <td>
+ <p>省略可能。既定では <code>true</code>。</p>
+
+ <p>これを使ってページにブラウザーの UI と <code>browser_style</code> プロパティを使う他の拡張機能とで一貫した見た目とするようなスタイルシートを入れることができる。既定では <code>true</code> だが、このプロパティを入れるのは推奨される。</p>
+
+ <p>Firefox では、chrome://browser/content/extension.css か、OS X では chrome://browser/content/extension-mac.css でスタイルシートを見ることができる。</p>
+
+ <p><a class="external external-icon" href="https://firefoxux.github.io/StyleGuide/#/controls">Firefox Style Guide</a> はポップアップ内の要素が特定のスタイルを取るために適用させるクラスを説明している。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>open_in_tab</code></td>
+ <td><code>Boolean</code></td>
+ <td>
+ <p>省略可能。既定値は <code>false</code>。</p>
+
+ <p><code>true</code> の場合、オプションページはブラウザーのアドオンマネージャーに統合されたものではなく、通常のブラウザータブで開かれる。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>page</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>必須。</p>
+
+ <p>オプションページの仕様を含む HTML ファイルへのパス。</p>
+
+ <p>パスは manifest.json 自体への相対パス。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json">  "options_ui": {
+    "page": "options/options.html"
+  }</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.options_ui")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/page_action/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/page_action/index.html
new file mode 100644
index 0000000000..0eb928bace
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/page_action/index.html
@@ -0,0 +1,200 @@
+---
+title: page_action
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/page_action
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/page_action
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"page_action": {
+ "browser_style": true,
+ "default_icon": {
+ "19": "button/geo-19.png",
+ "38": "button/geo-38.png"
+ },
+ "default_title": "Whereami?",
+ "default_popup": "popup/geo.html"
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>ページアクションは拡張機能がブラウザーのURLバーの中に追加できるアイコンです。</p>
+
+<p>拡張機能では関連したポップアップをつけて、そこでHTML、CSS、 JavaScript を使ったコンテンツを提供することもできます。</p>
+
+<p>ポップアップを提供した場合、ユーザーがアイコンをクリックした時にポップアップが開いて、ポップアップ内で実行する JavaScript にてユーザーのインタラクションを扱います。ポップアップをつけない場合、ユーザーがアイコンをクリックした時のクリックイベントは拡張機能の <a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_pages">background scripts</a> に送られます。</p>
+
+<p><a href="/ja/Add-ons/WebExtensions/API/pageAction">pageAction API</a> を使用してプログラムでページアクションを作成および操作することもできます。</p>
+
+<p>ページアクションはブラウザアクションと似ていますが、ブラウザ全体ではなく特定の Web ページに関連付けられている点が異なります。アクションが特定のページにのみ関連している場合は、ページアクションを使用して関連するページにのみ表示する必要があります。アクションがすべてのページまたはブラウザ自体に関連している場合は、ブラウザアクションを使用してください。</p>
+
+<p>ブラウザアクションはデフォルトで表示されますが、ページアクションはデフォルトで非表示になります。タブのIDを渡して <code><a href="/ja/Add-ons/WebExtensions/API/pageAction/show">pageAction.show()</a></code> を呼び出すことで、それらを特定のタブに対して表示できます。show_matches プロパティを使用してこのデフォルトの動作を変更することもできます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p>The <code>page_action</code> key is an object that may have any of three properties, all optional:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">型</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles">browser_style</a></code></td>
+ <td><code>Boolean</code></td>
+ <td>
+ <p>Optional, defaulting to <code>false</code>.</p>
+
+ <p>Use this to include a stylesheet in your popup that will make it look consistent with the browser's UI and with other extensions that use the <code>browser_style</code> property. Although this key defaults to <code>false</code>, it's recommended that you include it and set it to <code>true</code> in order to make your popups consistent with the look of the rest of the browser user interface.</p>
+
+ <p>In Firefox, the stylesheet can be seen at chrome://browser/content/extension.css, or chrome://browser/content/extension-mac.css on OS X.</p>
+
+ <p>The <a href="https://firefoxux.github.io/StyleGuide/#/controls">Firefox Style Guide</a> describes the classes you can apply to elements in the popup in order to get particular styles.</p>
+
+ <p>The <a href="https://github.com/mdn/webextensions-examples/tree/master/latest-download">latest-download</a> example extension uses <code>browser_style</code> in its popup.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>default_icon</code></td>
+ <td><code>Object</code> or <code>String</code></td>
+ <td>
+ <p>Use this to specify an icon for the action.</p>
+
+ <p>It's recommended that you supply two icons here, one 19x19 pixels, and one 38x38 pixels, and specify them in an object with properties named "19" and "38", like this:</p>
+
+ <pre class="brush: json no-line-numbers">
+ "default_icon": {
+ "19": "geo-19.png",
+ "38": "geo-38.png"
+ }</pre>
+
+ <p>If you do this, then the browser will pick the right size icon for the screen's pixel density.</p>
+
+ <p>You can just supply a string here:</p>
+
+ <pre class="brush: json no-line-numbers">
+"default_icon": "geo.png"</pre>
+
+ <p>If you do this, then the icon will be scaled to fit the toolbar, and may appear blurry.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>default_popup</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>The path to an HTML file containing the specification of the popup.</p>
+
+ <p>The HTML file may include CSS and JavaScript files using <code><a href="/ja/docs/Web/HTML/Element/link">&lt;link&gt;</a></code> and <code><a href="/ja/docs/Web/HTML/Element/script">&lt;script&gt;</a></code> elements, just like a normal web page. However, don't use <code><a href="/ja/docs/Web/HTML/Element/script">&lt;script&gt;</a></code> with embedded code, because you'll get a  Content Violation Policy error. Instead, <code><a href="/ja/docs/Web/HTML/Element/script">&lt;script&gt;</a></code> must use the <code><a href="/ja/docs/Web/HTML/Element/script">src</a></code> attribute to load a separate script file.</p>
+
+ <p>Unlike a normal web page, JavaScript running in the popup can access all the <a href="/ja/Add-ons/WebExtensions/API">WebExtension APIs</a> (subject, of course, to the extension having the appropriate <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a>).</p>
+
+ <p>これは<a href="/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">ローカライズ可能なプロパティ</a>です。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>default_title</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>Tooltip for the icon, displayed when the user moves their mouse over it.</p>
+
+ <p>This is a <a href="/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">localizable property</a>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>hide_matches</code></td>
+ <td><code>Array</code> of <code>Match Pattern</code> except <code>&lt;all_urls&gt;</code></td>
+ <td>
+ <p>Hide the page action 既定では for pages whose URLs match any of the given <a href="/ja/Add-ons/WebExtensions/match_patterns">match patterns</a>.</p>
+
+ <p>Note that page actions are always hidden 既定では unless <code>show_matches</code> is given. Therefore it only makes sense to include this property if <code>show_matches</code> is also given, and in this case it will override the patterns in <code>show_matches</code>. 例えば、consider a value like:</p>
+
+ <pre class="brush: json">
+"page_action": {
+ "show_matches": ["https://*.mozilla.org/*"],
+ "hide_matches": ["https://developer.mozilla.org/*"]
+}</pre>
+
+ <p>This shows the page action 既定では for all HTTPS  URLs under the "mozilla.org" domain, except for pages under "developer.mozilla.org".</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>show_matches</code></td>
+ <td><code>Array</code> of <code>Match Pattern</code></td>
+ <td>
+ <p>Show the page action 既定では for pages whose URLs match any of the given patterns.</p>
+
+ <p>See also <code>hide_matches</code>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>pinned</code></td>
+ <td><code>Boolean</code></td>
+ <td>
+ <p>Optional, defaulting to <code>true</code>.</p>
+
+ <p>Controls whether or not the page action should appear in the location bar 既定では when the user installs the extension.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers">"page_action": {
+ "default_icon": {
+ "19": "button/geo-19.png",
+ "38": "button/geo-38.png"
+ }
+}</pre>
+
+<p>A page action with just an icon, specified in 2 different sizes. The extension's background scripts can receive click events when the user clicks the icon using code like this:</p>
+
+<pre class="brush: js no-line-numbers"> browser.pageAction.onClicked.addListener(handleClick);</pre>
+
+<pre class="brush: json no-line-numbers">"page_action": {
+ "default_icon": {
+ "19": "button/geo-19.png",
+ "38": "button/geo-38.png"
+ },
+ "default_title": "Whereami?",
+ "default_popup": "popup/geo.html"
+}</pre>
+
+<p>A page action with an icon, a title, and a popup. The popup will be shown when the user clicks the icon.</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+
+
+<p>{{Compat("webextensions.manifest.page_action")}}</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles">Browser styles</a></li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/permissions/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/permissions/index.html
new file mode 100644
index 0000000000..097d3a4102
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/permissions/index.html
@@ -0,0 +1,190 @@
+---
+title: permissions
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/permissions
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/permissions
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 50%;"><strong>型</strong></th>
+ <td><code>Array</code></td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>必須項目か?</strong></th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>例</strong></th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"permissions": [
+ "*://developer.mozilla.org/*",
+ "webRequest"
+]</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>拡張機能が特別な権限を必要とする際には <code>permission</code> キーを使用します。このキーには文字列の配列を指定し、各文字列がパーミッションを要求します。</p>
+
+<p>このキーを用いてパーミッションを要求した場合、ブラウザーはインストール時に「この拡張機能はこれだけの特権を要求しています」と通知し、これらの特権を許可しても大丈夫かとユーザーに確認します。ブラウザーはまた、インストール後にユーザーがアドオンの特権を調査することも許可します。</p>
+
+<p>キーには以下の 3 種類があります。</p>
+
+<ul>
+ <li>host パーミッション</li>
+ <li>API パーミッション</li>
+ <li>activeTab パーミッション</li>
+</ul>
+
+<p>{{英語版章題("Host permissions")}}</p>
+
+<h2 id="host_パーミッション">host パーミッション</h2>
+
+<p>host パーミッションは<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">マッチパターン</a>として指定します。それぞれのパターンによって、アドオンの要求する権限が有効となる URL の範囲を指定します。host パーミッションの例は <code>"*://developer.mozilla.org/*"</code> のようなものです。</p>
+
+<p>この権限には以下が含まれます。</p>
+
+<ul>
+ <li>そのオリジンに対して、クロス-オリジン制約なしに <a href="https://developer.mozilla.org/ja/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a> アクセス、 <a href="https://developer.mozilla.org/ja/docs/Web/API/Fetch_API">fetch</a> アクセスができる権限(コンテンツスクリプトからのリクエストによるものも含みます)</li>
+ <li>そのオリジンによるページに(<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">tabs.executeScript</a> を用いて)スクリプトをプログラム的に挿入できる権限</li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a> API を用いて、そのホストからのイベントを受信できる権限</li>
+ <li><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/cookies">cookies</a> API を用いて、そのホストの Cookie にアクセスできる権限("cookies" API のパーミッションが指定されている場合)</li>
+ <li>ホスト名が完全修飾ドメインであり、ワイルドカードを含まない場合にトラッキング防止を回避。<code>&lt;all_urls&gt;</code> については除外。</li>
+</ul>
+
+<p>Firefox では バージョン 56 以降で拡張機能は自動的に自身をオリジンとする host パーミッションを次の形式で取得します:</p>
+
+<pre><code>moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/</code></pre>
+
+<p>ここで <code>60a20a9b-1ad4-af49-9b6c-c64c98c37920</code> は拡張機能の内部 ID です。拡張機能は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/extension/getURL">extension.getURL()</a> を呼び出すことでこの URL を取得できます:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>extension<span class="punctuation token">.</span><span class="function token">getURL</span><span class="punctuation token">(</span><span class="string token">""</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="comment token">// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/</span></code></pre>
+
+<p>{{英語版章題("API permissions")}}</p>
+
+<h2 id="API_パーミッション">API パーミッション</h2>
+
+<p>API パーミッションには、拡張機能から使用したい WebExtension API の名前をキーワードとして指定します。</p>
+
+<p>現時点で使用できるキーワードは以下の通りです。</p>
+
+<ul>
+ <li><code>activeTab</code></li>
+ <li><code>alarms</code></li>
+ <li><code>background</code></li>
+ <li><code>bookmarks</code></li>
+ <li><code>browserSettings</code></li>
+ <li><code>browsingData</code></li>
+ <li><code>contentSettings</code></li>
+ <li><code>contextMenus</code></li>
+ <li><code>contextualIdentities</code></li>
+ <li><code>cookies</code></li>
+ <li><code>debugger</code></li>
+ <li><code>downloads</code></li>
+ <li><code>downloads.open</code></li>
+ <li><code>find</code></li>
+ <li><code>geolocation</code></li>
+ <li><code>history</code></li>
+ <li><code>identity</code></li>
+ <li><code>idle</code></li>
+ <li><code>management</code></li>
+ <li><code>menus</code></li>
+ <li><code>nativeMessaging</code></li>
+ <li><code>notifications</code></li>
+ <li><code>pageCapture</code></li>
+ <li><code>pkcs11</code></li>
+ <li><code>privacy</code></li>
+ <li><code>proxy</code></li>
+ <li><code>sessions</code></li>
+ <li><code>storage</code></li>
+ <li><code>tabs</code></li>
+ <li><code>theme</code></li>
+ <li><code>topSites</code></li>
+ <li><code>webNavigation</code></li>
+ <li><code>webRequest</code></li>
+ <li><code>webRequestBlocking</code></li>
+</ul>
+
+<p>ほとんどの場合、パーミッションはその API へのアクセス権を付与するだけですが、以下のような例外があります。</p>
+
+<ul>
+ <li><code>tabs</code> パーミッションを指定した場合、<a href="/ja/Add-ons/WebExtensions/API/tabs">特別な <code>tabs</code> API のパーツ</a> (<code>Tab.url</code> / <code>Tab.title</code> / <code>Tab.faviconUrl</code>)にアクセスすることが許可されます。 Firefox では、<code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">tabs.query()</a></code> の <code>queryInfo</code> パラメーターに <code>url</code> を入れるのにも <code>tabs</code> が必要です。他の <code>tabs</code> API についてはパーミッションの要求なしで使用できます。</li>
+ <li><code>webRequestBlocking</code> パーミッションを指定した場合、"blocking" 引数の使用が許可されます。これによって<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/WebRequest">リクエストの変更やキャンセル</a>が可能となります。</li>
+ <li><code>downloads.open</code> パーミッションを指定した場合、{{WebExtAPIRef("downloads.open()")}} API の利用が許可されます。</li>
+</ul>
+
+<p>{{英語版章題("activeTab permission")}}</p>
+
+<h2 id="activeTab_パーミッション">activeTab パーミッション</h2>
+
+<p>このパーミッションは <code>"activeTab"</code> と指定されます。拡張機能が <code>activeTab</code> パーミッションを持つなら、ユーザーが拡張機能と相互作用する時に、拡張機能はアクティブなタブ限定の特別な権限が許可されます。</p>
+
+<p>"ユーザーの相互作用" とは次のようなものです:</p>
+
+<ul>
+ <li>ブラウザーアクションやページアクションをクリック</li>
+ <li>コンテキストメニュー項目を選択</li>
+ <li>拡張機能によって定義されたキーボードショートカットをアクティベート</li>
+</ul>
+
+<p>特別な権限とは:</p>
+
+<ul>
+ <li><code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/tabs/executeScript">chrome.tabs.executeScript</a></code> と <code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/tabs/insertCSS">chrome.tabs.insertCSS</a></code> を用いてタブに JavaScript や CSS をプログラム的に挿入できる能力</li>
+ <li>現在のタブに、次の一部の tabs API の権限アクセス: <code>Tab.url</code>, <code>Tab.title</code>,  <code>Tab.faviconUrl</code>.</li>
+</ul>
+
+<p>このパーミッションの意図は、拡張機能によくあるユースケースを、強力すぎるパーミッションを与えずに実行できるようにすることです。多くの拡張機能は「ユーザーが希望したら現在のページで何かをする」ことを希望しています。例えば、ユーザーがブラウザーアクションをクリックした時に現在のページでスクリプトを実行する拡張機能を考えます。<code>activeTab</code> パーミッションがない場合、拡張機能は <code>&lt;all_urls&gt;</code> の host パーミッションを要求する必要があります。しかし、これは拡張機能に必要以上の力を与えています: アクティブなタブで単にユーザーアクションに応答する代わりに、いかなるタブで、いかなるタイミングで、スクリプトを実行できます。</p>
+
+<p>{{英語版章題("Clipboard access")}}</p>
+
+<h2 id="Clipboard_access" name="Clipboard_access">クリップボードのアクセス</h2>
+
+<p>拡張機能にクリップボードとやりとりできるようにする、2つの権限があります:</p>
+
+<ul>
+ <li><code>clipboardWrite</code>: <code>document.execCommand("copy")</code> か <code>document.execCommand("cut")</code> を使ったクリップボードの書き込み</li>
+ <li><code>clipboardRead</code>: <code>document.execCommand("paste")</code> を使ったクリップボードの読み込み</li>
+</ul>
+
+<p>これについての詳細は<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard">クリップボードと相互作用する</a>を見てください。</p>
+
+<h2 id="Unlimited_storage" name="Unlimited_storage">Unlimited storage</h2>
+
+<p><code>unlimitedStorage</code> パーミッションは:</p>
+
+<ul>
+ <li>拡張機能に {{WebExtAPIRef("storage.local")}} API で制限する容量を超えられるようにする</li>
+ <li>Firefox では<a href="/ja/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria#Firefox_specifics">「永続的な」IndexedDB データベース</a>の作成を、データベース作成時にブラウザーからユーザーに許可を確認することなく、可能にする</li>
+</ul>
+
+<p>{{英語版章題("Example")}}</p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: json"> "permissions": ["*://developer.mozilla.org/*"]</pre>
+
+<p>これは developer.mozilla.org ドメイン配下のページにアクセスする権限を要求しています。</p>
+
+<pre class="brush: json"> "permissions": ["tabs"]</pre>
+
+<p><code>tabs</code> API を使用する権限を要求しています。</p>
+
+<pre class="brush: json"> "permissions": ["*://developer.mozilla.org/*", "tabs"]</pre>
+
+<p>上記の権限を両方ともに要求しています。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.permissions")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/protocol_handlers/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/protocol_handlers/index.html
new file mode 100644
index 0000000000..c7a2119c9b
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/protocol_handlers/index.html
@@ -0,0 +1,87 @@
+---
+title: protocol_handlers
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/protocol_handlers
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+ - manifest.json
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/protocol_handlers
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Array</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"protocol_handlers": [
+ {
+ "protocol": "ircs",
+ "name": "IRC Mozilla Extension",
+ "uriTemplate": "https://irccloud.mozilla.com/#!/%s"
+ }
+]</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>このキーを使ってウェブベースのプロトコルハンドラーを登録します。</p>
+
+<p>プロトコルハンドラーは特定の種類のリンクを扱う方法を知るアプリケーションです: 例えば、メールクライアントは "mailto:" リンクのプロトコルハンドラーです。ユーザーが "mailto:" リンクをクリックした時、ブラウザーは "mailto:" プロトコルのハンドラーが選んだアプリケーションを開きます (または設定によっては、ハンドラーの選択を与えます)。</p>
+
+<p>このキーでは、特定プロトコルのハンドラーとしてウェブサイトを登録できます。このキーの文法と意味は <code><a href="/ja/docs/Web/API/Navigator/registerProtocolHandler">Navigator.registerProtocolHandler()</a></code> 関数によく似ていて、その違いは <code>registerProtocolHandler()</code> だけはウェブサイト自身をハンドラーに登録できることです。</p>
+
+<p>プロトコルハンドラーは 3 つのプロパティを持ち、すべて必須です:</p>
+
+<dl>
+ <dt><code>protocol</code></dt>
+ <dd>
+ <p>プロトコルを定義する文字列。次のいずれか:</p>
+
+ <ul>
+ <li>次のどれか: "bitcoin", "dat", "dweb", "geo", "gopher", "im", "ipfs", "ipns", "irc", "ircs", "magnet", "mailto", "mms", "news", "nntp", "sip", "sms", "smsto", "ssb", "ssh", "tel", "urn", "webcal", "wtai", "xmpp".</li>
+ <li>"web+" や "ext+"で始まるカスタム名からなる文字列。例えば: "web+foo" や "ext+foo"。カスタム名は小文字の ASCII 文字列でなければならない。拡張機能は "ext+" の形式を使うのが推奨です。</li>
+ </ul>
+ </dd>
+ <dt><code>name</code></dt>
+ <dd>プロトコルハンドラーを表す文字列。これはユーザーがハンドラーにリンクを開くかどうか問い合わせた時に、ユーザーに表示されます。</dd>
+ <dt><code>uriTemplate</code></dt>
+ <dd>ハンドラーの URL を表す。この文字列はプレースホルダーとして "%s" を入れる必要があります: これは処理される文書の URL がエスケープされたもので置き換えられます。この URL は本当の URL や電話番号、電子メールアドレス、などです。これは<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">ローカライズ可能なプロパティ</a>です。</dd>
+</dl>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers">"protocol_handlers": [
+  {
+    "protocol": "magnet",
+    "name": "Magnet Extension",
+    "uriTemplate": "https://example.com/#!/%s"
+  }
+]</pre>
+
+<p>ハンドラーは<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages">拡張機能ページ</a>のこともあります。</p>
+
+<pre class="brush: json no-line-numbers">"protocol_handlers": [
+  {
+    "protocol": "magnet",
+    "name": "Magnet Extension",
+    "uriTemplate": "/example.xhtml#!/%s"
+  }
+]</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.protocol_handlers")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/short_name/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/short_name/index.html
new file mode 100644
index 0000000000..bf1d19d15a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/short_name/index.html
@@ -0,0 +1,44 @@
+---
+title: short_name
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/short_name
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/short_name
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>No</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"short_name": "My Extension"</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>拡張機能の短い名前。与えられた場合、これは <a href="/ja/Add-ons/WebExtensions/manifest.json/name">name</a> 項目が長過ぎるコンテキストで使われます。短い名前は 12 文字を超えないことが推奨されます。manifest.json に短い名前が入ってない場合、name が代わりに使われて切り捨てられることがあります。</p>
+
+<p>これは<a href="/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">ローカライズ可能なプロパティ</a>です。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers">"short_name": "My Extension"</pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.short_name")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/sidebar_action/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/sidebar_action/index.html
new file mode 100644
index 0000000000..420b92aa5e
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/sidebar_action/index.html
@@ -0,0 +1,133 @@
+---
+title: sidebar_action
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"sidebar_action": {
+ "default_icon": {
+ "16": "button/geo-16.png",
+ "32": "button/geo-32.png"
+ },
+ "default_title": "My sidebar",
+ "default_panel": "sidebar/sidebar.html"
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Sidebars">サイドバー</a>はブラウザーウィンドウの左側の、ウェブページの横に表示されるペインです。ブラウザーはユーザーに現在利用できるサイドバーを表示して表示するサイドバーを選ぶUIを提供します。</p>
+
+<p>sidebar_action キーによりサイドバーの既定のプロパティを定義できます。このプロパティは {{WebExtAPIRef("sidebarAction")}} API.を使って変更できます。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p><code>sidebar_action</code> キーは下記に載っているプロパティを持つことのあるオブジェクトです。唯一の必須プロパティは <code>default_panel</code> です。</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">型</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>browser_style</code></td>
+ <td><code>Boolean</code></td>
+ <td>
+ <p>オプション、デフォルトでは <code>true</code>。</p>
+
+ <p>Use this to include a stylesheet in your popup that will make it look consistent with the browser's UI and with other extensions that use the <code>browser_style</code> property.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>default_icon</code></td>
+ <td><code>Object</code> or <code>String</code></td>
+ <td>
+ <p>これはサイドバーのアイコンを指定するのに使います。このアイコンはブラウザーのUI内でサイドバーを開いたり閉じたりするのに表示されます。</p>
+
+ <p>Icons are specified as URLs relative to the manifest.json file itself.</p>
+
+ <p>You can specify a single icon file by supplying a string here:</p>
+
+ <pre class="brush: json no-line-numbers">
+"default_icon": "path/to/geo.svg"</pre>
+
+ <p>To specify multiple icons in different sizes, specify an object here. The name of each property is the icon's height in pixels, and must be convertible to an integer. The value is the URL. For example:</p>
+
+ <pre class="brush: json no-line-numbers">
+ "default_icon": {
+ "16": "path/to/geo-16.png",
+ "32": "path/to/geo-32.png"
+ }</pre>
+
+ <p>See <a href="/ja/Add-ons/WebExtensions/manifest.json/browser_action#Choosing_icon_sizes">Choosing icon sizes</a> for more guidance on this.</p>
+
+ <p>This property is optional: if it is omitted, the sidebar doesn't get an icon.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>default_panel</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>サイドバーのコンテンツを指定する HTML ファイルのパス。</p>
+
+ <p>HTML ファイルには、普通のウェブページと同様に CSS と JavaScript ファイルを <code><a href="/ja/docs/Web/HTML/Element/link">&lt;link&gt;</a></code> と <code><a href="/ja/docs/Web/HTML/Element/script">&lt;script&gt;</a></code> 要素を使って入れることができます。</p>
+
+ <p>普通のウェブページと異なり、パネル内で実行される JavaScript はすべての <a href="/ja/Add-ons/WebExtensions/API">WebExtension APIs</a> にアクセスできます(もちろん、拡張機能が持っている<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">権限</a>に従います)。</p>
+
+ <p>このプロパティは必須です。</p>
+
+ <p>これは<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">ローカライズ可能なプロパティです。</a></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>default_title</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>サイドバーのタイトル。これはブラウザーのUIの中でサイドバーを一覧したり開くのに使われ、サイドバーが開いた時には上に表示されます。</p>
+
+ <p>This property is optional: if it is omitted, the sidebar's title is the extension's <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/name">name</a></code>.</p>
+
+ <p>This is a <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">localizable property</a>.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers">"sidebar_action": {
+  "default_icon": "sidebar.svg",
+  "default_title": "My sidebar!",
+  "default_panel": "sidebar.html",
+ "browser_style": true
+}</pre>
+
+<p>For a simple example of an extension that uses a sidebar, see <a href="https://github.com/mdn/webextensions-examples/tree/master/annotate-page">annotate-page</a>.</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.sidebar_action")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/theme/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/theme/index.html
new file mode 100644
index 0000000000..ea5d11b1cc
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/theme/index.html
@@ -0,0 +1,979 @@
+---
+title: theme
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/theme
+tags:
+ - Add-ons
+ - Themes
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/theme
+---
+<div>{{AddonSidebar}}</div>
+
+<div class="note">
+<p id="Image_formats">Note that you can't yet submit static WebExtension-based themes to addons.mozilla.org. The work to support this is tracked in <a href="https://github.com/mozilla/addons/issues/501">https://github.com/mozilla/addons/issues/501</a>. If you want to share a theme with other users, you'll need to make it either a <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Themes/Lightweight_themes">lightweight theme</a> or a <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/theme">dynamic theme</a>.</p>
+</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"theme": {
+ "images": {
+ "headerURL": "images/sun.jpg"
+ },
+ "colors": {
+ "accentcolor": "#CF723F",
+ "textcolor": "#000"
+ }
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>theme キーを使って Firefox に適用する静的なテーマを定義します。</p>
+
+<div class="note">
+<p>If your manifest.json file includes the theme key, the extension is assumed to be a theme and any other WebExtension keys are ignored. If you want to include a theme with an extension, please see the {{WebExtAPIRef("theme")}} API.</p>
+</div>
+
+<h2 id="Image_formats" name="Image_formats">画像フォーマット</h2>
+
+<p>下記の画像フォーマットはすべての画像プロパティでサポートされています:</p>
+
+<ul>
+ <li>JPEG</li>
+ <li>PNG</li>
+ <li>APNG</li>
+ <li>SVG (アニメSVG は Firefox 59からサポートされています)</li>
+ <li>GIF (アニメ GIF はサポートされません)</li>
+</ul>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<p>theme キーは次のプロパティを取るオブジェクトです:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">型</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>images</code></td>
+ <td><code>Object</code></td>
+ <td>
+ <p>Firefox 60 以降ではオプション。Firefox 60より前では必須。</p>
+
+ <p>A JSON object whose properties represent the images to display in various parts of the browser. See <code><a href="/ja/Add-ons/WebExtensions/manifest.json/theme#images">images</a></code> for details on the properties that this object can contain.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>colors</code></td>
+ <td><code>Object</code></td>
+ <td>
+ <p>必須。</p>
+
+ <p>A JSON object whose properties represent the colors of various parts of the browser. See <code><a href="/ja/Add-ons/WebExtensions/manifest.json/theme#colors">colors</a></code> for details on the properties that this object can contain.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>properties</code></td>
+ <td><code>Object</code></td>
+ <td>
+ <p>オプション</p>
+
+ <p>This object has two properties that affect how the <code>"additional_backgrounds"</code> images are displayed. See <code><a href="/ja/Add-ons/WebExtensions/manifest.json/theme#properties">properties</a></code> for details on the properties that this object can contain.</p>
+
+ <ul>
+ <li><code>"additional_backgrounds_alignment":</code> an array of enumeration values defining the alignment of the corresponding <code>"additional_backgrounds":</code> array item.<br>
+ The alignment options include: <code>"bottom"</code>, <code>"center"</code>, <code>"left"</code>, <code>"right"</code>, <code>"top"</code>, <code>"center bottom"</code>, <code>"center center"</code>, <code>"center top"</code>, <code>"left bottom"</code>, <code>"left center"</code>, <code>"left top"</code>, <code>"right bottom"</code>, <code>"right center"</code>, and <code>"right top"</code>. If not specified, defaults to <code>"left top"</code>.<br>
+ Optional</li>
+ <li><code>"additional_backgrounds_tiling":</code> an array of enumeration values defining how the corresponding <code>"additional_backgrounds":</code> array item repeats, with support for <code>"no-repeat"</code>, <code>"repeat"</code>, <code>"repeat-x"</code>, and <code>"repeat-y"</code>. If not specified, defaults to <code>"no-repeat"</code>.<br>
+ Optional</li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="images" name="images">images</h3>
+
+<p dir="ltr">All URLs are relative to the manifest.json file and cannot reference an external URL.</p>
+
+<p dir="ltr">Images should be 200 pixels high to ensure they always fill the header space vertically.</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">型</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>headerURL</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>Fully optional from Firefox 60 onwards. One of theme_frame or headerURL had to be specified before Firefox 60. Note also that in Firefox 60 onwards, any {{cssxref("text-shadow")}} applied to the header text is removed if no <code>headerURL</code> is specified (see {{bug(1404688)}}).</p>
+
+ <p>The URL of a foreground image to be added to the header area and anchored to the upper right corner of the header area.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>theme_frame</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>Fully optional from Firefox 60 onwards. One of theme_frame or headerURL had to be specified before Firefox 60.</p>
+
+ <p>Alias for <code>headerURL</code>, provided for Chrome compatibility.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>additional_backgrounds</code></td>
+ <td><code>Array </code>of <code>String</code></td>
+ <td>
+ <p>オプション</p>
+
+ <p>An array of URLs for additional background images to be added to the header area and displayed behind the <code>"headerURL":</code> image. These images layer the first image in the array on top, the last image in the array at the bottom.</p>
+
+ <p>既定では all images are anchored to the upper right corner of the header area, but their alignment and repeat behavior can be controlled by properties of <code>"properties":</code>.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="colors" name="colors">colors</h3>
+
+<p>These properties define the colors used for different parts of the browser. They are all optional except <code>"accentcolor"</code> and <code>"textcolor"</code> where either those properties or their chrome counterparts have to be specified.</p>
+
+<p>All these properties can be specified as either a string containing any valid <a href="/ja/docs/Web/CSS/color_value">CSS color string</a> (including hexadecimal), or an RGB array, such as <code>"tab_text": [ 107 , 99 , 23 ]</code>. But note that <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/theme#Chrome_compatibility">in Chrome, colors may only be specified as an RGB array</a>.</p>
+
+<p>See <a href="#example-screenshot">the example screenshot below</a> to understand the parts of the browser UI that are affected by these properties.</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>accentcolor</code></td>
+ <td>
+ <p>The color of the header area background, displayed in the part of the header not covered or visible through the images specified in <code>"headerURL"</code> and <code>"additional_backgrounds"</code>.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "red",
+     "textcolor": "white"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15871/theme-accentcolor.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>button_background_active</code></td>
+ <td>
+ <p>The color of the background of the pressed toolbar buttons.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "button_background_active": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15872/theme-button_background_active.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>button_background_hover</code></td>
+ <td>
+ <p>The color of the background of the toolbar buttons on hover.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "button_background_hover": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15873/theme-button_background_hover.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>icons</code></td>
+ <td>
+ <p>The color of toolbar icons.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "icons": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15874/theme-icons.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>icons_attention</code></td>
+ <td>
+ <p>The color of toolbar icons in attention state such as the starred bookmark icon or finished download icon.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "icons_attention": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15875/theme-icons_attention.png" style="height: 324px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>popup</code></td>
+ <td>
+ <p>The background color of popups (such as the url bar dropdown and the arrow panels).</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "popup": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15876/theme-popup.png" style="height: 324px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>popup_border</code></td>
+ <td>
+ <p>The border color of popups.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "popup": "black",
+     "popup_text": "white",
+     "popup_border": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15877/theme-popup_border.png" style="height: 324px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>popup_highlight</code></td>
+ <td>
+ <p>The background color of items highlighted using the keyboard inside popups (such as the selected url bar dropdown item).</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "popup_highlight": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15878/theme-popup_highlight.png" style="height: 490px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>popup_highlight_text</code></td>
+ <td>
+ <p>The text color of items highlighted using the keyboard inside popups.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "popup_highlight": "black",
+     "popup_highlight_text": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15879/theme-popup_highlight_text.png" style="height: 490px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>popup_text</code></td>
+ <td>
+ <p>The text color of popups.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "popup": "black",
+     "popup_text": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15880/popup_text.png" style="height: 490px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>tab_line</code></td>
+ <td>
+ <p>The color of the selected tab line.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "tab_line": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15881/theme-tab_line.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>tab_loading</code></td>
+ <td>
+ <p>The color of the tab loading indicator and the tab loading burst.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "tab_loading": "red"
+  }
+}</pre>
+ <img alt="" src="https://mdn.mozillademos.org/files/15882/theme-tab_loading.gif" style="height: 186px; width: 618px;"></details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>tab_selected</code></td>
+ <td>
+ <p>The background color of the selected tab.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "images": {
+  "headerURL": "weta.png"
+},
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "tab_selected": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15883/theme-tab_selected.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>tab_text</code></td>
+ <td>
+ <p>From Firefox 59, it represents the text color for the selected tab.</p>
+
+ <p>From Firefox 55 to 58, it is the same as <code>"textcolor"</code>, provided for <a href="#Chrome_compatibility">Chrome compatibility</a>.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "images": {
+  "headerURL": "weta.png"
+},
+  "colors": {
+     "accentcolor": "black",
+     "textcolor": "white",
+     "tab_selected": "white",
+     "tab_text": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15884/theme-tab_text.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>textcolor</code></td>
+ <td>
+ <p>The color of the text displayed in the header area.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "toolbar": "white",
+    "textcolor": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15885/theme-textcolor.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar</code></td>
+ <td>
+ <p>The background color for the navigation bar, the bookmarks bar, and the selected tab.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "toolbar": "red",
+    "textcolor": "white"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15886/theme-toolbar.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_bottom_separator</code></td>
+ <td>
+ <p>The color of the line separating the bottom of the toolbar from the region below.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "textcolor": "white",
+    "toolbar_bottom_separator": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15887/theme-toolbar_bottom_separator.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field</code></td>
+ <td>
+ <p>The background color for fields in the toolbar, such as the URL bar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "textcolor": "white",
+    "toolbar_field": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15888/theme-toolbar_field.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_border</code></td>
+ <td>
+ <p>The border color for fields in the toolbar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "toolbar": "black",
+    "textcolor": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_border": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15889/theme-toolbar_field_border.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_border_focus</code></td>
+ <td>
+ <p>The focused border color for fields in the toolbar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "toolbar": "black",
+    "textcolor": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_border_focus": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15890/theme-toolbar_field_border_focus.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_focus</code></td>
+ <td>
+ <p>The focused background color for fields in the toolbar, such as the URL bar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "toolbar": "black",
+    "textcolor": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_focus": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15891/theme-toolbar_field_focus.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_text</code></td>
+ <td>
+ <p>The color of text in fields in the toolbar, such as the URL bar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "toolbar": "black",
+    "textcolor": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15892/theme-toolbar_field_text.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_text_focus</code></td>
+ <td>
+ <p>The color of text in focused fields in the toolbar, such as the URL bar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "toolbar": "black",
+    "textcolor": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_text_focus": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15893/theme-toolbar_field_text_focus.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_separator</code></td>
+ <td>
+ <p>The color of separators inside the URL bar. In Firefox 58 this was implemented as <code>toolbar_vertical_separator</code>.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "toolbar": "black",
+    "textcolor": "white",
+    "toolbar_field_separator": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15895/theme-toolbar_field_separator.png" style="height: 302px; width: 738px;"></p>
+
+ <p>In this screenshot, <code>"toolbar_vertical_separator"</code> is the white vertical line in the URL bar dividing the Reader Mode icon from the other icons.</p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_text</code></td>
+ <td>
+ <p>The color of toolbar text.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "textcolor": "white",
+    "toolbar": "black",
+    "toolbar_text": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15896/theme-toolbar_text.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_top_separator</code></td>
+ <td>
+ <p>The color of the line separating the top of the toolbar from the region above.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "textcolor": "white",
+    "toolbar": "black",
+    "toolbar_top_separator": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15897/theme-toolbar_top_separator.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_vertical_separator</code></td>
+ <td>
+ <p>The color of the separator next to the application menu icon. In Firefox 58, it corresponds to the color of separators inside the URL bar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json">
+"theme": {
+  "colors": {
+    "accentcolor": "black",
+    "textcolor": "white",
+    "toolbar": "black",
+    "toolbar_vertical_separator": "red"
+  }
+}</pre>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15898/theme-toolbar_vertical_separator.png" style="height: 302px; width: 738px;"></p>
+ </details>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="Aliases" name="Aliases">Aliases</h4>
+
+<p>Additionally, this key accepts various properties that are aliases for one of the properties above. These are provided for compatibility with Chrome. If an alias is given, and the non-alias version is also given, then the value will be taken from the non-alias version.</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">Alias for</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>bookmark_text</code></td>
+ <td><code>toolbar_text</code></td>
+ </tr>
+ <tr>
+ <td><code>frame</code></td>
+ <td><code>accentcolor</code></td>
+ </tr>
+ <tr>
+ <td><code>frame_inactive</code></td>
+ <td><code>accentcolor</code></td>
+ </tr>
+ <tr>
+ <td><code>tab_background_text</code></td>
+ <td><code>textcolor</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="properties" name="properties">properties</h3>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">型</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>additional_backgrounds_alignment</code></td>
+ <td>
+ <p><code>Array</code> of <code>String</code></p>
+ </td>
+ <td>
+ <p>Optional.</p>
+
+ <p>An array of enumeration values defining the alignment of the corresponding <code>"additional_backgrounds":</code> array item.<br>
+ The alignment options include:</p>
+
+ <ul>
+ <li><code>"bottom"</code></li>
+ <li><code>"center"</code></li>
+ <li><code>"left"</code></li>
+ <li><code>"right"</code></li>
+ <li><code>"top"</code></li>
+ <li><code>"center bottom"</code></li>
+ <li><code>"center center"</code></li>
+ <li><code>"center top"</code></li>
+ <li><code>"left bottom"</code></li>
+ <li><code>"left center"</code></li>
+ <li><code>"left top"</code></li>
+ <li><code>"right bottom"</code></li>
+ <li><code>"right center"</code></li>
+ <li><code>"right top"</code>.</li>
+ </ul>
+
+ <p>If not specified, defaults to <code>"left top"</code>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>additional_backgrounds_tiling</code></td>
+ <td>
+ <p><code>Array</code> of <code>String</code></p>
+ </td>
+ <td>
+ <p>Optional.</p>
+
+ <p>An array of enumeration values defining how the corresponding <code>"additional_backgrounds":</code> array item repeats. Options include:</p>
+
+ <ul>
+ <li><code>"no-repeat"</code></li>
+ <li><code>"repeat"</code></li>
+ <li><code>"repeat-x"</code></li>
+ <li><code>"repeat-y"</code></li>
+ </ul>
+
+ <p>If not specified, defaults to <code>"no-repeat"</code>.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p dir="ltr" id="docs-internal-guid-f85f22a2-6854-24d7-769b-8a47c376e2f2">A basic theme must define an image to add to the header, the accent color to use in the header, and the color of text used in the header:</p>
+
+<pre class="brush: json" dir="ltr"> "theme": {
+ "images": {
+ "headerURL": "images/sun.jpg"
+ },
+ "colors": {
+ "accentcolor": "#CF723F",
+ "textcolor": "#000"
+ }
+ }</pre>
+
+<p dir="ltr">Multiple images can be used to fill the header, using a blank/transparent header image to gain control over the placement of each visible image:</p>
+
+<pre class="brush: json" dir="ltr"> "theme": {
+ "images": {
+ "headerURL": "images/blank.png",
+ "additional_backgrounds": [ "images/left.png" , "images/middle.png", "images/right.png"]
+ },
+ "properties": {
+ "additional_backgrounds_alignment": [ "left top" , "top", "right top"]
+ },
+ "colors": {
+ "accentcolor": "blue",
+ "textcolor": "#ffffff"
+ }
+ }</pre>
+
+<p dir="ltr">You can also fill the header with a repeating image, or images, in this case a single image anchored in the middle top of the header and repeated across the rest of the header:</p>
+
+<pre class="brush: json" dir="ltr"> "theme": {
+ "images": {
+ "headerURL": "images/blank.png",
+ "additional_backgrounds": [ "images/logo.png"]
+ },
+ "properties": {
+ "additional_backgrounds_alignment": [ "top" ],
+ "additional_backgrounds_tiling": [ "repeat" ]
+ },
+ "colors": {
+ "accentcolor": "green",
+ "textcolor": "#000"
+ }
+ }</pre>
+
+<p><a id="example-screenshot" name="example-screenshot">The following example uses most of the different values for <code>theme.colors</code>:</a></p>
+
+<pre class="brush: json">  "theme": {
+    "images": {
+      "headerURL": "weta.png"
+    },
+
+    "colors": {
+       "accentcolor": "darkgreen",
+       "textcolor": "white",
+       "toolbar": "blue",
+       "toolbar_text": "cyan",
+       "toolbar_field": "orange",
+ "toolbar_field_border": "white",
+       "toolbar_field_text": "green",
+       "toolbar_top_separator": "red",
+       "toolbar_bottom_separator": "white",
+       "toolbar_vertical_separator": "white"
+    }
+  }</pre>
+
+<p>It will give you a browser that looks something like this:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15789/theme.png" style="display: block; height: 652px; margin-left: auto; margin-right: auto; width: 1446px;"></p>
+
+<p>In this screenshot, <code>"toolbar_vertical_separator"</code> is the white vertical line in the URL bar dividing the Reader Mode icon from the other icons.</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.theme", 10)}}</p>
+
+<h3 id="Chrome_compatibility" name="Chrome_compatibility">Chrome compatibility</h3>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Firefox property</th>
+ <th scope="col">Chrome property</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>images/headerURL</code></td>
+ <td>
+ <p><code>images/theme_frame</code></p>
+
+ <p>In Chrome, the image is anchored to the top left of the header and tiled if it doesn’t fill the header area.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>images/additional_backgrounds</code></td>
+ <td>Not supported</td>
+ </tr>
+ <tr>
+ <td><code>colors/accentcolor</code></td>
+ <td><code>colors/frame</code></td>
+ </tr>
+ <tr>
+ <td><code>colors/textcolor</code></td>
+ <td>Incorrectly implemented as <code>colors/tab_text</code> from Firefox 55 to 58, fixed as <code>colors/tab_background_text</code> from Firefox 59 onward</td>
+ </tr>
+ <tr>
+ <td><code>colors/toolbar_text</code></td>
+ <td><code>colors/bookmark_text</code></td>
+ </tr>
+ <tr>
+ <td><code>properties/additional_backgrounds_alignment</code></td>
+ <td>Not supported</td>
+ </tr>
+ <tr>
+ <td><code>properties/additional_backgrounds_tiling</code></td>
+ <td>Not supported</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>In Chrome, all colors must be specified as an array of RGB values, like this:</p>
+
+<pre class="brush: json">"theme": {
+  "colors": {
+     "frame": [255, 0, 0],
+     "tab_background_text": [0, 255, 0],
+     "bookmark_text": [0, 0, 255]
+  }
+}</pre>
+
+<p>From Firefox 59 onward, both the array form and the CSS color form are accepted for all properties. Before that, <code>colors/frame</code> and <code>colors/tab_text</code> required the array form, while other properties required the CSS color form.</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/version/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/version/index.html
new file mode 100644
index 0000000000..3f78365404
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/version/index.html
@@ -0,0 +1,53 @@
+---
+title: version
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/version
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/version
+---
+<p>{{AddonSidebar}}</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>
+ <p>はい</p>
+ </td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json">
+"version": "0.1"</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>ドットで区切られた数字と ASCII 文字でフォーマットされた拡張機能のバージョンです。バージョンのフォーマットの詳細は <a href="https://developer.mozilla.org/ja/docs/Toolkit_version_format">Version format</a> ページを見てください。</p>
+
+<p><a href="https://developer.chrome.com/extensions/manifest/version">Chrome の <code>version</code> 定義の構文</a>は、Firefox のものよりも制限が厳しいことに注意してください。</p>
+
+<ul>
+ <li>Chrome で有効な <code>version</code> の値は、常に Firefox でも有効です。</li>
+ <li>Firefox で有効な <code>version</code> の値は Chrome でも有効とは限りません。</li>
+</ul>
+
+<p>AMOキュー内でバージョンを "beta" にマークする特別ルールについては <a href="https://developer.mozilla.org/ja/Add-ons/Distribution#Beta_versions">maintenance policy</a> を見てください。</p>
+
+<h2 id="Example" name="Example">例</h2>
+
+<pre class="brush: json no-line-numbers language-json"><code class="language-json"><span class="key token">"version":</span> <span class="string token">"0.1"</span></code></pre>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.version")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/version_name/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/version_name/index.html
new file mode 100644
index 0000000000..1943385204
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/version_name/index.html
@@ -0,0 +1,40 @@
+---
+title: version_name
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/version_name
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/version_name
+---
+<p>{{AddonSidebar}}</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"version_name": "0.1 beta"</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>アップデート目的で使われる <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/version">version</a> 項目に加えて、<a href="https://developer.chrome.com/extensions/manifest/version">version_name</a> はバージョン説明の文字列をセットできて、存在する場合は表示目的に使われます。</p>
+
+<p><strong>version_name</strong> が存在しない場合、<strong>version</strong> 項目が同様な表示目的で使われます。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.version_name")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.html b/files/ja/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.html
new file mode 100644
index 0000000000..b32e6230b2
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.html
@@ -0,0 +1,100 @@
+---
+title: web_accessible_resources
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources
+tags:
+ - Add-ons
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources
+---
+<p>{{AddonSidebar}}</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">型</th>
+ <td><code>Array</code></td>
+ </tr>
+ <tr>
+ <th scope="row">必須</th>
+ <td>
+ <p>いいえ</p>
+ </td>
+ </tr>
+ <tr>
+ <th scope="row">例</th>
+ <td>
+ <pre class="brush: json notranslate">
+"web_accessible_resources": [
+ "images/my-image.png"
+]</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>ときには、拡張機能に何らかのリソース - たとえば、画像や HTML、CSS、JavaScript - をパッケージして、ウェブページで使用できるようにしたい場合があります。</p>
+
+<p>たとえば、<a href="/ja/Add-ons/WebExtensions/Walkthrough">2 つめの WebExtension</a> で使われている "beastify" 例題エクステンションでは、<code><a href="/ja/docs/Web/HTML/Element/img">&lt;img&gt;</a></code> 要素の <code>src</code> 属性を設定することで、ウェブページの画像を動物に置き換えています。画像は拡張機能とともにパッケージ化されており、ウェブページがそれらをロードできるようにするには、ウェブアクセシブルにする必要があります。</p>
+
+<p><code>web_accessible_resources</code> キーは、この方法でウェブページで利用可能にしたいすべてのパッケージされたリソースをリストします。manifest.json ファイルを基準としたパスを指定します。</p>
+
+<p>コンテンツスクリプトは、ウェブアクセシブルリソースとしてリストする必要がないことに注意してください。</p>
+
+<p>しかし、拡張機能が {{WebExtAPIRef("webRequest")}} API を使ってパブリックな (例 HTTPS) URL から拡張機能にパッケージされたページにリダイレクトする場合、拡張機能は<code>web_accessible_resources</code> キーにリストしておく必要があります。</p>
+
+<h3 id="Using_web_accessible_resources" name="Using_web_accessible_resources">web_accessible_resources を使う</h3>
+
+<p>例えば、拡張機能に images/my-image.png にある画像ファイルを入れたい場合、このようにします:</p>
+
+<pre class="no-line-numbers language-html notranslate"><code class="language-html">my-extension-files/
+ manifest.json
+ my-background-script.js
+ images/
+ my-image.png</code></pre>
+
+<p>ウェブページに、この画像を指す <code>src</code> 属性のある <code><a href="https://developer.mozilla.org/ja/docs/Web/HTML/Element/img">&lt;img&gt;</a></code> 要素を入れるには、 "web_accessible_resources" で次のように指定します:</p>
+
+<pre class="brush: json no-line-numbers language-json notranslate"><code class="language-json"><span class="key token">"web_accessible_resources":</span> <span class="punctuation token">[</span><span class="string token">"images/my-image.png"</span><span class="punctuation token">]</span></code></pre>
+
+<p>このファイルは次の URL で利用できます:</p>
+
+<pre class="no-line-numbers language-html notranslate"><code class="language-html">moz-extension://<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>extension-UUID</span><span class="punctuation token">&gt;</span></span>/images/my-image.png"</code></pre>
+
+<p><code>&lt;extension-UUID&gt;</code> は拡張機能の ID <strong>ではありません。</strong>これは各ブラウザーインスタンス用にランダムに生成されます。これはウェブサイトがインストールしている拡張機能を調べることで指紋を取ることを防止します。</p>
+
+<div class="blockIndicator note">
+<p>Chrome では、拡張機能の ID は固定です。リソースを <code>web_accessible_resouce</code> に指定すると、<code>chrome-extension://&lt;your-extension-id&gt;/&lt;path/to/resouce&gt;</code> でアクセス可能です。</p>
+</div>
+
+<p>この URL を取得する推奨される方法は、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/getURL">browser.runtime.getURL</a></code> API を使用して、 manifest.json の相対パスとして渡すことです:</p>
+
+<pre class="brush: js no-line-numbers language-js notranslate"><code class="language-js">browser<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span><span class="function token">getURL</span><span class="punctuation token">(</span><span class="string token">"images/my-image.png"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="comment token">// something like:</span>
+<span class="comment token">// moz-extension://944cfddf-7a95-3c47-bd9a-663b3ce8d699/images/my-image.png</span></code></pre>
+
+<p>この方法は拡張機能が実行されているブラウザがなんであれ正しい URL を取得します。</p>
+
+<h3 id="Wildcards" name="Wildcards">ワイルドカード</h3>
+
+<p><code>web_accessible_resources</code>エントリーにはワイルドカードを含めることができます。たとえば下記のエントリーでも "images/my-image.png" のリソースを入れることができます:</p>
+
+<pre class="brush: json no-line-numbers language-json notranslate"><code class="language-json"><span class="key token">"web_accessible_resources":</span> <span class="punctuation token">[</span><span class="string token">"images/*.png"</span><span class="punctuation token">]</span></code></pre>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<p>ページを web-accessible にすると、あらゆるウェブサイトからそのページにリンクやリダイレクトができます。このページは、通常のウェブページと同様に、あらゆる入力 (例えば POST データ) を、信頼のないソースから取っときたかのように扱うべきです。</p>
+
+<h2 id="例">例</h2>
+
+<pre class="brush: json notranslate">"web_accessible_resources": ["images/my-image.png"]</pre>
+
+<p>"images/my-image.png" のファイルをウェブアクセス可能にしています。</p>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.web_accessible_resources")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/match_patterns/index.html b/files/ja/mozilla/add-ons/webextensions/match_patterns/index.html
new file mode 100644
index 0000000000..6a30fdc9d7
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/match_patterns/index.html
@@ -0,0 +1,432 @@
+---
+title: マッチパターン
+slug: Mozilla/Add-ons/WebExtensions/Match_patterns
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Match_patterns
+---
+<div>{{AddonSidebar}}</div>
+
+<p>マッチパターンは URL のグループを指定する方法です。マッチパターンはいくつかの URL にマッチします。マッチパターンは WebExtensions API を使う拡張機能向けに、いくつかの場所で使用されます。特に<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">コンテンツスクリプト</a>をロードする文書を指定するときや、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a></code> リスナーを追加する URL を指定する時に使用します。</p>
+
+<p>マッチパターンを使用する API は通常マッチパターンのリストを受け取り、URL がパターンのいずれかにマッチする場合は適切なアクションを実行します。たとえば manifest.json 内の <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> キーを参照してください。</p>
+
+<h2 id="Match_pattern_structure" name="Match_pattern_structure">マッチパターンの構造</h2>
+
+<div class="blockIndicator note">
+<p><strong>記:</strong> ブラウザーによってはサポートしていないスキームがあります。<br>
+ 詳しくは<a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Match_patterns$edit#Browser_compatibility">ブラウザー互換性テーブル</a>を見てください。</p>
+</div>
+
+<p>すべてのマッチパターンは文字列で指定します。特別な値<a href="/ja/Add-ons/WebExtensions/Match_patterns#%3Call_urls%3E"> <code>&lt;all_urls&gt;</code></a> を除き、マッチパターンは3つの部分から成り立っています。 <em>scheme</em>, <em>host</em>, <em>path</em> です。 scheme と host の間は  <code>://</code> で句切られます。</p>
+
+<pre class="notranslate">&lt;scheme&gt;://&lt;host&gt;&lt;path&gt;</pre>
+
+<h3 id="scheme" name="scheme">scheme</h3>
+
+<p> <em>scheme</em> 部は2つの形式のうち、どちらかを指定します。</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col" style="width: 50%;">形式</th>
+ <th scope="col">マッチするもの</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>*</code></td>
+ <td>"http"か"https"のみ、いくつかのブラウザーでは <a href="https://wiki.developer.mozilla.org/ja/docs/Web/API/WebSockets_API">"ws" と "wss"</a></td>
+ </tr>
+ <tr>
+ <td><code>http</code>, <code>https</code>, <code>ws</code>, <code>wss</code>, <code>ftp</code>, <code>ftps</code>, <code>data</code>, <code>file</code> のうちどれか 1 つ</td>
+ <td>指定したスキームのみ</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="host" name="host">host</h3>
+
+<p><em>host</em>部は3つ形式のうちどれか 1 つを取ります。</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col" style="width: 50%;">形式</th>
+ <th scope="col">マッチするもの</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>*</code></td>
+ <td>すべてのホスト</td>
+ </tr>
+ <tr>
+ <td><code>*.</code> に続くホスト名の一部分</td>
+ <td>指定したホストと任意のサブドメイン</td>
+ </tr>
+ <tr>
+ <td>ワイルドカード無しの完全なホスト名</td>
+ <td>指定したホストのみ</td>
+ </tr>
+ </tbody>
+</table>
+
+<p><em>host部</em>にはポート番号は入りません。</p>
+
+<p>"file"スキームだけは、<em>host</em>部はオプションです。</p>
+
+<p>ワイルドカード "*" は <em>host</em> の最初のみに適用できることに注意してください。</p>
+
+<h3 id="path" name="path">path</h3>
+
+<p>パス部は <code>/</code> で開始しなければいけません。</p>
+
+<p>その後、ワイルドカード <code>*</code> と、URL パスとして許可される文字とを組み合わせたものが続けて入るかもしれません。ホスト部と異なり、パス部はワイルドカード <code>*</code> を途中や終わりに含むことができて、さらに 2 つ以上の <code>*</code> を含められます。</p>
+
+<p><em>path</em> の値は、URL パスに <a href="https://en.wikipedia.org/wiki/Query_string">URL クエリーストリング</a>を加えた文字列と一致します。クエリーストリングがある場合、それらの間に <code>?</code> を含んでいます。例えば、<code>foo.bar</code> で終わる URL パスのあらゆるドメインに URL マッチしたい場合、マッチパターンは <code>['*://*/*foo.bar', '*://*/*foo.bar?*']</code>です。単に <code>bar*</code> ではなく <code>?*</code> は必要で、最後の <code>*</code> は URL クエリーストリングにも、URL パスの部分でないものにも適用するためです。</p>
+
+<p><a href="https://en.wikipedia.org/wiki/Fragment_identifier">URL フラグメント識別子</a>や、<code>#</code> の後についているものは、<em>path</em> とみなされません。</p>
+
+<div class="blockIndicator note">
+<p><strong>注</strong>: path パターン文字列にポート番号を含めるべきではありません。<em>"http://localhost:1234/*" </em>のようにポート番号を追加するとマッチパターンは無視されます。しかし、"<em>http://localhost:1234</em>" は "<em>http://localhost/*</em>" にマッチします。</p>
+</div>
+
+<h3 id="&lt;all_urls>" name="&lt;all_urls>">&lt;all_urls&gt;</h3>
+
+<p>特殊な値である <code>&lt;all_urls&gt;</code> は、サポートしているすべての scheme の URL( "http", "https", "file", "ftp", "app" )にマッチします。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col" style="width: 33%;">パターン</th>
+ <th scope="col" style="width: 33%;">マッチする例</th>
+ <th scope="col" style="width: 33%;">マッチしない例</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <p><code>&lt;all_urls&gt;</code></p>
+
+ <p>すべての URL にマッチ</p>
+ </td>
+ <td>
+ <p><code>http://example.org/</code></p>
+
+ <p><code>https://a.org/some/path/</code></p>
+
+ <p><code>ws://sockets.somewhere.org/</code></p>
+
+ <p><code>wss://ws.example.com/stuff/</code></p>
+
+ <p><code>ftp://files.somewhere.org/</code></p>
+
+ <p><code>ftps://files.somewhere.org/</code></p>
+ </td>
+ <td>
+ <p><code>resource://a/b/c/</code><br>
+ (サポートされていないスキーム)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>*://*/*</code></p>
+
+ <p>すべての HTTP, HTTPS, WebSocket URL にマッチ</p>
+ </td>
+ <td>
+ <p><code>http://example.org/</code></p>
+
+ <p><code>https://a.org/some/path/</code></p>
+
+ <p><code>ws://sockets.somewhere.org/</code></p>
+
+ <p><code>wss://ws.example.com/stuff/</code></p>
+ </td>
+ <td>
+ <p><code>ftp://ftp.example.org/</code><br>
+ (マッチしないスキーム)</p>
+
+ <p><code>ftps://ftp.example.org/</code><br>
+ (マッチしないスキーム)</p>
+
+ <p><code>file:///a/</code><br>
+ (マッチしないスキーム)</p>
+ </td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>*://*.mozilla.org/*</code></p>
+
+ <p>"mozilla.org" かそのサブドメインでホストされている HTTP, HTTPS, WebSocket の URL にマッチ</p>
+ </td>
+ <td>
+ <p><code>http://mozilla.org/</code></p>
+
+ <p><code>https://mozilla.org/</code></p>
+
+ <p><code>http://a.mozilla.org/</code></p>
+
+ <p><code>http://a.b.mozilla.org/</code></p>
+
+ <p><code>https://b.mozilla.org/path/</code></p>
+
+ <p><code>ws://ws.mozilla.org/</code></p>
+
+ <p><code>wss://secure.mozilla.org/something</code></p>
+ </td>
+ <td>
+ <p><code>ftp://mozilla.org/</code><br>
+ (マッチしないスキーム)</p>
+
+ <p><code>http://mozilla.com/</code><br>
+ (マッチしないホスト)</p>
+
+ <p><code>http://firefox.org/</code><br>
+ (マッチしないホスト)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>*://mozilla.org/</code></p>
+
+ <p>HTTP や HTTPS や WebSocket の"mozilla.org/"のホストのみマッチ</p>
+ </td>
+ <td>
+ <p><code>http://mozilla.org/</code></p>
+
+ <p><code>https://mozilla.org/</code></p>
+
+ <p><code>ws://mozilla.org/</code></p>
+
+ <p><code>wss://mozilla.org/</code></p>
+ </td>
+ <td>
+ <p><code>ftp://mozilla.org/</code><br>
+ (マッチしないスキーム)</p>
+
+ <p><code>http://a.mozilla.org/</code><br>
+ (マッチしないホスト)</p>
+
+ <p><code>http://mozilla.org/a</code><br>
+ (マッチしないパス)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>ftp://mozilla.org/</code></p>
+
+ <p>"ftp://mozilla.org/"のみマッチ</p>
+ </td>
+ <td><code>ftp://mozilla.org</code></td>
+ <td>
+ <p><code>http://mozilla.org/</code><br>
+ (マッチしないスキーム)</p>
+
+ <p><code>ftp://sub.mozilla.org/</code><br>
+ (マッチしないホスト)</p>
+
+ <p><code>ftp://mozilla.org/path</code><br>
+ (マッチしないパス)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>https://*/path</code></p>
+
+ <p> HTTPS URL で path が "path"のホストのみマッチ</p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/path</code></p>
+
+ <p><code>https://a.mozilla.org/path</code></p>
+
+ <p><code>https://something.com/path</code></p>
+ </td>
+ <td>
+ <p><code>http://mozilla.org/path</code><br>
+ (マッチしないスキーム)</p>
+
+ <p><code>https://mozilla.org/path/</code><br>
+ (マッチしないパス)</p>
+
+ <p><code>https://mozilla.org/a</code><br>
+ (マッチしないパス)</p>
+
+ <p><code>https://mozilla.org/</code><br>
+ (マッチしないパス)</p>
+
+ <p><code>https://mozilla.org/path?foo=1</code><br>
+ (URL クエリーストリングによりマッチしないパス)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>https://*/path/</code></p>
+
+ <p>あらゆるホスト上の HTTPS URL で、パスが "path/" で URL にクエリーストリングのないものにマッチ</p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/path/</code></p>
+
+ <p><code>https://a.mozilla.org/path/</code></p>
+
+ <p><code>https://something.com/path</code>/</p>
+ </td>
+ <td>
+ <p><code>http://mozilla.org/path/</code><br>
+ (マッチしないスキーム)</p>
+
+ <p><code>https://mozilla.org/path</code><br>
+ (マッチしないパス)</p>
+
+ <p><code>https://mozilla.org/a</code><br>
+ (マッチしないパス)</p>
+
+ <p><code>https://mozilla.org/</code><br>
+ (マッチしないパス)</p>
+
+ <p><code>https://mozilla.org/path?foo=1</code><br>
+ (URL クエリーストリングによりマッチしないパス)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>https://mozilla.org/*</code></p>
+
+ <p>HTTPS URL のみにマッチで、"mozilla.org"だけ、パスやクエリーストリングは問わない</p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/</code></p>
+
+ <p><code>https://mozilla.org/path</code></p>
+
+ <p><code>https://mozilla.org/another</code></p>
+
+ <p><code>https://mozilla.org/path/to/doc</code></p>
+
+ <p><code>https://mozilla.org/path/to/doc?foo=1</code></p>
+ </td>
+ <td>
+ <p><code>http://mozilla.org/path</code><br>
+ (マッチしないスキーム)</p>
+
+ <p><code>https://mozilla.com/path</code><br>
+ (マッチしないホスト)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>https://mozilla.org/a/b/c/</code></p>
+
+ <p>この URL 、あるいはフラグメント付きのこのURLにのみマッチ</p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/a/b/c/</code></p>
+
+ <p><code>https://mozilla.org/a/b/c/#section1</code></p>
+ </td>
+ <td>これ以外のすべて</td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>https://mozilla.org/*/b/*/</code></p>
+
+ <p>"mozilla.org"でホストされた HTTPS URL で、パスは中間のどこかに "b" を含むもの。クエリーストリングが / で終了していればそれにもマッチ</p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/a/b/c/</code></p>
+
+ <p><code>https://mozilla.org/d/b/f/</code></p>
+
+ <p><code>https://mozilla.org/a/b/c/d/</code></p>
+
+ <p><code>https://mozilla.org/a/b/c/d/#section1</code></p>
+
+ <p><code>https://mozilla.org/a/b/c/d/?foo=/</code></p>
+
+ <p><code>https://mozilla.org/a?foo=21314&amp;bar=/b/&amp;extra=c/</code></p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/b/*/</code><br>
+ (マッチしないパス)</p>
+
+ <p><code>https://mozilla.org/a/b/</code><br>
+ (マッチしないパス)</p>
+
+ <p><code>https://mozilla.org/a/b/c/d/?foo=bar</code><br>
+ (URL クエリーストリングによりマッチしないパス)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>file:///blah/*</code></p>
+
+ <p>FILE URL でパスが "blah" で始まるもの</p>
+ </td>
+ <td>
+ <p><code>file:///blah/</code></p>
+
+ <p><code>file://blah/bleh</code></p>
+ </td>
+ <td><code>file:///bleh/</code><br>
+ (マッチしないパス)</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Invalid_match_patterns" name="Invalid_match_patterns">無効なマッチパターン</h3>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">無効なパターン</th>
+ <th scope="col">理由</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>resource://path/</code></td>
+ <td>サポートされていないスキーム。</td>
+ </tr>
+ <tr>
+ <td><code>https://mozilla.org</code></td>
+ <td>パスがない。</td>
+ </tr>
+ <tr>
+ <td><code>https://mozilla.*.org/</code></td>
+ <td>"*" はホストの先頭に使用する必要があります。</td>
+ </tr>
+ <tr>
+ <td><code>https://*zilla.org/</code></td>
+ <td>ホスト内の "*" は唯一の文字であるか、"."が続かなければいけません。</td>
+ </tr>
+ <tr>
+ <td><code>http*://mozilla.org/</code></td>
+ <td>
+ <p>スキーム内の "*" は唯一の文字であるべきです。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>*://*</code></td>
+ <td>パスが空: "<code>*://*/*</code>"であるべき。</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>file://*</code></td>
+ <td>パスが空: "<code>file:///*</code>"であるべき 。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
+
+<h3 id="scheme_2" name="scheme_2">scheme</h3>
+
+
+
+<p>{{Compat("webextensions.match_patterns.scheme",10)}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/modify_a_web_page/index.html b/files/ja/mozilla/add-ons/webextensions/modify_a_web_page/index.html
new file mode 100644
index 0000000000..68ec4b3ce8
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/modify_a_web_page/index.html
@@ -0,0 +1,254 @@
+---
+title: ウェブページを変更する
+slug: Mozilla/Add-ons/WebExtensions/Modify_a_web_page
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Modify_a_web_page
+---
+<div>{{AddonSidebar}}</div>
+
+<p>拡張機能の一般的な事例の1つはウェブページを変更することです。例えば、ページのスタイルを変更、特定の DOM ノードを隠す、別の DOM ノードをページに挿入する、といいでしょう。</p>
+
+<p>WebExtensions API での実現方法は2つあります:</p>
+
+<ul>
+ <li><strong>手動で定義する: </strong><span lang="ja"><span>URL に一致するパターンを定義し、その URL が一致するページにスクリプトを読み込まれるようにします。</span></span></li>
+ <li><strong>自動で行う: </strong>JavaScript API を使い、特定のタブでホストされているページにスクリプトを読み込まれるようにします。</li>
+</ul>
+
+<p>どちらの方法のスクリプトも<em>コンテンツスクリプト</em>と呼ばれ、拡張機能を構成する他のスクリプトとは異なります:</p>
+
+<ul>
+ <li>WebExtension API の一部のサブセットのみにアクセスできます。</li>
+ <li>読み込まれたウェブページに直接アクセスできます。</li>
+ <li>messaging API を使い、拡張機能の残りの部分と対話できます。</li>
+</ul>
+
+<p>この記事ではスクリプトを読み込むそれぞれの方法について説明します。</p>
+
+<h2 id="Modifying_pages_that_match_a_URL_pattern" name="Modifying_pages_that_match_a_URL_pattern">URL パターンにマッチしたページを変更する</h2>
+
+<p>まず始めに、"modify-page" という新しいディレクトリーを作成します。このディレクトリーで "manifest.json" というファイルを作成し、以下のように記述します。</p>
+
+<pre class="brush: json">{
+
+ "manifest_version": 2,
+ "name": "modify-page",
+ "version": "1.0",
+
+ "content_scripts": [
+ {
+ "matches": ["https://developer.mozilla.org/*"],
+ "js": ["page-eater.js"]
+ }
+ ]
+
+}</pre>
+
+<p><code><a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> キーは URL パターンと一致するページにスクリプトを読み込む方法です。この場合、<code>content_scripts</code> は<a href="https://developer.mozilla.org/"> https://developer.mozilla.org/</a> 以下のすべてのページで "page-eater.js" というスクリプトをロードするようにブラウザーに指示します。</p>
+
+<div class="note">
+<p><code>content_scripts</code> の <code>"js"</code> プロパティ は配列なので、マッチしているページに複数のスクリプトを挿入できます。<span id="result_box" lang="ja"><span>これを行うと、ページによってロードされるいくつかのスクリプトと同じように、ページは同じスコープを共有し、配列にリストされている順序でロードされます。</span></span></p>
+</div>
+
+<div class="note">
+<p><code>content_scripts</code> キーでは <code>"css"</code> プロパティで CSS スタイルシートを挿入することもできます。</p>
+</div>
+
+<p>次に、"page-eater.js" というファイルを "modify-page" ディレクトリー内に作り、以下のように記述します。</p>
+
+<pre class="brush: js">document.body.textContent = "";
+
+var header = document.createElement('h1');
+header.textContent = "This page has been eaten";
+document.body.appendChild(header);</pre>
+
+<p><a href="/ja/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">拡張機能をインストール</a> して <a href="https://developer.mozilla.org/">https://developer.mozilla.org/</a> を訪れてみましょう。</p>
+
+<p>{{EmbedYouTube("lxf2Tkg6U1M")}}</p>
+
+<div class="note">
+<p><span id="result_box" lang="ja"><span>このビデオでは </span></span><a href="https://addons.mozilla.org/en-US/firefox/">addons.mozilla.org</a> <span lang="ja"><span>で動作するコンテンツスクリプトを示していますが、現在このサイトではコンテンツスクリプトはブロックされています。</span></span></p>
+</div>
+
+<h2 id="Modifying_pages_programmatically" name="Modifying_pages_programmatically">自動でページを変更する</h2>
+
+<p>ユーザーがあなたに質問してきたとき、まだページを処理している場合どうしたらいいですか? <span id="result_box" lang="ja"><span>この例を更新して、ユーザーがコンテキストメニュー項目をクリックしたときにコンテンツスクリプトを挿入しましょう。</span></span></p>
+
+<p>始めに、"manifest.json" を以下のように更新してください。</p>
+
+<pre class="brush: json">{
+
+ "manifest_version": 2,
+ "name": "modify-page",
+ "version": "1.0",
+
+ "permissions": [
+ "activeTab",
+ "contextMenus"
+ ],
+
+ "background": {
+ "scripts": ["background.js"]
+ }
+
+}</pre>
+
+<p>これは <code>content_scripts</code> キーを削除し、新たに 2 つのキーを追加しました。</p>
+
+<ul>
+ <li><code><a href="/ja/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code>: スクリプトをページに挿入するには、変更するページへの権限が必要です。<a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission"><code>activeTab</code> パーミッション</a>は現在アクティブなタブへの一時的な権限を取得する方法です。コンテキストメニューに項目を追加するには <code>contextMenus</code> パーミッションも必要となります。</li>
+ <li><code><a href="/ja/Add-ons/WebExtensions/manifest.json/background">background</a></code>: <a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">"バックグラウンドスクリプト"</a> という "background.js" を永続的に読み込み<span id="result_box" lang="ja"><span>、ここでコンテキストメニューを設定し、コンテンツスクリプトを挿入します。</span></span></li>
+</ul>
+
+<p>このファイルを作りましょう。"background.js" というファイルを "modify-page" ディレクトリー内に作り以下のように記述します。</p>
+
+<pre class="brush: js">browser.contextMenus.create({
+ id: "eat-page",
+ title: "Eat this page"
+});
+
+browser.contextMenus.onClicked.addListener(function(info, tab) {
+ if (info.menuItemId == "eat-page") {
+ browser.tabs.executeScript({
+ file: "page-eater.js"
+ });
+ }
+});
+</pre>
+
+<p>このスクリプトでは <a href="/ja/Add-ons/WebExtensions/API/ContextMenus/create">context menu item</a> を作成し、特定の id とタイトルを指定します。(コンテキストメニューに表示するテキスト) <span id="result_box" lang="ja"><span>次に、イベントリスナーを設定して、ユーザーがコンテキストメニュー項目をクリックしたときに、それが </span></span><code>eat-page</code><span lang="ja"><span> 項目であるかどうかをチェックします。</span></span>それが正しければ、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">tabs.executeScript()</a></code> API を利用して、"page-eater.js" を挿入します。<span id="result_box" lang="ja"><span>この API はオプションでタブ ID を引数として取ります、よってタブ ID は省略されています。つまり、スクリプトは現在アクティブなタブに挿入されています。</span></span></p>
+
+<p>この時点で拡張機能は以下のようになっています。</p>
+
+<pre class="line-numbers language-html"><code class="language-html">modify-page/
+ background.js
+ manifest.json
+ page-eater.js</code></pre>
+
+<p><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Temporary_Installation_in_Firefox#Reloading_a_temporary_add-on">拡張機能を再読み込み</a>して、ページを開きます (任意のページ)  コンテキストメニューを有効化し、"Eat this page" を選択します。</p>
+
+<p>{{EmbedYouTube("zX4Bcv8VctA")}}</p>
+
+<div class="note">
+<p><span id="result_box" lang="ja"><span>このビデオでは </span></span><a href="https://addons.mozilla.org/en-US/firefox/">addons.mozilla.org</a> <span lang="ja"><span>で動作するコンテンツスクリプトを示していますが、現在このサイトではコンテンツスクリプトはブロックされています。</span></span></p>
+</div>
+
+<h2 id="Messaging" name="Messaging">メッセージ</h2>
+
+<p>コンテンツスクリプトとバックグラウンドスクリプトはお互いの状態に直接アクセスすることはできません。しかし、メッセージを送ることによる対話をすることができます。<span id="result_box" lang="ja"><span>一方のエンドはメッセージリスナーを設定し、もう一方のエンドはメッセージを送信します。</span> <span>次の表は、各側面に関連する API をまとめたものです。</span></span></p>
+
+<table class=" fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="row"></th>
+ <th scope="col">コンテンツスクリプト内</th>
+ <th scope="col">バックグラウンドスクリプト内</th>
+ </tr>
+ <tr>
+ <th scope="row">メッセージ送信</th>
+ <td><code><a href="/ja/Add-ons/WebExtensions/API/runtime#sendMessage()">browser.runtime.sendMessage()</a></code></td>
+ <td><code><a href="/ja/Add-ons/WebExtensions/API/Tabs/sendMessage">browser.tabs.sendMessage()</a></code></td>
+ </tr>
+ <tr>
+ <th scope="row">メッセージ受信</th>
+ <td><code><a href="/ja/Add-ons/WebExtensions/API/runtime/onMessage">browser.runtime.onMessage</a></code></td>
+ <td><code><a href="/ja/Add-ons/WebExtensions/API/runtime#onMessage">browser.runtime.onMessage</a></code></td>
+ </tr>
+ </thead>
+</table>
+
+<div class="blockIndicator note">
+<p>このワンオフメッセージを送る通信メソッドに加えて、<a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#Connection-based_messaging">メッセージ交換するコネクションベースの方法</a>も使えます。これらのオプションを選択するアドバイスは、<a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#Choosing_between_one-off_messages_and_connection-based_messaging">ワンオフメッセージとコネクションベースのメッセージのいずれかを選択する</a>を見てください。</p>
+</div>
+
+<p><span id="result_box" lang="ja"><span>例を更新して、バックグラウンドスクリプトからメッセージを送信する方法を示します。</span></span></p>
+
+<p>始めに "background.js" を編集して、次のようにします。</p>
+
+<pre class="brush: js">browser.contextMenus.create({
+ id: "eat-page",
+ title: "Eat this page"
+});
+
+function messageTab(tabs) {
+ browser.tabs.sendMessage(tabs[0].id, {
+ replacement: "Message from the extension!"
+ });
+}
+
+function onExecuted(result) {
+    var querying = browser.tabs.query({
+        active: true,
+        currentWindow: true
+    });
+    querying.then(messageTab);
+}
+
+browser.contextMenus.onClicked.addListener(function(info, tab) {
+ if (info.menuItemId == "eat-page") {
+ let executing = browser.tabs.executeScript({
+ file: "page-eater.js"
+ });
+ executing.then(onExecuted);
+ }
+});
+</pre>
+
+<p>次に、"page-eater.js" を挿入し、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">tabs.query()</a></code> を使用し、現在アクティブなタブを取得し、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage">tabs.sendMessage()</a></code> を使用し、<span id="result_box" lang="ja"><span>そのタブにロードされたコンテンツスクリプトにメッセージを送信します。</span></span> メッセージにはペイロード <code>{replacement: "Message from the extension!"}</code> があります。</p>
+
+<p>次に "page-eater.js" を次のように更新します。</p>
+
+<pre class="brush: js">function eatPageReceiver(request, sender, sendResponse) {
+ document.body.textContent = "";
+ var header = document.createElement('h1');
+ header.textContent = request.replacement;
+ document.body.appendChild(header);
+}
+browser.runtime.onMessage.addListener(eatPageReceiver);
+</pre>
+
+<p><span id="result_box" lang="ja"><span>今すぐページを処理する代わりに、コンテンツスクリプトは </span></span><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage">runtime.onMessage</a></code><span lang="ja"><span>を使ってメッセージを取得します。</span> <span>メッセージが到着すると、コンテンツスクリプトは前と同じコードを実行しますが、置換テキストは </span></span><code>request.replacement</code><span lang="ja"><span> から取得されます。</span></span></p>
+
+<p><code><a href="/ja/Add-ons/WebExtensions/API/tabs/executeScript">tabs.executeScript()</a></code><span lang="ja"><span> は非同期関数であり、リスナーが "page-eater.js" に追加された後にのみメッセージを送信するために、"page-eater.js" を実行した後に呼び出される </span></span><code>onExecuted</code><span lang="ja"><span> を使用します。</span></span></p>
+
+<div class="note">
+<p>Ctrl+Shift+J (Mac では Cmd+Shift+J) を押します。もしくは <code>web-ext run --bc</code> で <a href="/ja/docs/Tools/Browser_Console">Browser Console</a> を開きバックグラウンドスクリプトの <code>console.log</code> を見ます。<span id="result_box" lang="ja"><span>または、</span></span> <a href="/ja/Add-ons/Add-on_Debugger">Add-on Debugger</a>  <span lang="ja"><span>を使用して、ブレークポイントを設定することもできます。</span> <span>現在、</span></span><a href="https://github.com/mozilla/web-ext/issues/759">web-ext から 直接 Add-on Debugger を起動する</a> 方法<span lang="ja"><span>はありません。</span></span></p>
+</div>
+
+<p><span id="result_box" lang="ja"><span>コンテンツスクリプトからバックグラウンドページにメッセージを戻したい場合は、</span></span> <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage">runtime.sendMessage()</a></code><span lang="ja"><span> の代わりに </span></span><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage">tabs.sendMessage()</a></code><span lang="ja"><span> を使用します</span></span>。</p>
+
+<p>例:</p>
+
+<pre class="brush: js">browser.runtime.sendMessage({
+ title: "from page-eater.js"
+});</pre>
+
+<div class="note"><span id="result_box" lang="ja"><span>これらの例はすべて JavaScript を注入します。</span><span> </span></span><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/insertCSS">tabs.insertCSS()</a></code> <span lang="ja"><span> 関数を使用してプログラムで CSS を挿入することもできます。</span></span></div>
+
+<h2 id="Learn_more" name="Learn_more">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">Content scripts</a> ガイド</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> manifest キー</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> manifest キー</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">tabs.executeScript()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/insertCSS">tabs.insertCSS()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage">tabs.sendMessage()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage">runtime.sendMessage()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage">runtime.onMessage</a></code></li>
+ <li><code>content_scripts</code> を使用した例:
+ <ul>
+ <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/borderify">borderify</a></li>
+ <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/emoji-substitution" rel="noopener">emoji-substitution</a></li>
+ <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a></li>
+ <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/page-to-extension-messaging">page-to-extension-messaging</a></li>
+ </ul>
+ </li>
+ <li><code>tabs.executeScript()</code> を使用した例:
+ <ul>
+ <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/beastify">beastify</a></li>
+ <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/context-menu-copy-link-with-types">context-menu-copy-link-with-types</a></li>
+ </ul>
+ </li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/native_manifests/index.html b/files/ja/mozilla/add-ons/webextensions/native_manifests/index.html
new file mode 100644
index 0000000000..079e34adc0
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/native_manifests/index.html
@@ -0,0 +1,315 @@
+---
+title: ネイティブマニフェスト
+slug: Mozilla/Add-ons/WebExtensions/Native_manifests
+tags:
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Native_manifests
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ネイティブマニフェストは特別な形式の JSON ファイルで、拡張機能のインストールプロセスの範囲外の方法でユーザーのコンピューターに配布されます。例えば、ネイティブマニフェストは端末の管理者やネイティブアプリケーションのインストーラーによって配布されます。</p>
+
+<p>3つの異なる種類のネイティブマニフェストがあります:</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 40%;"><a href="#Native_messaging_manifests">Native messaging マニフェスト</a></td>
+ <td><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Native_messaging">native messaging</a> と呼ぶ機能を可能にします、ここでは拡張機能は端末にインストールされたネイティブアプリとやりとりできます。</td>
+ </tr>
+ <tr>
+ <td><a href="#Managed_storage_manifests">Managed storage マニフェスト</a></td>
+ <td>
+ <p>{{WebExtAPIRef("storage.managed")}} API  使って拡張機能がアクセスする読み込み専用データを定義します。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><a href="#PKCS_11_manifests">PKCS #11 マニフェスト</a></td>
+ <td>
+ <p>拡張機能が {{WebExtAPIRef("pkcs11")}} API を使って PKCS #11 セキュリティモジュールを列挙して、Firefox にインストールできるようにします。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>すべてのネイティブマニフェスト用に、ブラウザーがマニフェストを見つけられるように調整する必要があります。 <a href="#Manifest_location">マニフェストの場所</a> のセクションでこのルールを述べています。</p>
+
+<h2 id="Native_messaging_manifests" name="Native_messaging_manifests">Native messaging マニフェスト</h2>
+
+<p>native messaging マニフェストは以下のプロパティを含む単一の JSON オブジェクトです:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">種類</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>name</code></td>
+ <td>String</td>
+ <td>
+ <p>ネイティブアプリケーションの名前です。</p>
+
+ <p>この名前は拡張機能の {{WebExtAPIRef("runtime.connectNative()")}} か {{WebExtAPIRef("runtime.sendNativeMessage()")}} に渡される名前と一致している必要があります。</p>
+
+ <p>OS X と Linux では、native messaging マニフェストの(.json 拡張子を除いた)ファイル名とも一致していなければなりません。</p>
+
+ <p>Windows では、native messaging マニフェストの場所を記した作成済みレジストリキーの名前と一致している必要があります。</p>
+
+ <p>次の正規表現にマッチする必要があります: "^\w+(\.\w+)*$" つまり、名前には(大文字か小文字の)英数字とアンダースコア、ドットのみ含めることができます。最初または最後の文字にドットを使用することはできず、ドットを2つ以上連続させることもできません。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>description</code></td>
+ <td>String</td>
+ <td>
+ <p>ネイティブアプリケーションの説明です。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>path</code></td>
+ <td>String</td>
+ <td>
+ <p>ネイティブアプリケーションのパスです。</p>
+
+ <p>Windows では、マニフェスト自身からの相対パスを指定することもできます。OS X や Linux では絶対パスでなければなりません。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>type</code></td>
+ <td>String</td>
+ <td>
+ <p>拡張機能にアプリケーションが接続するために使用する方法を記述します。</p>
+
+ <p>現在のところ、"stdio" のみが指定可能です。これはアプリケーションが標準入力 (stdin) を介してメッセージを受信し、標準出力 (stdout) を使用してメッセージを送信することを示します。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>allowed_extensions</code></td>
+ <td>Array of String</td>
+ <td>
+ <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">Add-on ID</a> の配列です。配列中のそれぞれの値はこのネイティブアプリケーションとの通信が許可されている拡張機能を表します。</p>
+
+ <p>つまり、作成する拡張機能の manifest.json ファイルに <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/applications">applications</a> キーを含めたくなるものと思われるため、開発中に明示的なIDを設定しておくと良いでしょう。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>例として、"ping_pong" ネイティブアプリケーションのマニフェストを以下に示します:</p>
+
+<pre class="brush: json">{
+ "name": "ping_pong",
+ "description": "Example host for native messaging",
+ "path": "/path/to/native-messaging/app/ping_pong.py",
+ "type": "stdio",
+ "allowed_extensions": [ "ping_pong@example.org" ]
+}</pre>
+
+<p>この設定では、"ping_pong@example.org" という ID の拡張機能が "ping_pong" という名前を適切な {{WebExtAPIRef("runtime")}} API 関数に渡すことで接続を許可されます。 アプリケーション自体は "/path/to/native-messaging/app/ping_pong.py" にあります。</p>
+
+<h2 id="Managed_storage_manifests" name="Managed_storage_manifests">Managed storage マニフェスト</h2>
+
+<p>managed storage マニフェストには次のプロパティを含む単一の JSON オブジェクトです:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">種類</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>name</code></td>
+ <td>String</td>
+ <td>
+ <p>ストレージにアクセスできる拡張機能の ID で、拡張機能の <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">applications</a> キーで指定したのと同じものです。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>description</code></td>
+ <td>String</td>
+ <td>人間が読める説明で、Firefox には無視されます。</td>
+ </tr>
+ <tr>
+ <td><code>type</code></td>
+ <td>String</td>
+ <td>
+ <p>"storage" でなければなりません。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>data</code></td>
+ <td>Object</td>
+ <td>
+ <p>JSON オブジェクトで、その中にあらゆる有効な JSON 値(文字列、数値、真偽値、配列、オブジェクトを含む)が入ります。これは <code>browser.storage.managed</code> ストレージ領域内のデータになります。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>例えば:</p>
+
+<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span>
+ <span class="key token">"name":</span> <span class="string token">"favourite-colour-examples@mozilla.org"</span><span class="punctuation token">,</span>
+ <span class="key token">"description":</span> <span class="string token">"ignored"</span><span class="punctuation token">,</span>
+ <span class="key token">"type":</span> <span class="string token">"storage"</span><span class="punctuation token">,</span>
+ <span class="key token">"data":</span>
+ <span class="punctuation token">{</span>
+ <span class="key token">"colour":</span> <span class="string token">"management thinks it should be blue!"</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>この JSON マニフェストでは、"favourite-colour-examples@mozilla.org" 拡張機能は次のようなコードを使ってデータにアクセスできます:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">var</span> storageItem <span class="operator token">=</span> browser<span class="punctuation token">.</span>storage<span class="punctuation token">.</span>managed<span class="punctuation token">.</span><span class="keyword token">get</span><span class="punctuation token">(</span><span class="string token">'colour'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+storageItem<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="punctuation token">(</span>res<span class="punctuation token">)</span> <span class="operator token">=</span><span class="operator token">&gt;</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="template-string token"><span class="string token">`Managed colour is: </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>res<span class="punctuation token">.</span>colour<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token">`</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<h2 id="PKCS_11_manifests" name="PKCS_11_manifests">PKCS #11 マニフェスト</h2>
+
+<p>PKCS #11 マニフェストは以下のプロパティを持った JSON オブジェクトを含むファイルです:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">名前</th>
+ <th scope="col">種類</th>
+ <th scope="col">説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>name</code></td>
+ <td>String</td>
+ <td>
+ <p>PKCS #11 モジュールの名前です。</p>
+
+ <p><code>pkcs11</code> API で使われている名前と一致している必要があります。</p>
+
+ <p>OS X と Linux では、マニフェストの (拡張子を除いた) ファイル名とも一致していなければなりません。</p>
+
+ <p>Windows では、マニフェストの場所を記した作成済みレジストリキーの名前と一致している必要があります。</p>
+
+ <p>次の正規表現にマッチする必要があります: "^\w+(\.\w+)*$" つまり、名前には(大文字か小文字の)英数字とアンダースコア、ドットのみ含めることができます。最初または最後の文字にドットを使用することはできず、ドットを2つ以上連続させることもできません。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>description</code></td>
+ <td>String</td>
+ <td>
+ <p>モジュールの説明です。</p>
+
+ <p>ブラウザー UI (例えば、Firefox の "Security Devices" ダイアログ) で表示される、読みやすい名前を付けるのに使われます。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>path</code></td>
+ <td>String</td>
+ <td>
+ <p>モジュールのパスです。</p>
+
+ <p>Windows では、マニフェスト自身からの相対パスを指定することもできます。OS X や Linux では絶対パスでなければなりません。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>type</code></td>
+ <td>String</td>
+ <td>"pkcs11" でなければなりません。</td>
+ </tr>
+ <tr>
+ <td><code>allowed_extensions</code></td>
+ <td>Array of String</td>
+ <td>
+ <p><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">Add-on ID</a> の配列です。配列中のそれぞれの値はモジュールとの通信が許可されている拡張機能を表します。</p>
+
+ <p>つまり、作成する拡張機能の manifest.json ファイルに <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">applications</a> キーを含めたくなるものと思われるため、開発中に明示的な ID を設定しておくと良いでしょう。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>例えば:</p>
+
+<pre class="brush: json line-numbers language-json">{
+  "name": "my_module",
+  "description": "My test module",
+  "type": "pkcs11",
+  "path": "/path/to/libpkcs11testmodule.dylib",
+  "allowed_extensions": ["my-extension@mozilla.org"]
+}</pre>
+
+<p>この JSON マニフェストでは、"my_module.json" として保存すれば、"my-extension@mozilla.org" 拡張機能はこのようなコードから "/path/to/libpkcs11testmodule.dylib" のセキュリティーモジュールをインストールすることもできます:</p>
+
+<pre class="brush: js line-numbers language-js">browser.pkcs11.installModule("my_module");</pre>
+
+<h2 id="Manifest_location" name="Manifest_location">マニフェストの場所</h2>
+
+<p>Linux と Mac OS X では、マニフェストを特定の場所に保管する必要があります。Windows では、マニフェストの場所を指定するレジストリキーを作成する必要があります。</p>
+
+<p>詳しいルールはどのマニフェストの種類でも同じですが、例外として最後から2番目のパスのコンポーネントはマニフェストの種類を特定します。下記の例では、3種類のそれぞれの形を示しています。すべての例において、<em>&lt;name&gt;</em> はマニフェスト内の <code>name</code> プロパティの値です。</p>
+
+<h3 id="Windows" name="Windows">Windows</h3>
+
+<p>グローバルな設定としては、以下の名前のレジストリキーを作成します:</p>
+
+<pre>HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\NativeMessagingHosts\&lt;name&gt;
+HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\ManagedStorage\&lt;name&gt;
+HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\PKCS11Modules\&lt;name&gt;</pre>
+
+<p>このキーにマニフェストへのパスを示す単一の既定の値を設定します。</p>
+
+<p>Firefox バージョン 64 以降では、32ビットレジストリ view (<a href="https://en.wikipedia.org/wiki/WoW64#Registry_and_file_system">Wow6432Node) </a>がこれらのキーの中でまずチェックされ、"native" レジストリ view が続いてチェックされます。いずれの view にしてもアプリケーションにふさわしいレジストリを使用してください。</p>
+
+<p><em>Firefox バージョン 63 以前では、もし32ビットのアプリケーションであっても、このキーは <a href="https://en.wikipedia.org/wiki/WoW64#Registry_and_file_system">Wow6432Node</a> 下に作成しないで下さい。以前のバージョンのブラウザは常に32-bit エミュレーションではなくレジストリの "native" view 下のキーを探します。確実に "native" view にキーを作成するために、KEY_WOW64_64KEY または KEY_WOW64_32KEY フラグを RegCreateKeyEx に渡すことができます。<a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa384129(v=vs.85).aspx">Accessing an Alternate Registry View</a> を参照して下さい。</em></p>
+
+<p>ユーザごとの設定としては、以下の名前のレジストリキーを作成します:</p>
+
+<pre>HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\&lt;name&gt;
+HKEY_CURRENT_USER\SOFTWARE\Mozilla\ManagedStorage\&lt;name&gt;
+HKEY_CURRENT_USER\SOFTWARE\Mozilla\PKCS11Modules\&lt;name&gt;</pre>
+
+<p>このキーにマニフェストへのパスを示す単一の既定の値を設定します。</p>
+
+<h3 id="Mac_OS_X" name="Mac_OS_X">Mac OS X</h3>
+
+<p>グローバルな設定としては、マニフェストを以下に配置します:</p>
+
+<pre>/Library/Application Support/Mozilla/NativeMessagingHosts/&lt;name&gt;.json
+/Library/Application Support/Mozilla/ManagedStorage/&lt;name&gt;.json
+/Library/Application Support/Mozilla/PKCS11Modules/&lt;name&gt;.json</pre>
+
+<p>個人ごとの設定としては、マニフェストを以下に配置します:</p>
+
+<pre>~/Library/Application Support/Mozilla/NativeMessagingHosts/&lt;name&gt;.json
+~/Library/Application Support/Mozilla/ManagedStorage/&lt;name&gt;.json
+~/Library/Application Support/Mozilla/PKCS11Modules/&lt;name&gt;.json
+</pre>
+
+<h3 id="Linux" name="Linux">Linux</h3>
+
+<p>グローバルな設定としては、マニフェストを以下のいずれかに配置します:</p>
+
+<pre>/usr/lib/mozilla/native-messaging-hosts/&lt;name&gt;.json
+/usr/lib/mozilla/managed-storage/&lt;name&gt;.json
+/usr/lib/mozilla/pkcs11-modules/&lt;name&gt;.json
+</pre>
+
+<p>あるいは:</p>
+
+<pre>/usr/lib64/mozilla/native-messaging-hosts/&lt;name&gt;.json
+/usr/lib64/mozilla/managed-storage/&lt;name&gt;.json
+/usr/lib64/mozilla/pkcs11-modules/&lt;name&gt;.json</pre>
+
+<p>個人ごとの設定としては、マニフェストを以下に配置します:</p>
+
+<pre>~/.mozilla/native-messaging-hosts/&lt;name&gt;.json
+~/.mozilla/managed-storage/&lt;name&gt;.json
+~/.mozilla/pkcs11-modules/&lt;name&gt;.json</pre>
diff --git a/files/ja/mozilla/add-ons/webextensions/native_messaging/index.html b/files/ja/mozilla/add-ons/webextensions/native_messaging/index.html
new file mode 100644
index 0000000000..e9a5ca39bc
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/native_messaging/index.html
@@ -0,0 +1,405 @@
+---
+title: Native messaging
+slug: Mozilla/Add-ons/WebExtensions/Native_messaging
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Native_messaging
+---
+<div>{{AddonSidebar}}</div>
+
+<p>Native messaging はユーザーのコンピューターにインストールされたアプリケーションと拡張機能との間のメッセージ交換を可能にします。 Native messaging を利用すれば、ネイティブアプリケーションが Web を介してアクセスできなくても拡張機能にサービスを提供できます。典型的な利用例としてはパスワードマネージャーが挙げられます。ネイティブアプリケーションはパスワードの暗号化と保管を行い、拡張機能と通信して Web フォームに入力を行うといったことが可能です。さらに、Native messaging を用いることで、一部のハードウェア等の WebExtension API ではアクセスできないリソースに対してアドオンからアクセスできるようになります。</p>
+
+<p>対象となるネイティブアプリケーションは、ブラウザーを使用してインストールや管理を行うわけではありません。OS のインストール機構を使ってインストールします。ネイティブアプリケーションそのものに加えて、「ホストマニフェスト」または「アプリマニフェスト」と呼ばれる JSON ファイルを用意しなければなりません。アプリマニフェストファイルにはブラウザーからネイティブアプリケーションにアクセスするための方法を記述します。</p>
+
+<p>Native messaging を利用する拡張機能は manifest.json の中で "nativeMessaging" <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions">permission</a> を要求する必要があります。反対に、ネイティブアプリケーション側ではアプリマニフェストの "allowed_extensions" フィールドに拡張機能の ID を含めることで permission を認める必要があります。</p>
+
+<p>それで拡張機能は{{WebExtAPIRef("runtime")}} API の関数セットを用いてネイティブアプリケーションと JSON メッセージを交換することができます。ネイティブアプリケーション側では標準入力 (stdin) を介してメッセージを受信し、標準出力 (stdout) を介してメッセージを送信します。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/13833/native-messaging.png" style="display: block; height: 548px; margin-left: auto; margin-right: auto; width: 672px;"></p>
+
+<p>Native messaging のサポートは Chrome とほぼ互換性がありますが、主に 2 つの違いがあります。</p>
+
+<ul>
+ <li>アプリマニフェストには <code>allowed_extensions</code> にアプリの ID の配列を記述します。 Chrome では <code>allowed_origins</code> に "chrome-extension" URL の配列を記述します。</li>
+ <li>アプリマニフェストが Chrome とは別の場所に保管されます。</li>
+</ul>
+
+<p>GitHub の "webextensions-examples" リポジトリの <a href="https://github.com/mdn/webextensions-examples/tree/master/native-messaging">"native-messaging" ディレクトリー</a>に完全な例があります。この記事におけるサンプルコードの大半は、この例から直接持ち込んでいます。</p>
+
+<h2 id="Setup" name="Setup">セットアップ</h2>
+
+<h3 id="Add-on_manifest" name="Add-on_manifest">拡張機能の manifest</h3>
+
+<p>もし拡張機能をネイティブアプリケーションと通信させたい場合、</p>
+
+<ul>
+ <li>"nativeMessaging" <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions">permission</a> を <a href="/ja/Add-ons/WebExtensions/manifest.json">manifest.json</a> ファイルに設定する必要があります</li>
+ <li><a href="/ja/Add-ons/WebExtensions/manifest.json/applications">applications</a> manifest キーを使用してアドオン ID を明示的に設定すべきです (これはアプリマニフェストが、そのアプリケーションへのアクセスが許可されている拡張機能かどうかを識別するために、ID を利用するためです)</li>
+</ul>
+
+<p>以下に manifest.json の例を示します。</p>
+
+<pre class="brush: json">{
+
+ "description": "Native messaging example add-on",
+ "manifest_version": 2,
+ "name": "Native messaging example",
+ "version": "1.0",
+ "icons": {
+ "48": "icons/message.svg"
+ },
+
+ "applications": {
+ "gecko": {
+ "id": "ping_pong@example.org",
+ "strict_min_version": "50.0"
+ }
+ },
+
+ "background": {
+ "scripts": ["background.js"]
+ },
+
+ "browser_action": {
+ "default_icon": "icons/message.svg"
+ },
+
+ "permissions": ["nativeMessaging"]
+
+}</pre>
+
+<h3 id="App_manifest" name="App_manifest">App manifest</h3>
+
+<p>アプリマニフェストに、ブラウザーがネイティブアプリケーションに接続する方法を記述します。</p>
+
+<p>アプリマニフェストファイルはネイティブアプリケーションと一緒にインストールする必要があります。ブラウザーはアプリマニフェストファイルを読み込み、検証を行いますが、インストールや管理は行いません。したがって、app manifest ファイルがインストール・アップデートされた時期や方法についてのセキュリティモデルは、WebExtension を使う拡張機能に対してのものというよりはネイティブアプリケーションに対してのものです。</p>
+
+<p>native アプリマニフェストの文法と場所については、<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Native_manifests">Native manifests</a> を見てください。</p>
+
+<p>例として、"ping_pong"ネイティブアプリケーションの manifest を以下に示します。</p>
+
+<pre class="brush: json">{
+ "name": "ping_pong",
+ "description": "Example host for native messaging",
+ "path": "/path/to/native-messaging/app/ping_pong.py",
+ "type": "stdio",
+ "allowed_extensions": [ "ping_pong@example.org" ]
+}</pre>
+
+<p>この設定では、"ping_pong@example.org" という ID の 拡張機能において"ping_pong" という名前を {{WebExtAPIRef("runtime")}} API等に渡すことによる接続が許可されます。 アプリケーション自体は "/path/to/native-messaging/app/ping_pong.py" です。</p>
+
+<div class="note">
+<p><strong>Note for Windows</strong>: 上記の例におけるネイティブアプリケーションは Python スクリプトです。Windows においては、この方法で期待通りに Python スクリプトを実行させることは難しいため、代替案として、.bat ファイルを作成してマニフェストからリンクします。</p>
+
+<pre class="brush: json">{
+ "name": "ping_pong",
+ "description": "Example host for native messaging",
+ "path": "c:\\path\\to\\native-messaging\\app\\ping_pong_win.bat",
+ "type": "stdio",
+ "allowed_extensions": [ "ping_pong@example.org" ]
+}</pre>
+
+<p>バッチファイルから Python スクリプトを起動します。</p>
+
+<pre class="brush: bash line-numbers language-bash"><code class="language-bash">@echo off
+
+python -u "c:\\path\\to\\native-messaging\\app\\ping_pong.py"</code></pre>
+</div>
+
+<h2 id="Exchanging_messages" name="Exchanging_messages">メッセージの交換</h2>
+
+<p>上記のセットアップにより、拡張機能はネイティブアプリケーションと JSON メッセージを交換することができます。</p>
+
+<h3 id="Extension_side" name="Extension_side">拡張機能側</h3>
+
+<p>ネイティブメッセージはコンテンツスクリプトで直接使うことはできません; <a href="https://wiki.developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#Communicating_with_background_scripts">バックグラウンドスクリプトで間接的にやりとりする</a>必要があります。</p>
+
+<p>これを使うには2つのパターンがあります:ネクションベースのメッセージングとコネクションレスメッセージングです。</p>
+
+<h4 id="Connection-based_messaging" name="Connection-based_messaging">コネクションベースのメッセージング</h4>
+
+<p>このパターンでは、 {{WebExtAPIRef("runtime.connectNative()")}} を呼びだし、その時にアプリケーションの名前(アプリマニフェストの "name" プロパティの値)を渡します。既にアプリケーションが起動済みでなかった場合、これによってアプリケーションが起動し、{{WebExtAPIRef("runtime.Port")}} オブジェクトを拡張機能に返します。</p>
+
+<p>ネイティブアプリは起動時に次の 2 つの引数を取ります:</p>
+
+<ul>
+ <li>アプリマニフェストの完全パス</li>
+ <li>(Firefox 55 以降で) 起動元のアドオンの ID (manifest.json の <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">applications</a> キーにて指定)</li>
+</ul>
+
+<div class="note">
+<p>Chrome  では引数の扱いが異なります:</p>
+
+<ul>
+ <li>Linux と Macでは、Chrome は引数を、拡張機能が開始するオリジンを次の形: <code>chrome-extension://[extensionID]</code>で渡します。これによりアプリは拡張機能を識別できます。</li>
+ <li>Windowsでは、Chrome は2つの引数を渡します、最初は拡張機能のオリジンで、2つ目はアプリを開始するChrome ネイティブウィンドウのハンドルです。</li>
+</ul>
+</div>
+
+<p>アプリケーションは 拡張機能が <code>Port.disconnect()</code> を呼び出すか、接続されたページが閉じられるまで実行し続けます。</p>
+
+<p><code>Port</code> を使用してメッセージを送信するためには、<code>postMessage()</code> 関数を呼び出し、 送信する JSON メッセージを渡します。<code>Port</code> を使用してメッセージを受信するためには、<code>onMessage.addListener()</code> 関数を使用してリスナーを追加します。</p>
+
+<p>"ping_pong" アプリケーションとコネクションを確立するバックグラウンドスクリプトの例を示します。アプリケーションからのメッセージを受信し、ユーザーがブラウザーアクションをクリックするたびに "ping" メッセージを送信します。</p>
+
+<pre class="brush: js">/*
+On startup, connect to the "ping_pong" app.
+*/
+var port = browser.runtime.connectNative("ping_pong");
+
+/*
+Listen for messages from the app.
+*/
+port.onMessage.addListener((response) =&gt; {
+ console.log("Received: " + response);
+});
+
+/*
+On a click on the browser action, send the app a message.
+*/
+browser.browserAction.onClicked.addListener(() =&gt; {
+ console.log("Sending: ping");
+ port.postMessage("ping");
+});</pre>
+
+<h4 id="Connectionless_messaging" name="Connectionless_messaging">コネクションレスメッセージング</h4>
+
+<p>このパターンでは、{{WebExtAPIRef("runtime.sendNativeMessage()")}} を呼び、以下を渡します。</p>
+
+<ul>
+ <li>アプリケーションの名前</li>
+ <li>送信する JSON メッセージ</li>
+ <li>コールバック(オプション)</li>
+</ul>
+
+<p>それぞれのメッセージごとに新しいアプリケーションのインスタンスが作成されます。アプリの開始時に次の 2 つの引数が渡されます:</p>
+
+<ul>
+ <li>アプリマニフェストの完全パス</li>
+ <li>(Firefox 55 以降で) 起動元のアドオンの ID (manifest.json の <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">applications</a> キーにて指定)</li>
+</ul>
+
+<p>アプリからの最初のメッセージは <code>sendNativeMessage()</code> 呼び出しの応答として扱われ、コールバックに渡されます。</p>
+
+<p>以下に、先程の例を <code>runtime.sendNativeMessage()</code> を使って書き直したものを示します。</p>
+
+<pre class="brush: js">function onResponse(response) {
+ console.log("Received " + response);
+}
+
+function onError(error) {
+ console.log(`Error: ${error}`);
+}
+
+/*
+On a click on the browser action, send the app a message.
+*/
+browser.browserAction.onClicked.addListener(() =&gt; {
+ console.log("Sending: ping");
+ var sending = browser.runtime.sendNativeMessage(
+ "ping_pong",
+ "ping");
+ sending.then(onResponse, onError);
+});
+</pre>
+
+<h3 id="App_side" name="App_side">アプリ側</h3>
+
+<p>アプリケーション側では、標準入力を用いてメッセージを受信し、標準出力を用いてメッセージを送信します。</p>
+
+<p>各メッセージは JSON でシリアライズされ、UTF-8 でエンコードされ、メッセージ長を表す 32-bit の値がネイティブのバイト順で先頭に付加されます。</p>
+
+<p>アプリケーションからの一つのメッセージの最大サイズは 1MB です。アプリケーションへの一つのメッセージの最大サイズは 4GB です。</p>
+
+<p>次の NodeJS コードですぐにメッセージを送受信できます:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js">#<span class="operator token">!</span><span class="operator token">/</span>usr<span class="operator token">/</span>local<span class="operator token">/</span>bin<span class="operator token">/</span>node
+
+process<span class="punctuation token">.</span>stdin<span class="punctuation token">.</span><span class="function token">on</span><span class="punctuation token">(</span><span class="string token">'readable'</span><span class="punctuation token">,</span> <span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+ <span class="keyword token">var</span> input <span class="operator token">=</span> <span class="punctuation token">[</span><span class="punctuation token">]</span>
+ <span class="keyword token">var</span> chunk
+ <span class="keyword token">while</span> <span class="punctuation token">(</span>chunk <span class="operator token">=</span> process<span class="punctuation token">.</span>stdin<span class="punctuation token">.</span><span class="function token">read</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ input<span class="punctuation token">.</span><span class="function token">push</span><span class="punctuation token">(</span>chunk<span class="punctuation token">)</span>
+ <span class="punctuation token">}</span>
+ input <span class="operator token">=</span> Buffer<span class="punctuation token">.</span><span class="function token">concat</span><span class="punctuation token">(</span>input<span class="punctuation token">)</span>
+
+ <span class="keyword token">var</span> msgLen <span class="operator token">=</span> input<span class="punctuation token">.</span><span class="function token">readUInt32LE</span><span class="punctuation token">(</span><span class="number token">0</span><span class="punctuation token">)</span>
+ <span class="keyword token">var</span> dataLen <span class="operator token">=</span> msgLen <span class="operator token">+</span> <span class="number token">4</span>
+
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>input<span class="punctuation token">.</span>length <span class="operator token">&gt;=</span> dataLen<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">var</span> content <span class="operator token">=</span> input<span class="punctuation token">.</span><span class="function token">slice</span><span class="punctuation token">(</span><span class="number token">4</span><span class="punctuation token">,</span> dataLen<span class="punctuation token">)</span>
+ <span class="keyword token">var</span> json <span class="operator token">=</span> <span class="constant token">JSON</span><span class="punctuation token">.</span><span class="function token">parse</span><span class="punctuation token">(</span>content<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">)</span>
+ <span class="function token">handleMessage</span><span class="punctuation token">(</span>json<span class="punctuation token">)</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span><span class="punctuation token">)</span>
+
+<span class="keyword token">function</span> <span class="function token">sendMessage</span><span class="punctuation token">(</span><span class="parameter token">msg</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">var</span> buffer <span class="operator token">=</span> Buffer<span class="punctuation token">.</span><span class="function token">from</span><span class="punctuation token">(</span><span class="constant token">JSON</span><span class="punctuation token">.</span><span class="function token">stringify</span><span class="punctuation token">(</span>msg<span class="punctuation token">)</span><span class="punctuation token">)</span>
+
+ <span class="keyword token">var</span> header <span class="operator token">=</span> Buffer<span class="punctuation token">.</span><span class="function token">alloc</span><span class="punctuation token">(</span><span class="number token">4</span><span class="punctuation token">)</span>
+ header<span class="punctuation token">.</span><span class="function token">writeUInt32LE</span><span class="punctuation token">(</span>buffer<span class="punctuation token">.</span>length<span class="punctuation token">,</span> <span class="number token">0</span><span class="punctuation token">)</span>
+
+ <span class="keyword token">var</span> data <span class="operator token">=</span> Buffer<span class="punctuation token">.</span><span class="function token">concat</span><span class="punctuation token">(</span><span class="punctuation token">[</span>header<span class="punctuation token">,</span> buffer<span class="punctuation token">]</span><span class="punctuation token">)</span>
+ process<span class="punctuation token">.</span>stdout<span class="punctuation token">.</span><span class="function token">write</span><span class="punctuation token">(</span>data<span class="punctuation token">)</span>
+<span class="punctuation token">}</span>
+
+process<span class="punctuation token">.</span><span class="function token">on</span><span class="punctuation token">(</span><span class="string token">'uncaughtException'</span><span class="punctuation token">,</span> <span class="punctuation token">(</span><span class="parameter token">err</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+ <span class="function token">sendMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>error<span class="punctuation token">:</span> err<span class="punctuation token">.</span><span class="function token">toString</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">}</span><span class="punctuation token">)</span>
+<span class="punctuation token">}</span><span class="punctuation token">)</span></code></pre>
+
+<p>もうひとつ、Python による例を示します。このアプリケーションはアドオンからのメッセージを受信します。Linuxでは、このファイルを実行可能にしてください。メッセージが "ping" であった場合、"pong" というメッセージを返します。これはPython 2のバージョンです:</p>
+
+<pre class="brush: python line-numbers language-python"><code class="language-python">#!/usr/bin/python -u
+
+# Note that running python with the `-u` flag is required on Windows,
+# in order to ensure that stdin and stdout are opened in binary, rather
+# than text, mode.
+
+import json
+import sys
+import struct
+
+
+# Read a message from stdin and decode it.
+def get_message():
+ raw_length = sys.stdin.read(4)
+ if not raw_length:
+ sys.exit(0)
+ message_length = struct.unpack('=I', raw_length)[0]
+ message = sys.stdin.read(message_length)
+ return json.loads(message)
+
+
+# Encode a message for transmission, given its content.
+def encode_message(message_content):
+ encoded_content = json.dumps(message_content)
+ encoded_length = struct.pack('=I', len(encoded_content))
+ return {'length': encoded_length, 'content': encoded_content}
+
+
+# Send an encoded message to stdout.
+def send_message(encoded_message):
+ sys.stdout.write(encoded_message['length'])
+ sys.stdout.write(encoded_message['content'])
+ sys.stdout.flush()
+
+
+while True:
+ message = get_message()
+ if message == "ping":
+ send_message(encode_message("pong"))</code></pre>
+
+<p>Python 3では、受信したバイナリーデータを文字列にデコードしないといけません。アドオンに送り返されるコンテンツは構造体を使ってバイナリーデータにエンコードする必要があります:</p>
+
+<pre class="brush: python line-numbers"><code>#!/usr/bin/python -u
+
+# Note that running python with the `-u` flag is required on Windows,
+# in order to ensure that stdin and stdout are opened in binary, rather
+# than text, mode.
+
+import json
+import sys
+import struct
+
+
+# Read a message from stdin and decode it.
+def get_message():
+ raw_length = sys.stdin.buffer.read(4)
+
+ if not raw_length:
+ sys.exit(0)
+ message_length = struct.unpack('=I', raw_length)[0]
+ message = sys.stdin.buffer.read(message_length).decode("utf-8")
+ return json.loads(message)
+
+
+# Encode a message for transmission, given its content.
+def encode_message(message_content):
+ encoded_content = json.dumps(message_content).encode("utf-8")
+ encoded_length = struct.pack('=I', len(encoded_content))
+ # use struct.pack("10s", bytes), to pack a string of the length of 10 characters
+ return {'length': encoded_length, 'content': struct.pack(str(len(encoded_content))+"s",encoded_content)}
+
+
+# Send an encoded message to stdout.
+def send_message(encoded_message):
+ sys.stdout.buffer.write(encoded_message['length'])
+ sys.stdout.buffer.write(encoded_message['content'])
+ sys.stdout.buffer.flush()
+
+
+while True:
+ message = get_message()
+ if message == "ping":
+ send_message(encode_message("pong"))</code></pre>
+
+<h2 id="Closing_the_native_app" name="Closing_the_native_app">ネイティブアプリを閉じる</h2>
+
+<p><code>runtime.connectNative()</code> を使用してネイティブアプリケーションに接続した場合、アプリケーションは拡張機能が <code>Port.disconnect()</code> を呼び出すか接続したページが閉じられるまで実行されます。<code>runtime.sendNativeMessage()</code> を使用してネイティブアプリケーションの実行を開始した場合、アプリケーションはメッセージを受信してレスポンスを送信した後閉じられます。</p>
+
+<p>ネイティブアプリケーションを閉じるために</p>
+
+<ul>
+ <li>OS X や Linux のような *nix システムでは、ブラウザーはネイティブアプリケーションが正しく終了する機会を与えるために SIGTERM を送信し、その後 SIGKILL を送信します。これらのシグナルは新しいプロセスグループを作成して分けない限りすべてのサブプロセスに伝播します。</li>
+ <li>Windows では、ブラウザーはネイティブアプリケーションのプロセスを <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms684161(v=vs.85).aspx">Job object</a> とし、ジョブを kill します。 ネイティブアプリケーションが追加でプロセスを立ち上げ、アプリケーション自体が kill された後もそのままにしたい場合、ネイティブアプリケーションは追加のプロセスを <code><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms684863(v=vs.85).aspx">CREATE_BREAKAWAY_FROM_JOB</a></code> フラグを立てて立ち上げる必要があります。</li>
+</ul>
+
+<h2 id="Troubleshooting" name="Troubleshooting">トラブルシューティング</h2>
+
+<p>もしうまくいかない場合、<a href="/ja/Add-ons/WebExtensions/デバッグ#ログの出力を見る">ブラウザーコンソール</a>をチェックしてください。ネイティブアプリケーションが何かしらの出力を stderr に送っていた場合、ブラウザーはそれをブラウザーのコンソールにリダイレクトします。そのため、ネイティブアプリケーションが起動できている限り、出力されたエラーメッセージを確認することができます。</p>
+
+<p>アプリケーションが起動できていなかった場合、問題の手がかりとなるエラーメッセージを確認してください。</p>
+
+<pre>"No such native application &lt;name&gt;"</pre>
+
+<ul>
+ <li> <code>runtime.connectNative()</code> に渡した名前がアプリマニフェスト中の名前と一致しているか確認してください</li>
+ <li>OS X/Linux: アプリマニフェストのファイル名が &lt;name&gt;.json となっていることを確認してください</li>
+ <li>OS X/Linux: ネイティブアプリのマニフェストの場所が<a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Mac_OS_X">ここ</a>で述べているところにあるのを確認してください</li>
+ <li>Windows: レジストリキーが正しい場所にあり、その名前がアプリマニフェスト中の名前と一致していることを確認してください</li>
+ <li>Windows: レジストリキーに指定されたパスがアプリマニフェストを指していることを確認してください</li>
+</ul>
+
+<pre>"Error: Invalid application &lt;name&gt;"</pre>
+
+<ul>
+ <li>アプリケーションの名前に不正な文字が含まれていないことを確認してください</li>
+</ul>
+
+<pre>"'python' is not recognized as an internal or external command, ..."</pre>
+
+<ul>
+ <li>Windows: アプリケーションが Python スクリプトの場合、Python がインストールされており、パスが正しく設定されていることを確認してください</li>
+</ul>
+
+<pre>"File at path &lt;path&gt; does not exist, or is not executable"</pre>
+
+<ul>
+ <li>このメッセージが表示されたとき、アプリマニフェストの発見には成功しています</li>
+ <li>アプリマニフェストの "path" が正しいかどうかを確認してください</li>
+ <li>Windows: パスセパレータがエスケープされていることを確認してください ("c:\\path\\to\\file").</li>
+ <li>アプリがアプリマニフェストの "path" プロパティで示された場所に配置されていることを確認してください</li>
+ <li>アプリが実行可能であることを確認してください</li>
+</ul>
+
+<pre>"This extension does not have permission to use native application &lt;name&gt;"</pre>
+
+<ul>
+ <li>アプリマニフェストの "allowed_extensions" がアドオンの ID を含んでいることを確認してください</li>
+</ul>
+
+<pre>"TypeError: browser.runtime.connectNative is not a function"</pre>
+
+<ul>
+ <li>アドオンが "nativeMessaging" permission を持っているか確認してください</li>
+</ul>
+
+<pre>"[object Object] NativeMessaging.jsm:218"</pre>
+
+<ul>
+ <li>アプリケーションの開始に問題が発生しました</li>
+</ul>
+
+<h2 id="Chrome_incompatibilities" name="Chrome_incompatibilities">Chrome での非互換性</h2>
+
+<p>{{Page("Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities", "Native_messaging")}}</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/packaging_and_installation/index.html b/files/ja/mozilla/add-ons/webextensions/packaging_and_installation/index.html
new file mode 100644
index 0000000000..99d589b024
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/packaging_and_installation/index.html
@@ -0,0 +1,218 @@
+---
+title: パッケージ化とインストール
+slug: Mozilla/Add-ons/WebExtensions/Packaging_and_installation
+translation_of: Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox
+---
+<div>{{AddonSidebar}}</div>
+
+<p>この記事では、WebExtension を Firefox にインストールする方法を 2 つ紹介します。</p>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/Packaging_and_installation#ディスクから読み込む">ディスクから読み込む</a>: アドオンの開発中にテストしたい場合に最も簡単な方法です。</li>
+ <li><a href="/ja/Add-ons/WebExtensions/Packaging_and_installation#パッケージ化してインストールする">パッケージ化してインストールする</a>: この方法を用いると、アドオンをインストール可能なファイルにパッケージ化し、Firefox へ永続的にインストールさせることができます。自分の作ったアドオンを他の人に配布する際はこの方法を用いることになります。また、リリース版の Firefox にインストールさせるには、アドオンに署名をすることも必要になります。</li>
+</ul>
+
+<p>{{英語版章題("Loading from disk")}}</p>
+
+<h2 id="ディスクから読み込む">ディスクから読み込む</h2>
+
+<p>WebExtension を Firefox で動作させるには、この方法が最もシンプルです。また、<a href="/ja/Add-ons/Bootstrapped_extensions">ブートストラップ型拡張機能</a> や <a href="/ja/Add-ons/SDK">Add-on SDK を使ったアドオン</a> といった、再起動の要らないアドオンはすべてこの方法でインストールできます。</p>
+
+<p>ここでは Firefox 45 以降が必要となります。</p>
+
+<p>ディスクから読み込むには、</p>
+
+<ul>
+ <li>Firefox を起動し、</li>
+ <li>URL バーに "about:debugging" と入力し、</li>
+ <li>"一時的なアドオンを読み込む" をクリックし、</li>
+ <li>アドオンのディレクトリを開き、アドオン中のファイルを任意に選択します。</li>
+</ul>
+
+<p>これでアドオンがインストールされ、Firefox を再起動するまで有効になります。</p>
+
+<p>{{EmbedYouTube("sAM78GU4P34")}}</p>
+
+<p>{{英語版章題("Updating a temporary add-on")}}</p>
+
+<h3 id="一時的なアドオンの更新">一時的なアドオンの更新</h3>
+
+<p>この方法でアドオンをインストールした場合、アドオンのファイルを更新すると何が起きるでしょうか?</p>
+
+<p>{{英語版章題("Before Firefox 48")}}</p>
+
+<h4 id="Firefox_47_以前">Firefox 47 以前</h4>
+
+<ul>
+ <li>オンデマンドに読み込まれるファイル(<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">content scripts</a> や <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Browser_actions_2">ポップアップ</a> など)を更新した場合、変更は自動的に取り込まれ、次に content scripts が読み込まれたりポップアップが表示された際に反映されます。</li>
+ <li>常に読み込まれているファイル(<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">background scripts</a> など)を更新した場合、about:addons のページでアドオンを無効化・有効化すると変更が反映されます。</li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> ファイルを更新した場合、Firefox を再起動してアドオンを再度読み込ませる必要があります。</li>
+</ul>
+
+<div class="note">
+<p>Firefox 47 以前では、Firefox を再起動せずに「一時的なアドオンを読み込む」をクリックしても更新は<em>反映されない</em> ことに注意してください。</p>
+</div>
+
+<p>{{英語版章題("Firefox 48 onwards")}}</p>
+
+<h4 id="Firefox_48_以降">Firefox 48 以降</h4>
+
+<ul>
+ <li>オンデマンドに読み込まれるファイル(<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">content scripts</a> や <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Browser_actions_2">ポップアップ</a> など)を更新した場合、変更は自動的に取り込まれ、次に content scripts が読み込まれたりポップアップが表示された際に反映されます。</li>
+ <li>他の場合に関しては利便性が向上しました。「デバッグ」ボタンの横にある「リロード」ボタンをクリックすることで、以下のことが可能となります。
+ <ul>
+ <li>永続的なスクリプト(<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">background scripts</a> など)のリロード</li>
+ <li>manifest.json ファイルが再度パースされ、<code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> / <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> / <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> などに対する変更の反映</li>
+ </ul>
+ </li>
+</ul>
+
+<div class="note">
+<p>Firefox 48 のみに関する注意点として、about:debugging と about:addons に表示されるアドオンの名前と説明文は、「リロード」ボタンをクリックしても更新されません。この問題は Firefox 49 で修正されます。</p>
+</div>
+
+<p>{{英語版章題("Package and install")}}</p>
+
+<h2 id="パッケージ化してインストールする">パッケージ化してインストールする</h2>
+
+<p>ディスクからの読込は 開発 / テスト / デバッグ のサイクルにおいては有効です。しかし、アドオンを他の人と共有したい場合は、アドオンを インストール可能な形式にパッケージ化する必要があります。</p>
+
+<p>{{英語版章題("Packaging")}}</p>
+
+<h3 id="パッケージ化">パッケージ化</h3>
+
+<p>Firefox のアドオンは XPI ファイルでパッケージ化されます。XPI ファイルとは単なる ZIP ファイルですが、ファイルの拡張子は ".xpi" となります。</p>
+
+<p>一つ注意しなければならないのは、アドオンのファイルを含んだディレクトリの ZIP ファイルではなく、アドオンのファイルを直接含んだ ZIP ファイルとする必要がある点です。</p>
+
+<h4 id="Windows">Windows</h4>
+
+<ol>
+ <li>アドオンのファイルが含まれているフォルダを開きます。</li>
+ <li>ファイルすべてを選択します。</li>
+ <li>右クリックして "送る" → "圧縮(zip 形式)フォルダー" を選択します。</li>
+ <li>作成されたファイルの名前を "something.zip" から "something.xpi" に変更します。</li>
+</ol>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/11949/install-windows.png" style="display: block; height: 576px; margin-left: auto; margin-right: auto; width: 800px;"></p>
+
+<h4 id="Mac_OS_X">Mac OS X</h4>
+
+<ol>
+ <li>アドオンのファイルが含まれているフォルダを開きます。</li>
+ <li>ファイルすべてを選択します。</li>
+ <li>右クリックして "n 項目を圧縮" を選択します。</li>
+ <li>作成されたファイルの名前を <code>Archive.zip</code> から <code>something.xpi</code> に変更します。</li>
+</ol>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/11951/install-osx.png" style="display: block; height: 449px; margin-left: auto; margin-right: auto; width: 800px;"></p>
+
+<h4 id="Linux_Mac_OS_X_Terminal">Linux / Mac OS X Terminal</h4>
+
+<ol>
+ <li><code>cd path/to/my-addon/</code></li>
+ <li><code>zip -r ../my-addon.xpi *</code></li>
+</ol>
+
+<p>{{英語版章題("Installation")}}</p>
+
+<h3 id="インストール">インストール</h3>
+
+<p>XPI ファイルをインストールする前に、次のどちらかの手順を踏む必要があります。</p>
+
+<ul>
+ <li>XPI ファイルに署名する</li>
+ <li>未署名の XPI ファイルをインストール可能にする。ただし、この設定は Firefox Nightly か Firefox Developer Edition のみ可能であることに注意してください。自分のアドオンを一般に配布したい場合は署名が必要です。</li>
+</ul>
+
+<p>{{英語版章題("Getting your add-on signed")}}</p>
+
+<h4 id="アドオンに署名する">アドオンに署名する</h4>
+
+<p>XPI ファイルに署名するには、<a href="/ja/docs/Mozilla/Add-ons/Distribution">Signing and distributing your Add-on</a> の記事を参照してください。</p>
+
+<p>{{英語版章題("Enabling unsigned add-ons")}}</p>
+
+<h4 id="未署名のアドオンを有効にする">未署名のアドオンを有効にする</h4>
+
+<p>未署名のアドオンを有効にするには、以下の手順に従ってください。</p>
+
+<ul>
+ <li><a href="https://www.mozilla.org/ja/firefox/developer/">Firefox Developer Edition</a> または <a class="external text external-icon" href="https://nightly.mozilla.org/" rel="nofollow">Firefox Nightly</a> をダウンロード、インストール、起動してください。</li>
+ <li>未署名アドオンのインストールを制御する Firefox の設定項目を変更します。この設定は Firefox Developer Edition と Firefox Nightly のみ可能です。
+ <ul>
+ <li>Firefox の URL バーに <code>about:config</code> を入力します。</li>
+ <li>検索欄に <code>xpinstall.signatures.required</code> と入力します。</li>
+ <li>設定項目をダブルクリックするか、右クリックからの "切り替え" を選択し、値を <code>false</code> に変更します。</li>
+ </ul>
+ </li>
+</ul>
+
+<p>{{EmbedYouTube("HgtBYDWtH4w")}}</p>
+
+<p>{{英語版章題("Installing an XPI in Firefox")}}</p>
+
+<h4 id="XPI_ファイルを_Firefox_にインストールする">XPI ファイルを Firefox にインストールする</h4>
+
+<p>XPI ファイルに署名した場合でも、署名の制約を無効化した場合でも、XPI ファイルをインストールする手順はどちらも同じです。</p>
+
+<ol>
+ <li><code>about:addons</code> に移動します。</li>
+ <li>XPI ファイルをページにドラッグ &amp; ドロップするか、歯車アイコンのメニューを開いて "ファイルからアドオンをインストール" を選択します。</li>
+ <li>表示されたダイアログで "インストール" をクリックします。</li>
+</ol>
+
+<p>他にも、"ファイル" → "開く" から XPI ファイルを選択したり、Control+O (Command+O) で選択することも可能です。</p>
+
+<p>{{英語版章題("Installing your extension of Firefox OS")}}</p>
+
+<h4 id="アドオンを_Firefox_OS_にインストールする">アドオンを Firefox OS にインストールする</h4>
+
+<p>USB か Wifi で接続されたデスクトップ PC で <a href="/ja/docs/Tools/WebIDE">WebIDE</a> を起動すれば、WebIDE からアドオンをインストールすることができます。WebIDE で "path/to/my-extension" をパッケージ型アプリとして開いてください。</p>
+
+<p>manifest.json の認証状況が正しければ、接続されたデバイス(Firefox OS の nightly ビルドで動作しているもの)にアドオンをインストールし、実行することができます。</p>
+
+<p>このアドオンの初回実行時は、Firefox OS のデバイスで Settings → Add-ons で有効にする必要があります。</p>
+
+<p>{{英語版章題("Troubleshooting")}}</p>
+
+<h3 id="トラブルシューティング">トラブルシューティング</h3>
+
+<p>起こりやすい問題には以下のようなものがあります。</p>
+
+<h4 id="This_add-on_could_not_be_installed_because_it_has_not_been_verified.">"This add-on could not be installed because it has not been verified."</h4>
+
+<ul>
+ <li>アドオンが署名されていないため、<a href="/ja/Add-ons/WebExtensions/Packaging_and_installation#未署名のアドオンを有効にする">未署名アドオンのインストールを有効にしているか</a> 確認してください。</li>
+</ul>
+
+<h4 id="This_add-on_could_not_be_installed_because_it_appears_to_be_corrupt.">"This add-on could not be installed because it appears to be corrupt."</h4>
+
+<ul>
+ <li>アドオンのファイルを<em>含んだ</em> ディレクトリの ZIP ファイルではなく、アドオンのファイルを直接含んだ ZIP ファイルであるか確認してください。manifest.json は ZIP ファイルのルートに置かれていなければなりません。</li>
+ <li>manifest.json において <a href="/ja/Add-ons/WebExtensions/manifest.json/applications">applications</a> キーの値に "gecko" が設定されているか確認してください。</li>
+ <li>Firefox 44 以降を使用しているか確認してください。</li>
+ <li>コードや JSON ファイルにシンタックスエラーがないことを確認してください。</li>
+ <li><a href="/ja/docs/Tools/Browser_Console">ブラウザコンソール</a> に他の情報が表示されていないか確認してください。</li>
+</ul>
+
+<p>{{英語版章題("Nothing happens")}}</p>
+
+<h4 id="何も起こらない">何も起こらない</h4>
+
+<ul>
+ <li>ファイル名の末尾が確かに <code>.xpi</code> であるか確認してください。OS によってはファイルの拡張子を<em>本当に</em> 隠したがるものがあります。
+
+ <ul>
+ <li>Windows の場合、 View → Show / Hide: File Name Extensions を確認してください。</li>
+ <li>Mac OS X の場合、 File → Get Info → Name and Extension を確認してください。</li>
+ </ul>
+ </li>
+ <li>インストール時のプロンプトでクリックを間違えたか、プロンプトを見失ってしまった可能性があります。Nightly の戻るボタン横にあるパズルピースのアイコンを探してください。そのアイコンをクリックするとポップアップが再度表示されます。</li>
+</ul>
+
+<p>{{英語版章題("Check the console")}}</p>
+
+<h4 id="コンソールを確認する">コンソールを確認する</h4>
+
+<p>アドオンが解凍されたり読み込まれる過程に関して、他のエラーメッセージが <a href="/ja/docs/Tools/Browser_Console">ブラウザコンソール</a> に表示されている場合があります。</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/porting_from_google_chrome/index.html b/files/ja/mozilla/add-ons/webextensions/porting_from_google_chrome/index.html
new file mode 100644
index 0000000000..3baef65043
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/porting_from_google_chrome/index.html
@@ -0,0 +1,24 @@
+---
+title: Google Chrome からの移行
+slug: Mozilla/Add-ons/WebExtensions/Porting_from_Google_Chrome
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension
+---
+<div>{{AddonSidebar}}</div>
+
+<p>WebExtension API で開発する拡張機能は、ブラウザー間で互換性が維持されるように設計されており、大半は Google Chrome や Opera でサポートされている <a class="external external-icon" href="https://developer.chrome.com/extensions">extension API</a> とコード互換性があります。これらのブラウザー向けに書かれた拡張機能はほとんどの場合、少しの変更を加えるだけで Firefox でも動くようになります。ほぼすべての <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API">WebExtension API</a> は、Chrome と同様に <code>chrome</code> 名前空間のコールバック関数を使ってサポートされています。<code>chrome</code> 名前空間でサポートされない唯一の API は、わざと Chrome と互換性がないものです。こうしたまれな場合は、API ドキュメントページでは明示的に、<code>browser</code> 名前空間だけでサポートされることを述べています。Chrome や Opera から拡張機能を移行する手順は下記の通り:</p>
+
+<ol>
+ <li>manifest.json の設定項目や使用している WebExtensionAPI が <a href="/ja/Add-ons/WebExtensions/Chrome_incompatibilities">Chrome との非互換性リファレンス</a>に載っているか確認します。もし Firefox でサポートされていない設定項目や API を利用している場合、まだ移行できないかもしれません。 Mozilla はこの手順を自動化するサービスを次にて提供しています: <a href="https://www.extensiontest.com/">https://www.extensiontest.com/</a>.</li>
+ <li><a href="/ja/Add-ons/WebExtensions/Packaging_and_installation">拡張機能を Firefox にインストールしてテストします</a>。</li>
+ <li>もし何か問題が見つかったら、 <a class="external external-icon" href="https://mail.mozilla.org/listinfo/dev-addons">dev-addons mailing list</a> または <a class="external external-icon" href="https://wiki.mozilla.org/IRC">IRC</a> の  <a href="irc://irc.mozilla.org/webextensions">#webextensions</a> に連絡してください。</li>
+ <li><a href="/ja/Add-ons/Distribution">アドオンの署名と配布を行うため、アドオンを AMO に送ります</a>。</li>
+</ol>
+
+<p><span id="result_box" lang="ja"><span>展開された拡張機能をロードするのに Chrome のコマンドラインオプションを使用していた場合、開発用に Firefox へ自動的に</span></span><span lang="ja"><span>仮インストールを行う</span></span> <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> <span lang="ja"><span>ツールを使用してみてください。</span></span>  </p>
+
+<ul>
+</ul>
+
+<div id="divLookup" style="background-color: transparent; color: #000000; position: absolute; top: 683px; left: 479px; padding: 0px; border-radius: 2px;"><img></div>
diff --git a/files/ja/mozilla/add-ons/webextensions/publishing_your_webextension/index.html b/files/ja/mozilla/add-ons/webextensions/publishing_your_webextension/index.html
new file mode 100644
index 0000000000..8b78f7bf11
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/publishing_your_webextension/index.html
@@ -0,0 +1,68 @@
+---
+title: 拡張機能をパッケージ化する
+slug: Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Package_your_extension_
+---
+<div>{{AddonSidebar}}</div>
+
+<p> </p>
+
+<div class="pull-aside">
+<div class="moreinfo">
+<p>Firefox ではパッケージされた拡張機能を "XPI ファイル" と呼び、これは単に色々な拡張機能を集めた ZIP ファイルです。</p>
+
+<p>AMO にアップロードする時に、XPI 拡張機能を使う必要はありません。</p>
+</div>
+</div>
+
+<p> </p>
+
+<p>開発期間中、拡張機能は manifest.json ファイルとその他の必要なファイル—スクリプト、アイコン、HTML 文書などを含む 1 つのディレクトリで構成されるでしょう。AMO にアップロードするにはこれを 1 つの zip ファイルにまとめる必要があります。</p>
+
+<p>web-ext を使っている場合、拡張機能をパッケージ化するのに <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/web-ext_command_reference#web-ext_build">web-ext build </a>を使います。その他の場合、下記の OS ごとの手順に従ってください。</p>
+
+<div class="note">
+<p>Tip. ZIP ファイルは拡張機能を構成するファイル自身でなくてはならず、これらを含んだディレクトリであってはいけません。</p>
+</div>
+
+<h3 id="Windows" name="Windows">Windows</h3>
+
+<ol>
+ <li>あなたの拡張機能を格納したフォルダを開きます。</li>
+ <li>すべてのファイルを選択します。</li>
+ <li>右クリックメニューの「送る」 から zip圧縮を選びます。</li>
+</ol>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/11949/install-windows.png" style="display: block; height: 576px; margin-left: auto; margin-right: auto; width: 800px;"></p>
+
+<h3 id="Mac_OS_X" name="Mac_OS_X">Mac OS X</h3>
+
+<ol>
+ <li>あなたの拡張機能を格納したディレクトリを開きます。</li>
+ <li>すべてのファイルを選択します。</li>
+ <li>右クリックメニューから圧縮を選びます。</li>
+</ol>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/11951/install-osx.png" style="display: block; height: 449px; margin-left: auto; margin-right: auto; width: 800px;"></p>
+
+<div class="pull-aside">
+<div class="moreinfo">コマンドについて <a href="http://www.info-zip.org/mans/zip.html">http://www.info-zip.org/mans/zip.html</a>.</div>
+</div>
+
+<h3 id="Linux_Mac_OS_X_Terminal" name="Linux_Mac_OS_X_Terminal">Linux / Mac OS X ターミナル</h3>
+
+<ol>
+ <li>ターミナルを開きます。</li>
+ <li>拡張機能を含むディレクトリを開きます、そのコマンドは<br>
+ <code>cd path/to/<em>my-extension</em>/</code></li>
+ <li>ディレクトリの中身を ZIP します、そのコマンドは<br>
+ <code>zip -r -FS ../<em>my-extension</em>.zip *</code></li>
+</ol>
+
+<p> </p>
+
+<p> </p>
+
+<p> </p>
diff --git a/files/ja/mozilla/add-ons/webextensions/thunderbirdにおけるwebextensionsによるアドイン開発/index.html b/files/ja/mozilla/add-ons/webextensions/thunderbirdにおけるwebextensionsによるアドイン開発/index.html
new file mode 100644
index 0000000000..a6e6fd4bc6
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/thunderbirdにおけるwebextensionsによるアドイン開発/index.html
@@ -0,0 +1,21 @@
+---
+title: ThunderbirdにおけるWebExtensionsによるアドイン開発
+slug: Mozilla/Add-ons/WebExtensions/ThunderbirdにおけるWebExtensionsによるアドイン開発
+translation_of: Mozilla/Add-ons/WebExtensions/Developing_WebExtensions_for_Thunderbird
+---
+<p>{{AddonSidebar}}{{Draft}}</p>
+
+<p class="summary"><span class="seoSummary">Thunderbirdのアドイン開発はFirefoxと同様の方法でコーディングすることが可能です。<br>
+ テキストエディタや、あなたの選んだコーディングツールで。</span></p>
+
+<h2 id="APIの違い">APIの違い</h2>
+
+<p>両者ともGeckoベースであるため、いくつかの違いはあるものの、Thunderbirdでは、Firefoxで使えるAPIの多くをサポートしています。<br>
+ 詳細は、<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">browser compatibility for manifest.json</a> と <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">browser support for JavaScript APIs</a>を参照してください。</p>
+
+<h2 id="参考">参考</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Browser support for JavaScript APIs</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">Browser compatibility for manifest.json</a></li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/tips/index.html b/files/ja/mozilla/add-ons/webextensions/tips/index.html
new file mode 100644
index 0000000000..f06ffc8985
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/tips/index.html
@@ -0,0 +1,54 @@
+---
+title: Tips and Tricks
+slug: Mozilla/Add-ons/WebExtensions/Tips
+translation_of: Mozilla/Add-ons/WebExtensions/Tips
+---
+<p>{{AddonSidebar}}</p>
+
+<p>このページには開発者がWebExtensionsを開発するのに便利ないろいろなコツや技術が書かれています。</p>
+
+<h2 id="Using_advanced_JavaScript_features_from_ECMAScript_6_and_7">Using advanced JavaScript features from ECMAScript 6 and 7</h2>
+
+<p>Firefoxは<a href="/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla">たくさんの独創的なECMAScript6</a>の特徴を含んでいます。いくつかの新しい、そして実験的な特徴は、デフォルトではWebやWebExtensionでは使用できません。もしあなたがこれらの機能を使いたい場合、<a href="https://babeljs.io/">Babel</a>のようなトランスパイラを使用するのがベストでしょう。</p>
+
+<p>Babelは大半のES6の特徴に対するtransformationsを提供します </p>
+
+<p>provides transformations for the vast majority of ES6 features, and enables them by default.</p>
+
+<p>Since Firefox already fully supports most of these, it's best to configure Babel to ignore them.</p>
+
+<p>私達は.babelrcファイルの作成やあなたのpackage.jsonのbabelセクションに以下の設定を含めることを提案します。</p>
+
+<pre class="brush: js">{
+ "env": {
+ "firefox": {
+ "sourceMaps": "inline",
+ "blacklist": [
+ "es5.properties.mutators",
+ "es6.arrowFunctions",
+ "es6.destructuring",
+ "es6.forOf",
+ "es6.parameters",
+ "es6.properties.computed",
+ "es6.properties.shorthand",
+ "es6.spec.symbols",
+ "es6.spread",
+ "es6.tailCall",
+ "es6.templateLiterals",
+ "es6.regex.sticky",
+ "es6.regex.unicode"
+ ]
+ }
+ }
+}
+</pre>
+
+<p>Then, to compile an individual script, simply run:</p>
+
+<pre class="brush: sh">BABEL_ENV=firefox babel &lt;filename&gt;
+</pre>
+
+<p>Or, to compile every JavaScript file under the directory <code>src</code> and place the compiled files in <code>compiled</code>, copying over non-JavaScript files in the process, run:</p>
+
+<pre class="brush: sh">BABEL_ENV=firefox babel -Dd compiled src
+</pre>
diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/browser_action/index.html b/files/ja/mozilla/add-ons/webextensions/user_interface/browser_action/index.html
new file mode 100644
index 0000000000..64b172591a
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/user_interface/browser_action/index.html
@@ -0,0 +1,49 @@
+---
+title: ツールバーボタン
+slug: Mozilla/Add-ons/WebExtensions/user_interface/Browser_action
+tags:
+ - WebExtension
+translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Browser_action
+---
+<div>{{AddonSidebar}}</div>
+
+<p>よく<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">ブラウザーアクション</a>として参照され、 このユーザーインターフェイスオプションはブラウザーのツールバーに追加されるボタンです。 ユーザーはボタンをクリックして拡張機能とやりとりします。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15751/browser-action.png" style="display: block; height: 182px; margin-left: auto; margin-right: auto; width: 350px;"> ツールバーボタン (ブラウザーアクション) はアドレスバーボタン (ページアクション)とよく似ています。違いといつ使うかについてのガイダンスは、<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/user_interface/Page_actions#Page_actions_and_browser_actions">ページアクションとブラウザーアクション</a>を見てください。</p>
+
+<h2 id="Specifying_the_browser_action" name="Specifying_the_browser_action">ブラウザーアクションを指定する</h2>
+
+<p>ブラウザーアクションのプロパティは manifest.json の <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> キーで定義します。</p>
+
+<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"browser_action":</span> <span class="punctuation token">{</span>
+ <span class="key token">"default_icon":</span> <span class="punctuation token">{</span>
+ <span class="key token">"19":</span> <span class="string token">"button/geo-19.png"</span><span class="punctuation token">,</span>
+ <span class="key token">"38":</span> <span class="string token">"button/geo-38.png"</span>
+ <span class="punctuation token">}</span><span class="punctuation token">,</span>
+ <span class="key token">"default_title":</span> <span class="string token">"Whereami?"</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>唯一不可欠なキーは <code>default_icon</code> です。</p>
+
+<p>ブラウザーアクションの指定には 2 つの方法があります: <a href="/ja/Add-ons/WebExtensions/Popups">ポップアップ</a>がつくのとつかないのです。 ポップアップを指定しないと、ユーザーがボタンをクリックした時に、拡張機能にイベントがディスパッチされ、これを拡張機能が <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/BrowserAction/onClicked" title="Fired when a browser action icon is clicked. This event will not fire if the browser action has a popup."><code>browserAction.onClicked</code></a> を使ってリッスンします:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>ポップアップを指定すると、クリックイベントはディスパッチされません: その代わりに、ユーザーがボタンをクリックした時にポップアップが表示されます。ユーザーはポップアップとやりとりできて、ユーザーが範囲外をクリックした時に自動的にポップアップが閉じます。ポップアップを作成、管理することの詳細は<a href="/ja/Add-ons/WebExtensions/Popups">ポップアップ</a>の記事を見てください。</p>
+
+<p>拡張機能は 1 つだけのブラウザーアクションを持つ必要があります。</p>
+
+<p>なお、上に示されている任意のプロパティは <code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/browserAction">browserAction</a></code> API を使ったコードからも変更できます。</p>
+
+<h2 id="Icons" name="Icons">アイコン</h2>
+
+<p>ブラウザーアクションのアイコンを作る詳細は、<a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a> 文書の <a href="https://design.firefox.com/photon/visuals/iconography.html">Iconography</a> を見てください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>Github の <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> リポジトリには、ブラウザーアクションを使う拡張機能の例がいくつかあります。</p>
+
+<ul>
+ <li><a href="https://github.com/mdn/webextensions-examples/blob/master/bookmark-it/">bookmark-it</a> はポップアップなしのブラウザーアクションを使います。</li>
+ <li><a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">beastify</a> はポップアップ付きのブラウザーアクションを使います。</li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.html b/files/ja/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.html
new file mode 100644
index 0000000000..0744bf9d1f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/user_interface/context_menu_items/index.html
@@ -0,0 +1,54 @@
+---
+title: コンテキストメニュー項目
+slug: Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items
+---
+<div>{{AddonSidebar}}</div>
+
+<div>
+<p>このユーザーインターフェイスオプションは、ブラウザーのコンテキストメニューに1つ以上の項目を追加します。これはユーザーがウェブページを右クリックした時に利用できるコンテキストメニューです。タブも <a href="/ja/Add-ons/WebExtensions/API/menus">browser.menus API</a> を通じてコンテキストメニューを持つことができます。</p>
+
+<p><img alt="Example of content menu items added by a WebExtension, from the context-menu-demo example" src="https://mdn.mozillademos.org/files/15756/context_menu_example.png" style="display: block; height: 382px; margin-left: auto; margin-right: auto; width: 350px;"></p>
+
+<p>このオプションを、特定のブラウザーやウェブページコンテンツに関連する機能をさらすのに使います。例えば、ユーザーが画像をクリックした時にグラフィックエディターを開いたり、ページの一部分が選択されている時にページコンテンツを保存したりする機能を表示できます。メニューにはプレーンなメニュー項目や、チェックボックスや、ラジオボタングループや、 セパレータを追加できます。コンテキストメニュー項目が {{WebExtAPIRef("contextMenus.create")}} を使って追加されたら、すべてのブラウザータブで表示されますが、{{WebExtAPIRef("contextMenus.remove")}} にて削除することで隠すこともできます。</p>
+
+<h2 id="Specifying_context_menu_items" name="Specifying_context_menu_items">コンテキストメニュー項目を指定する</h2>
+
+<p>コンテキストメニューを、{{WebExtAPIRef("contextMenus")}} API を使ってブログラム的に管理できます。しかし、このAPIの恩恵を受けるには、manifest.json にて <code>contextMenus</code> パーミッションを要求する必要があります。</p>
+
+<pre class="brush: json">"permissions": ["contextMenus"]</pre>
+
+<p>次に、拡張機能のバックグラウンドスクリプト内にコンテキストメニューを追加 (と更新、削除) することもできます。メニュー項目を作成するには id、タイトル、表示するコンテキストメニューを指定します。</p>
+
+<pre class="brush: js">browser.contextMenus.create({
+ id: "log-selection",
+ title: browser.i18n.getMessage("contextMenuItemSelectionLogger"),
+ contexts: ["selection"]
+}, onCreated);</pre>
+
+<p>拡張機能はメニュー項目のクリックをリッスンします。項目がクリックされたことや、どのコンテキストメニューでクリックされたかや、クリックが行われたタブの詳細などの情報が渡されて、適切に拡張機能の機能が実行されるのに使われます。</p>
+
+<pre class="brush: js">browser.contextMenus.onClicked.addListener(function(info, tab) {
+ switch (info.menuItemId) {
+ case "log-selection":
+ console.log(info.selectionText);
+ break;
+ ...
+ }
+})</pre>
+
+<h2 id="アイコン">アイコン</h2>
+
+<p>コンテキストメニューで使うアイコンの作り方の詳細は、<a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a>の文書内の <a href="https://design.firefox.com/photon/visuals/iconography.html">Iconography</a> を見てください。</p>
+
+<h2 id="例">例</h2>
+
+<p>GitHub の <a class="external external-icon" href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> リポジトリには、コンテキストメニュー項目を実装した2つの拡張機能の実例があります:</p>
+
+<ul>
+ <li><a href="https://github.com/mdn/webextensions-examples/tree/master/menu-demo">menu-demo</a> ではブラウザーのコンテキストメニューにいくつかの項目を追加しています。</li>
+ <li><a href="https://github.com/mdn/webextensions-examples/tree/master/context-menu-copy-link-with-types">context-menu-copy-link-with-types</a> では、リンクの URL を、プレーンテキストとリッチ HTML としてクリップボードにコピーするコンテキストメニュー項目を追加してます。</li>
+</ul>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/devtools_panels/index.html b/files/ja/mozilla/add-ons/webextensions/user_interface/devtools_panels/index.html
new file mode 100644
index 0000000000..2df3fb0641
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/user_interface/devtools_panels/index.html
@@ -0,0 +1,66 @@
+---
+title: 開発ツールパネル
+slug: Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels
+tags:
+ - Beginner
+ - Guide
+ - User Interface
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels
+---
+<div>{{AddonSidebar}}</div>
+
+<div class="note">
+<p>この機能は Firefox 54 以降で利用できます。</p>
+</div>
+
+<p>拡張機能が開発者に使われるツールを提供するとき、ブラウザーの開発ツールに、新しいパネルとしてUIを追加できます。</p>
+
+<p><img alt='Simple example showing the addition of "My panel" to the Developer Tools tabs.' src="https://mdn.mozillademos.org/files/15746/developer_panel_tab.png" style="display: block; height: 112px; margin-left: auto; margin-right: auto; width: 350px;"></p>
+
+<h2 id="Specifying_a_developer_tools_panel" name="Specifying_a_developer_tools_panel">開発ツールパネルを指定する</h2>
+
+<p>開発ツールパネルは <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels">devtools.panels</a></code> API を使って追加され、特別な開発ツールページから順番に実行されます。</p>
+
+<p>開発ツールのページを追加するには、拡張機能の <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> に <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a></code> キーを入れて、 拡張機能内のそのページの HTML ファイルの場所を与えます:</p>
+
+<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"devtools_page":</span> <span class="string token">"devtools-page.html"</span></code></pre>
+
+<p>開発ツールのページから、開発ツールパネルに追加するスクリプトを呼び出します:</p>
+
+<pre class="brush: html">&lt;body&gt;
+  &lt;script src="devtools.js"&gt;&lt;/script&gt;
+&lt;/body&gt;</pre>
+
+<p>スクリプトの中では、パネルのタイトル、アイコン、そのコンテンツを与えるHTMLファイルを指定して、開発ツールパネルを作成します:</p>
+
+<pre class="brush: js">function handleShown() {
+ console.log("panel is being shown");
+}
+
+function handleHidden() {
+ console.log("panel is being hidden");
+}
+
+browser.devtools.panels.create(
+ "My Panel", // title
+ "icons/star.png", // icon
+ "devtools/panel/panel.html" // content
+).then((newPanel) =&gt; {
+ newPanel.onShown.addListener(handleShown);
+ newPanel.onHidden.addListener(handleHidden);
+});</pre>
+
+<p>拡張機能はインスペクターウィンドウの中で <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval"><code>devtools</code>.inspectedWindow.eval()</a></code> を使うか、バックグラウンドスクリプトからメッセージを渡してコンテンツスクリプトに挿入することで、コードを実行できます。この方法のより詳しくは <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools">Extending the developer tools</a> を見てください。</p>
+
+<h2 id="Examples" name="Examples">開発パネルのデザイン</h2>
+
+<p>開発パネルのウェブページを Firefox のスタイルにマッチさせる方法の詳細は <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a> の文書を見てください。</p>
+
+<h2 id="アイコン">アイコン</h2>
+
+<p>開発ツールパネルに使うアイコン作成方法の詳細は <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a> の文書の<a href="https://design.firefox.com/photon/visuals/iconography.html">Iconography</a> を見てください。</p>
+
+<h2 id="例">例</h2>
+
+<p>GitHub の <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> リポジトリには開発ツールパネルを実装した <a href="https://github.com/mdn/webextensions-examples/blob/master/devtools-panels/">devtools-panels</a> の例があります。</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/extension_pages/index.html b/files/ja/mozilla/add-ons/webextensions/user_interface/extension_pages/index.html
new file mode 100644
index 0000000000..a945d4d1fc
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/user_interface/extension_pages/index.html
@@ -0,0 +1,70 @@
+---
+title: Extension pages
+slug: Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages
+tags:
+ - Beginner
+ - User Interface
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages
+---
+<div>{{AddonSidebar()}}</div>
+
+<p><span class="seoSummary">拡張機能にはフォームやヘルプなど拡張機能が必要とするコンテンツを提供するためのHTMlを含めることができます。</span></p>
+
+<p><img alt="Example of a simple bundled page displayed as a detached panel." src="https://mdn.mozillademos.org/files/15752/bundled_page_as_panel_small.png" style="display: block; height: 216px; margin-left: auto; margin-right: auto; width: 350px;"></p>
+
+<p>拡張機能に含められた HTML ページは拡張機能がバックグラウンドで動作するのと同じ特権を持った JavaScript の API を利用できますが、これらのページはそれぞれのタブ、JavaScriptイベントキュー、グローバル変数を持ちます。</p>
+
+<p>バックグラウンドのページは「隠れた拡張ページ」と考えてください。</p>
+
+<h2 id="拡張ページを指定をする">拡張ページを指定をする</h2>
+
+<p>HTMLファイルと関連づけられた CSS や JavaScript ファイルを拡張機能に含めることができます。これらのファイルはルートに置くこともできますし、サブディレクトリに分けることもできます。</p>
+
+<pre>/my-extension
+ /manifest.json
+ /my-page.html
+ /my-page.js</pre>
+
+<h2 id="拡張ページを表示する">拡張ページを表示する</h2>
+
+<p>拡張ページを表示する際に2つの選択肢があります。それは、 {{WebExtAPIRef("windows.create()")}} と {{WebExtAPIRef("tabs.create()")}} です。</p>
+
+<p><code>windows.create()</code> を使うと、例えば、HTML ファイルを detached panel (アドレスバー、ブックマークバーなどといったブラウザ UI がないウィンドウ) 開くことができ、ダイアログのようなユーザーエクスペリエンスを実現できます:</p>
+
+<pre class="brush: js">var createData = {
+ type: "detached_panel",
+ url: "panel.html",
+ width: 250,
+ height: 100
+};
+var creating = browser.windows.create(createData);</pre>
+
+<p>ウィンドウが必要なくなったときは JavaScript で閉じることができます。例えば、以下の例では、ユーザーがボタンをクリックしたときに {{WebExtAPIRef("windows.remove()")}} にウィンドウ の ID を渡しています:</p>
+
+<pre class="brush: js">document.getElementById("closeme").addEventListener("click", function(){
+ var winId = browser.windows.WINDOW_ID_CURRENT;
+ var removing = browser.windows.remove(winId);
+}); </pre>
+
+<h2 id="拡張ページと履歴">拡張ページと履歴</h2>
+
+<p>デフォルトではこの方法で開かれたページは普通のウェブページを開いたときと同じように履歴に保存されます。履歴に保存したくない場合、 {{WebExtAPIRef("history.deleteUrl()")}} を使ってブラウザから履歴のレコードを削除することができます。</p>
+
+<pre class="brush: js" id="ct-4">function onVisited(historyItem) {
+ if (historyItem.url == browser.extension.getURL(myPage)) {
+ browser.history.deleteUrl({url: historyItem.url});
+ }
+}
+
+browser.history.onVisited.addListener(onVisited);</pre>
+
+<p>History API を使には <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a></code> で "history" <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a> をリクエストする必要があります。</p>
+
+<h2 id="ウェブページのデザイン">ウェブページのデザイン</h2>
+
+<p>Firefox のスタイルとマッチするようなデザインの方法の詳細は<a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a> と <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles">browser styles</a> をお読みください。</p>
+
+<h2 id="例">例</h2>
+
+<p>GitHubの <a class="external external-icon" href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> リポジトリにはウィンドウの作成を実装する例である <a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/window-manipulator">window-manipulator</a> が含まれています。</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/index.html b/files/ja/mozilla/add-ons/webextensions/user_interface/index.html
new file mode 100644
index 0000000000..0ce45c98db
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/user_interface/index.html
@@ -0,0 +1,103 @@
+---
+title: ユーザーインターフェイス
+slug: Mozilla/Add-ons/WebExtensions/user_interface
+tags:
+ - Landing
+ - User Interface
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/user_interface
+---
+<div>{{AddonSidebar}}</div>
+
+<p>WebExtension API を使った機能拡張にはいくつかのユーザーインターフェイスオプションが提供されていて、ユーザーがこれによって機能を利用できます。この節では、下記にこのオプションの要約と、各ユーザーインターフェイスオプションの詳細な導入とがあります。</p>
+
+<div class="note">
+<p>あなたの機能拡張で、これらの UI コンポーネントを使って優れたユーザー体験を生むためのアドバイスとして、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/User_experience_best_practices">ユーザー体験のベストプラクティス</a> の記事を見てください。</p>
+</div>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">UI オプション</th>
+ <th scope="col">記述</th>
+ <th scope="col" style="width: 350px;">例</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action">ブラウザーツールバーボタン</a>(ブラウザーアクション)</p>
+ </td>
+ <td>ブラウザーツールバーのボタンで、クリック時に機能拡張にイベントを送る。既定では全てのタブででこのボタンが表示されている。</td>
+ <td><img alt="Example showing a toolbar button (browser action)." src="https://mdn.mozillademos.org/files/15751/browser-action.png" style="height: 364px; width: 700px;"></td>
+ </tr>
+ <tr>
+ <td>
+ <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups">ポップアップ</a>付きのツールバーボタン</p>
+ </td>
+ <td>ボタンがクリックされた時の、ブラウザーツールバーのボタン上のポップアップ。ポップアップは、ユーザーインタラクションを扱う HTML 文書内で定義される。</td>
+ <td><img alt="Example of the pop-up on a toolbar button" src="https://mdn.mozillademos.org/files/15753/popup-shadow.png" style="height: 624px; width: 700px;"></td>
+ </tr>
+ <tr>
+ <td>
+ <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions">アドレスバーボタン</a>(ページアクション)</p>
+ </td>
+ <td>ブラウザーアドレスバー上のボタンで、クリック時に機能拡張にイベントを送る。既定では、全てのタブでこのボタンは非表示。</td>
+ <td><img alt="Example showing an address bar button (page action) " src="https://mdn.mozillademos.org/files/15745/address_bar_button.png" style="height: 348px; width: 700px;"></td>
+ </tr>
+ <tr>
+ <td><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups">ポップアップ</a>付きのアドレスバーボタン</td>
+ <td>
+ <p>ブラウザーアドレスバーのボタン上のポップアップで、クリック時に開く。ポップアップは、ユーザーインタラクションを扱う HTML 文書内で定義される。</p>
+ </td>
+ <td><img alt="Example of a popup on the address bar button" src="https://mdn.mozillademos.org/files/15747/page_action_popup.png" style="height: 524px; width: 700px;"></td>
+ </tr>
+ <tr>
+ <td><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items">コンテキストメニュー項目</a></td>
+ <td>ブラウザーのコンテキストメニュー上の、メニュー項目や、チェックボックスや、ラジオボタン。また、メニューはセパレーターを追加して構造化もできる。メニュー項目がクリックされたとき、機能拡張にイベントが送られる。</td>
+ <td><img alt="Example of content menu items added by a WebExtension, from the context-menu-demo example" src="https://mdn.mozillademos.org/files/15756/context_menu_example.png" style="height: 942px; width: 864px;"></td>
+ </tr>
+ <tr>
+ <td><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars">サイドバー</a></td>
+ <td>
+ <p dir="ltr">ウェブページの隣に表示される HTML 文書で、ページ毎に固有なコンテンツを持つ。サイドバーは機能拡張がインストールされた時に開かれて、ユーザーのサイドバー可視化の選択に従う。サイドバー内のユーザーインタラクションは HTML 文書によって扱われる。</p>
+ </td>
+ <td><img alt="Example of a sidebar" src="https://mdn.mozillademos.org/files/15755/bookmarks-sidebar.png" style="height: 846px; width: 700px;"></td>
+ </tr>
+ <tr>
+ <td><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">オプションページ</a></td>
+ <td>機能拡張に対してユーザーが変更できる設定値を決めるページ。ユーザーはブラウザーのアドオンマネージャーからこのページにアクセスできる。</td>
+ <td><img alt="Example showing the options page content added in the favorite colors example." src="https://mdn.mozillademos.org/files/15748/options_page.png"></td>
+ </tr>
+ <tr>
+ <td><a href="https://developer.mozilla.org/Add-ons/WebExtensions/user_interface/Extension_pages">Extension page</a></td>
+ <td>ウィンドウやタブの中で、フォームやヘルプやその他必要となるあらゆるコンテンツを提供するには、機能拡張に含めたウェブページを使います。</td>
+ <td><img alt="Example of a simple bundled page displayed as a detached panel." src="https://mdn.mozillademos.org/files/15752/bundled_page_as_panel_small.png" style="height: 432px; width: 700px;"></td>
+ </tr>
+ <tr>
+ <td><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Notifications">通知</a></td>
+ <td>OS の通知の仕組みを通じてユーザーに表示される一時的な通知。ユーザーが通知をクリックした時や、(自動的に、あるいはユーザーが要求した場合の両方に)通知が閉じた時、機能拡張にイベントを送る。</td>
+ <td><img alt="Example of an extension triggered system notification" src="https://mdn.mozillademos.org/files/15754/notify-shadowed.png" style="height: 294px; width: 780px;"></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Omnibox">アドレスバーサジェスト</a></td>
+ <td>ユーザーがキーワードを入力した時のカスタムアドレスバーサジェスト</td>
+ <td><img alt="Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions." src="https://mdn.mozillademos.org/files/15749/omnibox_example_small.png" style="height: 464px; width: 700px;"></td>
+ </tr>
+ <tr>
+ <td><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels">開発ツールパネル</a></td>
+ <td>ブラウザーの開発ツール内で表示される、タブと関連 HTML 文書。</td>
+ <td><img alt="Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions." src="https://mdn.mozillademos.org/files/15746/developer_panel_tab.png" style="height: 224px; width: 700px;"></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>下記の方法ガイドにはユーザーインターフェイスオプションを作成するためのステップバイステップのガイドがあります。:</p>
+
+<ul>
+ <li><a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Accessibility_guidelines">アクセシビリティガイドライン</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar">ツールバーにボタンを追加する</a></li>
+ <li><a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles">ブラウザースタイル</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools">開発ツールを拡張する</a></li>
+ <li><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page">設定ページの実装</a></li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/notifications/index.html b/files/ja/mozilla/add-ons/webextensions/user_interface/notifications/index.html
new file mode 100644
index 0000000000..94658de2e8
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/user_interface/notifications/index.html
@@ -0,0 +1,50 @@
+---
+title: 通知
+slug: Mozilla/Add-ons/WebExtensions/user_interface/Notifications
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Notifications
+---
+<div>{{AddonSidebar}}</div>
+
+<div>
+<p><span class="seoSummary">通知では、OS の通知サービスを使って、拡張機能やそのコンテンツについての情報を通信することができます:</span></p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15754/notify-shadowed.png" style="display: block; height: 147px; margin-left: auto; margin-right: auto; width: 390px;"></p>
+
+<p>通知にはユーザーへのアクションの呼びかけを入れることができて、アドオンではユーザーによる通知のクリックや通知を閉じるのをリッスンできます。</p>
+
+<h2 id="Specifying_notifications" name="Specifying_notifications">通知を指定する</h2>
+
+<p>{{WebExtAPIRef("notifications")}} API を使って通知をプログラム的に管理できます。この API を使うには manifest.json 内で <code>notifications</code> パーミッションを要求する必要があります:</p>
+
+<pre class="brush: json"><span class="pl-s"><span class="pl-pds">"</span>permissions<span class="pl-pds">"</span></span>: [<span class="pl-s"><span class="pl-pds">"</span>notifications<span class="pl-pds">"</span></span>]</pre>
+
+<p>次に {{WebExtAPIRef("notifications.create")}} を使って通知を作成します。<a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a> の例では次の通り:</p>
+
+<pre class="brush: js">var title = browser.i18n.getMessage("notificationTitle");
+var content = browser.i18n.getMessage("notificationContent", message.url);
+browser.notifications.create({
+ "type": "basic",
+ "iconUrl": browser.extension.getURL("icons/link-48.png"),
+ "title": title,
+ "message": content
+});</pre>
+
+<p>このコードはアイコンや、タイトルや、メッセージつきの通知を作成します。</p>
+
+<p>通知にアクションの要求が含まれている場合、通知のクリックをリッスンしてアクションハンドラの関数を呼び出せます:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>notifications<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span>
+</code></pre>
+
+<p>通知にてアクションの要求を発行している場合、オプションの通知の <code>id</code> を定義して、どのアクションをユーザーが選択したかがわかるようにすると良いでしょう。</p>
+
+<h2 id="Icons" name="Icons">アイコン</h2>
+
+<p>通知に使うアイコン作成方法の詳細は、<a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a>文書内の <a href="https://design.firefox.com/photon/visuals/iconography.html">Iconography</a> を見てください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>GitHub の <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> リポジトリには通知を実装した <a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a> の実例があります。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/options_pages/index.html b/files/ja/mozilla/add-ons/webextensions/user_interface/options_pages/index.html
new file mode 100644
index 0000000000..524223bc00
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/user_interface/options_pages/index.html
@@ -0,0 +1,65 @@
+---
+title: オプションページ
+slug: Mozilla/Add-ons/WebExtensions/user_interface/Options_pages
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Options_pages
+---
+<div>{{AddonSidebar}}</div>
+
+<div>
+<p>オプションページでは、ユーザーから変更できるような拡張機能の設定画面を定義します。ユーザーはアドオンマネージャを通じて、アドオンのオプションページにアクセスできます。</p>
+
+<p>{{EmbedYouTube("eODy24csH5M")}}</p>
+
+<p>このページにユーザーがアクセスする方法や、ブラウザー UI との連携については各ブラウザーによって異なります。</p>
+
+<ul>
+</ul>
+
+<p>このページは、プログラムから <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/Runtime/openOptionsPage" title="If your add-on does not have an options page, or the browser failed to create one for some other reason, runtime.lastError will be set."><code>runtime.openOptionsPage()</code></a> を呼び出して開くこともできます。</p>
+オプションページにおけるリソースの読み込み元や、<code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code> のように安全でない処理は Content Security Policy によって制限されます。詳細は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security Policy</a> を参照してください。
+
+<h2 id="Specifying_the_options_page" name="Specifying_the_options_page">オプションページを指定する</h2>
+
+<p>オプションページを作成するには、ページを定義する HTML を書きます。このページは通常のページと同様に、CSS と JavaScript ファイルを入れることができます。このページは、 <a href="https://github.com/mdn/webextensions-examples/tree/master/favourite-colour">favourite-colour</a> の例から取ってきていて、JavaScript ファイルが含まれます:</p>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;/head&gt;
+
+&lt;body&gt;
+ &lt;form&gt;
+ &lt;label&gt;Favourite colour&lt;/label&gt;
+ &lt;input type="text" id="colour" &gt;
+ &lt;button type="submit"&gt;Save&lt;/button&gt;
+ &lt;/form&gt;
+ &lt;script src="options.js"&gt;&lt;/script&gt;
+&lt;/body&gt;
+
+&lt;/html&gt;</pre>
+
+<p>ページ内で動く JavaScript はアドオンが<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">権限</a>を持つすべての <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API">WebExtension APIs</a> を使うことができます。特に、設定を保管する <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/Storage" title="Enables WebExtensions to store and retrieve data, and listen for changes to stored items."><code>storage</code></a> API を使えます。</p>
+
+<p>ページファイルを拡張機能の中にパッケージします.</p>
+
+<p>manifest.json 内に <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code> キーも必要です、ここではページの URL を与えます。</p>
+
+<pre class="brush: json">"options_ui": {
+ "page": "options.html",
+ "browser_style": true
+},</pre>
+
+<p><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code> ページを見てオプションページとバックグラウンド/コンテンツスクリプトとの間で<strong>オプションを共有する</strong>ことができます。</p>
+
+<h2 id="Examples" name="Examples">オプションコンテンツのデザイン</h2>
+
+<p>Firefox のスタイルにマッチするオプションコンテンツをデザインする方法は <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a> の文書を見てください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>GitHub の <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> リポジトリでは、オプションページを使う拡張機能の <a href="https://github.com/mdn/webextensions-examples/tree/master/favourite-colour">favourite-colour</a> の例があります。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/page_actions/index.html b/files/ja/mozilla/add-ons/webextensions/user_interface/page_actions/index.html
new file mode 100644
index 0000000000..c285ad2670
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/user_interface/page_actions/index.html
@@ -0,0 +1,50 @@
+---
+title: アドレスバーボタン
+slug: Mozilla/Add-ons/WebExtensions/user_interface/Page_actions
+tags:
+ - User Interface
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Page_actions
+---
+<div>{{AddonSidebar}}</div>
+
+<p>よく<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/pageAction">ページアクション</a>として参照され、このユーザーインターフェイスオプションはブラウザーのアドレスバーに追加されるボタンです。ユーザーはボタンをクリックして拡張機能とやりとりします。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/12960/page-action.png" style="display: block; height: 262px; margin-left: auto; margin-right: auto; width: 850px;"></p>
+
+<p>ウェブページに関係する機能のある時だけにこのボタンを使ってください。既定ではアドレスバーのボタンはすべてのタブにて隠されていて、<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/PageAction/show" title="Shows the page action for a given tab. The page action is shown whenever the given tab is the active tab."><code>pageAction.show()</code></a> と <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/PageAction/hide" title="Hides the page action for a given tab."><code>pageAction.hide()</code></a> を呼び出すことで、特定のタブ上での表示・非表示を制御します。</p>
+
+<p><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_action">ツールバーボタン</a>と比較して、似た振る舞いをしますが、そちらは拡張機能の機能が大抵のウェブページに適用できる状況で使われます。</p>
+
+<h2 id="Specifying_the_page_action" name="Specifying_the_page_action">ページアクションを指定する</h2>
+
+<p>ページアクションのプロパティは manifest.json の <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code> キーで定義します。</p>
+
+<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"page_action":</span> <span class="punctuation token">{</span>
+ <span class="key token">"browser_style":</span> <span class="keyword token">true</span><span class="punctuation token">,</span>
+ <span class="key token">"default_icon":</span> <span class="punctuation token">{</span>
+ <span class="key token">"19":</span> <span class="string token">"button/geo-19.png"</span><span class="punctuation token">,</span>
+ <span class="key token">"38":</span> <span class="string token">"button/geo-38.png"</span>
+ <span class="punctuation token">}</span><span class="punctuation token">,</span>
+ <span class="key token">"default_title":</span> <span class="string token">"Whereami?"</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>唯一不可欠なキーは <code>default_icon</code> です。</p>
+
+<p>ページアクションの指定には2つの方法があります: <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Popups">ポップアップ</a>がつくのとつかないのです。 ポップアップを指定しないと、ユーザーがボタンをクリックした時に、拡張機能にイベントがディスパッチされ、これを拡張機能が <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction/onClicked" title="Fired when a browser action icon is clicked. This event will not fire if the browser action has a popup."><code>pageAction.onClicked</code></a>を使ってリッスンします:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>pageAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>ポップアップを指定すると、クリックイベントはディスパッチされません: その代わりに、ユーザーがボタンをクリックした時にポップアップが表示されます。ユーザーはポップアップとやりとりできて、ユーザーが範囲外をクリックした時に自動的にポップアップが閉じます。ポップアップを作成、管理することの詳細は<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Popups">ポップアップ</a>の記事を見てください。</p>
+
+<p>拡張機能は1つだけのページアクションを持つ必要があります。</p>
+
+<p>なお、上に示されている任意のプロパティは<code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction">pageAction</a></code> API を使ったコードからも変更できます。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>GitHub の <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> リポジトリには、ページアクションを使う拡張機能の例がいくつかあります:</p>
+
+<ul>
+ <li><a href="https://github.com/mdn/webextensions-examples/tree/master/chill-out">chill-out</a> はポップアップなしのページアクションを使います。</li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/popups/index.html b/files/ja/mozilla/add-ons/webextensions/user_interface/popups/index.html
new file mode 100644
index 0000000000..7ca9f6f69d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/user_interface/popups/index.html
@@ -0,0 +1,59 @@
+---
+title: ポップアップ
+slug: Mozilla/Add-ons/WebExtensions/user_interface/Popups
+tags:
+ - UI
+ - User Interface
+ - WebExtensions
+ - popup
+translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Popups
+---
+<div>{{AddonSidebar}}</div>
+
+<div>
+<p>ポップアップは<a href="/ja/Add-ons/WebExtensions/Browser_action">ツールバーボタン</a>や<a href="/ja/Add-ons/WebExtensions/Page_actions">アドレスバーボタン</a>に関連したダイアログです。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15747/page_action_popup.png" style="display: block; height: 282px; margin-left: auto; margin-right: auto; width: 350px;"></p>
+
+<p>ユーザーがボタンをクリックした時、ポップアップが表示されます。ポップアップの外をクリックすると、ポップアップは閉じます。ポップアップは、そこで実行しているスクリプトから <code><a href="https://developer.mozilla.org/ja/docs/Web/API/Window/close">window.close()</a></code> を呼ぶとプログラム的に閉じられます。しかし、拡張機能の JavaScript からプログラム的に開くことはできません。つまりユーザー操作への反応としてだけ開きます。</p>
+
+<p><code>"_execute_browser_action"</code> と <code>"_execute_page_action"</code> ショートカットを使って、ポップアップを開くキーボードショートカットを定義できます。manifest.json の <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/commands">commands</a></code><span style="display: none;"> </span> キーの文書を見てください。</p>
+
+<h2 id="Specifying_a_popup" name="Specifying_a_popup">ポップアップを指定する</h2>
+
+<p>通常の Web ページと同じく、ポップアップは HTML ファイルで定義されます(ここに CSS や JavaScript も含めることが可能です)。 ただし、拡張機能が持つ<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/permissions">パーミッション</a>の範囲で JavaScript から <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API">WebExtension API</a> にアクセスできる点で通常のものとは異なります。</p>
+
+<p>ポップアップの文書はポップアップが表示されるたびに読み込まれて、ポップアップが閉じるたびに開放されます。</p>
+
+<p>HTML ファイルを拡張機能に入れるには、manifest.json内の <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> か <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a> キーの <code>"default_popup"</code> にて指定します:</p>
+
+<pre class="brush: json"> "browser_action": {
+ "default_icon": "icons/beasts-32.png",
+ "default_title": "Beastify",
+ "default_popup": "popup/choose_beast.html"
+ }</pre>
+
+<p>ブラウザーの UI と統一感を持たせるスタイルシートをポップアップに組み込めるようになりました。これを利用するためには、<code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> か <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a> キーで <code>"browser_style": true</code> を指定してください。</p>
+
+<p>ポップアップにおけるリソースの読み込み元や、<code><a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code> のように安全でない処理は Content Security Policy によって制限されます。詳細は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security Policy</a> を参照してください。</p>
+
+<h2 id="Debugging_popups" name="Debugging_popups">ポップアップのデバッグ</h2>
+
+<p>ポップアップのマークアップと JavaScript をアドオンデバッガーを使ってデバッグできます。しかしポップアップの自動非表示を不可として、ポップアップの外をクリックした時に隠れてしまうのを防ぐ必要があります。<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Debugging#Debugging_popups">ポップアップのデバッグを読んでください</a>。</p>
+
+<h2 id="Popup_resizing" name="Popup_resizing">ポップアップのリサイズ</h2>
+
+<p>ポップアップはその中身に合わせて自動的にリサイズされます。ブラウザーごとにこのアルゴリズムは違う場合があります。</p>
+
+<p>Firefox では、サイズはポップアップが表示される直前に計算されて、最大で毎秒10回のDOM変形があります。strict モードの文書では、サイズは <code><a href="/ja/docs/Web/HTML/Element/body">&lt;body&gt;</a></code> 要素のレイアウトサイズに基いて計算されます。quirks モードでは、これは <code><a href="/ja/docs/Web/HTML/Element/html">&lt;html&gt;</a></code> 要素です。Firefox はその要素の好ましい幅を計算して、その幅にリフローして、縦のスクロールがないようにリサイズします。最大で <strong><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1434177">800</a></strong><strong>x600 ピクセル</strong> の範囲でユーザーの画面にフィットさせます。(Firefox 60以前では680ピクセルまでとなります。)ユーザーが<a href="https://support.mozilla.org/en-US/kb/customize-firefox-controls-buttons-and-toolbars#w_customize-the-menu-or-the-toolbar">拡張機能のボタンをメニューに動かした</a>り、ツールバーからオーバーフローした場合、ポップアップはメニューのパネル内に出てきて、固定の幅となります。</p>
+
+<p>Firefox Android 57 では、ポップアップは新規タブの通常ページとして表示されます。</p>
+
+<h2 id="Popup_design" name="Popup_design">ポップアップのデザイン</h2>
+
+<p>Firefox のスタイルにマッチするポップアップのウェブページをデザインする方法は、<a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a> の文書を見てください。</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>GitHub の <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> リポジトリには、ポップアップ付きブラウザーアクションを使う拡張機能の <a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">beastify</a> の例があります。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/user_interface/sidebars/index.html b/files/ja/mozilla/add-ons/webextensions/user_interface/sidebars/index.html
new file mode 100644
index 0000000000..2034198dc6
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/user_interface/sidebars/index.html
@@ -0,0 +1,55 @@
+---
+title: サイドバー
+slug: Mozilla/Add-ons/WebExtensions/user_interface/Sidebars
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Sidebars
+---
+<div>{{AddonSidebar}}</div>
+
+<div>
+<p>サイドバーはブラウザーウィンドウの横側の、ウェブページの隣に表示されるペイン(枠)です。ブラウザーはユーザーに、 現在利用しているサイドバーを表示するUIと表示させるサイドバーを選ぶUIを提供します。例えば、Firefox には"表示 &gt; サイドバー" メニューがあります。サイドバーは同時に一つだけ表示できて、すべてのタブとすべてのブラウザーウィンドウに表示されます。</p>
+
+<p>ブラウザーにはいくつかの組み込み済みのサイドバーがあります。例えば、Firefox にはブックマークと連携するサイドバーがあります:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15755/bookmarks-sidebar.png" style="display: block; height: 423px; margin-left: auto; margin-right: auto; width: 350px;"> <code>sidebar_action</code> というmanifest.json キーを使って、拡張機能はブラウザーに独自のサイドバーを追加できます。それは組み込みのサイドバーと一緒に一覧表示され、ユーザーが組み込みサイドバーと同じメカニズムで開くことができます。</p>
+
+<p>"browser action"ポップアップと同様に、サイドバーのコンテンツを HTML 文書で指定できます。ユーザーがサイドバーを開く時、サイドバーの文書がブラウザーである各ウィンドウへと読み込まれます。各ウィンドウは独立した環境のインスタンスを保持します。新しいウィンドウが開いた時も同様に独自にサイドバー文書を保持します。</p>
+
+<p>{{WebExtAPIRef("sidebarAction.setPanel()")}} 関数を使って特定のタブに文書をセットできます。サイドバーはどこのウィンドウに所属しているのかを、 {{WebExtAPIRef("windows.getCurrent()")}} APIを使ってできます。</p>
+
+<pre class="brush: js">// sidebar.js
+browser.windows.getCurrent({populate: true}).then((windowInfo) =&gt; {
+ myWindowId = windowInfo.id;
+});</pre>
+
+<p>これは、windowごとに出しわけしたいときに有用な方法です。参考例としてこちらを参照してください。 <a href="https://github.com/mdn/webextensions-examples/tree/master/annotate-page">"annotate-page"</a>.</p>
+
+<p>Sidebar documents は  backgroundや popupスクリプトと同じ特権のJavaScript APIs にアクセスできます。 background page に{{WebExtAPIRef("runtime.getBackgroundPage()")}}を使いアクセスできます(incognito mode windowでなければ(訳注:プライベートタブのことかと思います))。そして {{WebExtAPIRef("tabs.sendMessage()")}} や {{WebExtAPIRef("runtime.sendNativeMessage()")}}のように messeagin APIを使って、 content scripts や ネイティブアプリケーションと連携することが可能です。</p>
+
+<p>Sidebar documents はウィンドウのクローズ時かユーザがサイドバーを閉じた時にunloadされます。このように backgroundと違って常に生きているわけではありませんがポップアップと違い、ユーザがWebページと連携している間読み込まれたままでいられます。</p>
+
+<p>サイドバーは初回インストール時に自動で開きます。これは拡張機能にサイドバーがあることをユーザに理解させてくれます。ただしプログラム的にサイドバーを開くことはできません。ユーザのみが開くことができます(訳注:ちなみにブラウザのツールバーボタンを押したときにサイドバーを開くプログラムは動作する)。</p>
+
+<h2 id="Specifying_sidebars" name="Specifying_sidebars">サイドバーを指定する</h2>
+
+<p>サイドバーを使うには初期起動documentを <code><a href="/ja/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code> セクションとしてmanifest.json に a default title とiconとともに設定します。</p>
+
+<pre class="brush: json">"sidebar_action": {
+ "default_title": "My sidebar",
+ "default_panel": "sidebar.html",
+ "default_icon": "sidebar_icon.png"
+}</pre>
+
+<p>これら3つは同時に、{{WebExtAPIRef("sidebarAction")}} API を使ってプログラム的に変更可能です。</p>
+
+<p>Title とicon は UIとしてブラウザがサイドバーのリストアップをするときユーザに示す内容です。例えば Firefoxの "表示&gt; サイドバー" メニューで見ることができます。</p>
+
+<h2 id="Examples" name="Examples">サイドバーデザイン</h2>
+
+<p>Firefox スタイルにサイドバーをマッチさせる方法の詳細は次の文書を参考にしてください。 <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a>.</p>
+
+<h2 id="例">例</h2>
+
+<p>GitHub 上の<a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> repository に、サイドバーを実装した例として<a href="https://github.com/mdn/webextensions-examples/tree/master/annotate-page">annotate-page</a> があります(訳注:annotateは注釈を意味します。サンプルはざっと見たところサイドバー上のメモ機能のようです)。</p>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/walkthrough/index.html b/files/ja/mozilla/add-ons/webextensions/walkthrough/index.html
new file mode 100644
index 0000000000..3eb93ad7c9
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/walkthrough/index.html
@@ -0,0 +1,451 @@
+---
+title: 2 つめの拡張機能
+slug: Mozilla/Add-ons/WebExtensions/Walkthrough
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Your_second_WebExtension
+---
+<div>{{AddonSidebar}}
+<p><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Your_first_WebExtension">初めての拡張機能</a>を一通り読んでいる場合、既に拡張機能の書き方を知っていることと思います。<span class="seoSummary">この記事では、API の使い方をより詳しく説明するため、前回よりも少し複雑なアドオンを書いてみます。</span></p>
+
+<p>この拡張機能では Firefox のツールバーにボタンを新しく追加します。ユーザーがこのボタンをクリックすると、動物を選択できるポップアップが表示されます。ユーザーが動物を選択すると、ウェブページのコンテンツが選択した動物の画像に置き換わります。</p>
+
+<p>これらの機能を以下のように実装していきます。</p>
+
+<ul>
+ <li><strong><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Browser_action">ブラウザーアクション </a></strong><strong>(Firefox のツールバーに表示させるボタン)を定義</strong><br>
+ このボタン用に次のものを用意します。
+ <ul>
+ <li>"beasts-32.png" というアイコン</li>
+ <li>ボタン押下時に開くポップアップ(HTML / CSS / JavaScript で記述)</li>
+ </ul>
+ </li>
+ <li><strong>拡張機能のアイコンを定義</strong>(ファイル名: "beasts-48.png")。これはアドオンマネージャーに表示されます。</li>
+ <li><strong>ウェブページに読み込ませるコンテンツスクリプト "beastify.js" を作成</strong><br>
+ このスクリプトによってウェブページが実際に変更されます。</li>
+ <li><strong>ウェブページを置き換える動物の画像をパッケージ化</strong><br>
+ 画像を "web-accessible なリソース" とし、ウェブページから参照できるようにします。</li>
+</ul>
+
+<p>この拡張機能は次のような全体構成になっています。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/13671/Untitled-1.png" style="display: block; height: 1200px; margin-left: auto; margin-right: auto; width: 860px;"></p>
+
+<p>この拡張機能はシンプルですが、WebExtensions API の基本的なコンセプトを多く含んでいます。</p>
+
+<ul>
+ <li>ツールバーにボタンを追加する</li>
+ <li>HTML / CSS / JavaScript を用いてポップアップのパネルを定義する</li>
+ <li>ウェブページにコンテンツスクリプトを差し込む</li>
+ <li>拡張機能の中においてコンテンツスクリプトと他のスクリプトとを通信させる</li>
+ <li>ウェブページで用いるリソースを拡張機能にパッケージ化する</li>
+</ul>
+
+<p><a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">ソースコード一式は GitHub で参照できます </a>。</p>
+
+<p>この拡張機能を作成するには、Firefox 45 以上が必要です。</p>
+
+<h2 id="Writing_the_extension" name="Writing_the_extension">拡張機能を書く</h2>
+
+<p>新しいディレクトリーを作成し、そのディレクトリーに移動します。</p>
+
+<pre class="brush: bash">mkdir beastify
+cd beastify</pre>
+
+<h3 id="manifest.json" name="manifest.json">manifest.json</h3>
+
+<p>それでは、"beastify" ディレクトリー配下に新しいファイル "manifest.json" を作成します。以下の内容を書き込んで保存してください。</p>
+
+<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span>
+
+ <span class="key token">"manifest_version":</span> <span class="number token">2</span><span class="punctuation token">,</span>
+ <span class="key token">"name":</span> <span class="string token">"Beastify"</span><span class="punctuation token">,</span>
+ <span class="key token">"version":</span> <span class="string token">"1.0"</span><span class="punctuation token">,</span>
+
+ <span class="key token">"description":</span> <span class="string token">"Adds a browser action icon to the toolbar. Click the button to choose a beast. The active tab's body content is then replaced with a picture of the chosen beast. See https://developer.mozilla.org/ja/Add-ons/WebExtensions/Examples#beastify"</span><span class="punctuation token">,</span>
+ <span class="key token">"homepage_url":</span> <span class="string token">"https://github.com/mdn/webextensions-examples/tree/master/beastify"</span><span class="punctuation token">,</span>
+ <span class="key token">"icons":</span> <span class="punctuation token">{</span>
+ <span class="key token">"48":</span> <span class="string token">"icons/beasts-48.png"</span>
+ <span class="punctuation token">}</span><span class="punctuation token">,</span>
+
+ <span class="key token">"permissions":</span> <span class="punctuation token">[</span>
+ <span class="string token">"activeTab"</span>
+ <span class="punctuation token">]</span><span class="punctuation token">,</span>
+
+ <span class="key token">"browser_action":</span> <span class="punctuation token">{</span>
+ <span class="key token">"default_icon":</span> <span class="string token">"icons/beasts-32.png"</span><span class="punctuation token">,</span>
+ <span class="key token">"default_title":</span> <span class="string token">"Beastify"</span><span class="punctuation token">,</span>
+ <span class="key token">"default_popup":</span> <span class="string token">"popup/choose_beast.html"</span>
+ <span class="punctuation token">}</span><span class="punctuation token">,</span>
+
+ <span class="key token">"web_accessible_resources":</span> <span class="punctuation token">[</span>
+ <span class="string token">"beasts/frog.jpg"</span><span class="punctuation token">,</span>
+ <span class="string token">"beasts/turtle.jpg"</span><span class="punctuation token">,</span>
+ <span class="string token">"beasts/snake.jpg"</span>
+ <span class="punctuation token">]</span>
+
+<span class="punctuation token">}</span></code></pre>
+
+<ul>
+ <li>最初の 3 つのキー <code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/manifest_version">manifest_version</a></code>、<code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/name">name</a></code>、<code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/version">version</a></code> は必須であり、拡張機能の基本的なメタデータを指定します</li>
+ <li><code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/description">description</a></code> と <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url">homepage_url</a></code> は省略可能ですが、設定しておくことをお勧めします。これは拡張機能についての役立つ情報となります</li>
+ <li><code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/icons">icons</a></code> は省略可能ですが、設定しておくことをお勧めします。この値は拡張機能のアイコンを指定するものであり、アイコンはアドオンマネージャーに表示されます</li>
+ <li><code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> は拡張機能に必要なパーミッションのリストです。ここでは <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission"><code>activeTab</code> パーミッション </a> を要請しています</li>
+ <li><code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> はツールバーのボタンを指定するものです。ここでは 3 つの情報を指定しています
+ <ul>
+ <li><code>default_icon</code> ではボタンのアイコンを指定します(必須項目)</li>
+ <li><code>default_title</code> ではツールチップの文字列を指定します(省略可)</li>
+ <li><code>default_popup</code> ではユーザーがボタンをクリックした際に表示されるポップアップを指定します。今回はポップアップを表示させたいので、拡張機能に含める HTML ファイルを <code>defualt_popup</code> キーで指定しています</li>
+ </ul>
+ </li>
+ <li><code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a></code> はウェブページからアクセスしたいファイルのリストです。この拡張機能では、拡張機能に同梱した画像でウェブページを置き換えるため、画像をウェブページからアクセス可能にする必要があります</li>
+</ul>
+
+<p>パスはすべて manifest.json 自身からの相対パスで指定することに注意します。</p>
+
+<h3 id="The_icon" name="The_icon">アイコン</h3>
+
+<p>拡張機能にはアイコンを用意すると良いでしょう。このアイコンは、アドオンマネージャーで拡張機能のリスト横に表示されます(アドオンマネージャーは "about:addons" の URL から確認できます)。今回の manifest.json では "icons/beasts-48.png" を用意していると宣言しています。</p>
+
+<p>"icons" ディレクトリーを作成して、そこにアイコンを "beasts-48.png" という名前で 保存します。必要であれば <a class="external external-icon" href="https://github.com/mdn/webextensions-examples/blob/master/beastify/icons/beasts-48.png">サンプルで使用しているアイコン </a> を利用しても構いません(このアイコンは <a href="https://www.iconfinder.com/iconsets/free-retina-icon-set">Aha-Soft’s Free Retina iconset</a> から引用したものであり、該当する <a href="http://www.aha-soft.com/free-icons/free-retina-icon-set/">ライセンス </a> の下で使用しています)。</p>
+
+<p>アイコンを自分で用意する場合 48x48 ピクセルのサイズにする必要があります。高解像度のディスプレイに 96x96 ピクセルのアイコンを表示させたい場合は、manifest.json の <code>icons</code> オブジェクトに <code>96</code> というプロパティで設定してください。</p>
+
+<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"icons":</span> <span class="punctuation token">{</span>
+ <span class="key token">"48":</span> <span class="string token">"icons/beasts-48.png"</span><span class="punctuation token">,</span>
+ <span class="key token">"96":</span> <span class="string token">"icons/beasts-96.png"</span>
+<span class="punctuation token">}</span></code></pre>
+
+<h3 id="The_toolbar_button" name="The_toolbar_button">ツールバーのボタン</h3>
+
+<p>ツールバーのボタンにもアイコンが必要です。今回の manifest.json では "icons/beasts-32.png" を用意していると宣言しています。</p>
+
+<p>アイコンを "beasts-32.png" という名前で "icons" ディレクトリー内に保存します。必要であれば <a class="external external-icon" href="https://github.com/mdn/webextensions-examples/blob/master/beastify/icons/beasts-32.png">サンプルで使用しているアイコン </a> を利用しても構いません(このアイコンは <a href="http://www.iconbeast.com/free">IconBeast Lite のアイコン集</a> から引用したものであり、該当する <a href="http://www.iconbeast.com/faq/">ライセンス </a> の下で使用しています)。</p>
+
+<p>ポップアップを使わない場合、ユーザーがボタンをクリックした際にはクリックイベントが拡張機能に向けて送出されます。ポップアップを使う場合にはクリックイベントは送出されず、代わりにポップアップが開きます。今回はポップアップが必要なので、次の項で作成しましょう。</p>
+
+<h3 id="The_popup" name="The_popup">ポップアップ</h3>
+
+<p>今回のポップアップでは、ユーザーが 3 つの動物から 1 つ選択できる機能を持つこととします。</p>
+
+<p>拡張機能のルートディレクトリー配下に "popup" というディレクトリーを新しく作成します。ここにはポップアップ用のコードを保管します。ポップアップは次の 3 ファイルから構成されます。</p>
+
+<ul>
+ <li><strong><code>choose_beast.html</code></strong> パネルのコンテンツを定義する</li>
+ <li><strong><code>choose_beast.css</code></strong> コンテンツのスタイルを指定する</li>
+ <li><strong><code>choose_beast.js</code></strong> アクティブなタブでコンテンツスクリプトを実行し、ユーザーの選択を処理する</li>
+</ul>
+
+<pre class="brush: bash line-numbers language-bash"><code class="language-bash">mkdir popup
+cd popup
+touch choose_beast.html choose_beast.css choose_beast.js</code></pre>
+
+<h4 id="choose_beast.html" name="choose_beast.html">choose_beast.html</h4>
+
+<p>HTML ファイルは次のようになります。</p>
+
+<pre class="brush: html line-numbers language-html"><code class="language-html"><span class="doctype token">&lt;!DOCTYPE html&gt;</span>
+
+<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>html</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>head</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>meta</span> <span class="attr-name token">charset</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>utf-8<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>link</span> <span class="attr-name token">rel</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>stylesheet<span class="punctuation token">"</span></span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>choose_beast.css<span class="punctuation token">"</span></span><span class="punctuation token">/&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>head</span><span class="punctuation token">&gt;</span></span>
+
+<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>body</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">id</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>popup-content<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">class</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>button beast<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Frog<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">class</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>button beast<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Turtle<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">class</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>button beast<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Snake<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">class</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>button reset<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Reset<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">id</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>error-content<span class="punctuation token">"</span></span> <span class="attr-name token">class</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>hidden<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>p</span><span class="punctuation token">&gt;</span></span>Can't beastify this web page.<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>p</span><span class="punctuation token">&gt;</span></span><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>p</span><span class="punctuation token">&gt;</span></span>Try a different page.<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>p</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>script</span> <span class="attr-name token">src</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>choose_beast.js<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>script</span><span class="punctuation token">&gt;</span></span>
+<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>body</span><span class="punctuation token">&gt;</span></span>
+
+<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>html</span><span class="punctuation token">&gt;</span></span></code></pre>
+
+<p><code>"popup-content"</code> という ID の <code><a href="https://developer.mozilla.org/ja/docs/Web/HTML/Element/div">&lt;div&gt;</a></code> 要素があって、動物の選択をする要素が入っています。<code>"error-content"</code> という ID の <code>&lt;div&gt;</code> 要素と <code>"hidden"</code> クラスもあります。それはポップアップの初期化に問題がある場合に使います。</p>
+
+<p>通常のウェブページと同じように CSS と JS ファイルを読み込んでいることに注意してください。</p>
+
+<h4 id="choose_beast.css" name="choose_beast.css">choose_beast.css</h4>
+
+<p>この CSS ではポップアップのサイズを固定し、3 つの選択肢がポップアップを埋めるようにし、基本的なスタイリングを施しています。また要素を <code>class="hidden"</code> で隠してもいます: つまり <code>"error-content"</code> <code>&lt;div&gt;</code> は既定では隠れています。</p>
+
+<pre class="brush: css line-numbers language-css"><code class="language-css"><span class="selector token">html, body </span><span class="punctuation token">{</span>
+ <span class="property token">width</span><span class="punctuation token">:</span> <span class="number token">100</span>px<span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="selector token"><span class="class token">.hidden</span> </span><span class="punctuation token">{</span>
+ <span class="property token">display</span><span class="punctuation token">:</span> none<span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="selector token"><span class="class token">.button</span> </span><span class="punctuation token">{</span>
+ <span class="property token">margin</span><span class="punctuation token">:</span> <span class="number token">3%</span> auto<span class="punctuation token">;</span>
+ <span class="property token">padding</span><span class="punctuation token">:</span> <span class="number token">4</span>px<span class="punctuation token">;</span>
+ <span class="property token">text-align</span><span class="punctuation token">:</span> center<span class="punctuation token">;</span>
+ <span class="property token">font-size</span><span class="punctuation token">:</span> <span class="number token">1.5</span>em<span class="punctuation token">;</span>
+ <span class="property token">cursor</span><span class="punctuation token">:</span> pointer<span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="selector token"><span class="class token">.beast</span><span class="pseudo-class token">:hover</span> </span><span class="punctuation token">{</span>
+ <span class="property token">background-color</span><span class="punctuation token">:</span> <span class="hexcode token">#CFF2F2</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="selector token"><span class="class token">.beast</span> </span><span class="punctuation token">{</span>
+ <span class="property token">background-color</span><span class="punctuation token">:</span> <span class="hexcode token">#E5F2F2</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="selector token"><span class="class token">.reset</span> </span><span class="punctuation token">{</span>
+ <span class="property token">background-color</span><span class="punctuation token">:</span> <span class="hexcode token">#FBFBC9</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="selector token"><span class="class token">.reset</span><span class="pseudo-class token">:hover</span> </span><span class="punctuation token">{</span>
+ <span class="property token">background-color</span><span class="punctuation token">:</span> <span class="hexcode token">#EAEA9D</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<h4 id="choose_beast.js" name="choose_beast.js">choose_beast.js</h4>
+
+<p>これがポップアップ用の JavaScript です:</p>
+
+<pre class="brush: js line-numbers language-js"><code>
+<span class="comment token">/**
+ * ページのすべてを隠す CSS、ただし
+ * "beastify-image" クラスを持つ要素は除く
+ */</span>
+<span class="keyword token">const</span> hidePage <span class="operator token">=</span> <span class="template-string token"><span class="string token">`body &gt; :not(.beastify-image) {
+ display: none;
+ }`</span></span><span class="punctuation token">;</span>
+
+<span class="comment token">/**
+ * ボタンクリックをリッスンし、ページ内のコンテンツスクリプトに
+ * 適切なメッセージを送る
+ */</span>
+<span class="keyword token">function</span> <span class="function token">listenForClicks</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ document<span class="punctuation token">.</span><span class="function token">addEventListener</span><span class="punctuation token">(</span><span class="string token">"click"</span><span class="punctuation token">,</span> <span class="punctuation token">(</span>e<span class="punctuation token">)</span> <span class="operator token">=</span><span class="operator token">&gt;</span> <span class="punctuation token">{</span>
+
+ <span class="comment token">/**
+ * 動物の名前を受け取って、対応する画像の URL を取得する
+ */</span>
+ <span class="keyword token">function</span> <span class="function token">beastNameToURL</span><span class="punctuation token">(</span>beastName<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">switch</span> <span class="punctuation token">(</span>beastName<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">case</span> <span class="string token">"Frog"</span><span class="punctuation token">:</span>
+ <span class="keyword token">return</span> browser<span class="punctuation token">.</span>extension<span class="punctuation token">.</span><span class="function token">getURL</span><span class="punctuation token">(</span><span class="string token">"beasts/frog.jpg"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">case</span> <span class="string token">"Snake"</span><span class="punctuation token">:</span>
+ <span class="keyword token">return</span> browser<span class="punctuation token">.</span>extension<span class="punctuation token">.</span><span class="function token">getURL</span><span class="punctuation token">(</span><span class="string token">"beasts/snake.jpg"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">case</span> <span class="string token">"Turtle"</span><span class="punctuation token">:</span>
+ <span class="keyword token">return</span> browser<span class="punctuation token">.</span>extension<span class="punctuation token">.</span><span class="function token">getURL</span><span class="punctuation token">(</span><span class="string token">"beasts/turtle.jpg"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span>
+
+ <span class="comment token">/**
+ * アクティブなタブにページを隠す CSS を挿入して
+ * 動物の URL を取得し、
+ * アクティブなタブのコンテンツスクリプトに "beastify" メッセージを送る
+ */</span>
+ <span class="keyword token">function</span> <span class="function token">beastify</span><span class="punctuation token">(</span>tabs<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">insertCSS</span><span class="punctuation token">(</span><span class="punctuation token">{</span>code<span class="punctuation token">:</span> hidePage<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="operator token">=</span><span class="operator token">&gt;</span> <span class="punctuation token">{</span>
+ <span class="keyword token">let</span> url <span class="operator token">=</span> <span class="function token">beastNameToURL</span><span class="punctuation token">(</span>e<span class="punctuation token">.</span>target<span class="punctuation token">.</span>textContent<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">sendMessage</span><span class="punctuation token">(</span>tabs<span class="punctuation token">[</span><span class="number token">0</span><span class="punctuation token">]</span><span class="punctuation token">.</span>id<span class="punctuation token">,</span> <span class="punctuation token">{</span>
+ command<span class="punctuation token">:</span> <span class="string token">"beastify"</span><span class="punctuation token">,</span>
+ beastURL<span class="punctuation token">:</span> url
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ <span class="comment token">/**
+ * アクティブなタブからページを隠す CSS を削除し、
+ * アクティブなタブのコンテンツスクリプトに "reset" メッセージを送る
+ */</span>
+ <span class="keyword token">function</span> <span class="function token">reset</span><span class="punctuation token">(</span>tabs<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">removeCSS</span><span class="punctuation token">(</span><span class="punctuation token">{</span>code<span class="punctuation token">:</span> hidePage<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="operator token">=</span><span class="operator token">&gt;</span> <span class="punctuation token">{</span>
+ browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">sendMessage</span><span class="punctuation token">(</span>tabs<span class="punctuation token">[</span><span class="number token">0</span><span class="punctuation token">]</span><span class="punctuation token">.</span>id<span class="punctuation token">,</span> <span class="punctuation token">{</span>
+ command<span class="punctuation token">:</span> <span class="string token">"reset"</span><span class="punctuation token">,</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ <span class="comment token">/**
+ * ただコンソールにエラーをログ出力する
+ */</span>
+ <span class="keyword token">function</span> <span class="function token">reportError</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span><span class="template-string token"><span class="string token">`Could not beastify: </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>error<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token">`</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ <span class="comment token">/**
+ * アクティブなタブを取得し、
+ * "beastify()" か "reset()" を適切に呼び出す
+ */</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>e<span class="punctuation token">.</span>target<span class="punctuation token">.</span>classList<span class="punctuation token">.</span><span class="function token">contains</span><span class="punctuation token">(</span><span class="string token">"beast"</span><span class="punctuation token">)</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">query</span><span class="punctuation token">(</span><span class="punctuation token">{</span>active<span class="punctuation token">:</span> <span class="keyword token">true</span><span class="punctuation token">,</span> currentWindow<span class="punctuation token">:</span> <span class="keyword token">true</span><span class="punctuation token">}</span><span class="punctuation token">)</span>
+ <span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>beastify<span class="punctuation token">)</span>
+ <span class="punctuation token">.</span><span class="keyword token">catch</span><span class="punctuation token">(</span>reportError<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="keyword token">else</span> <span class="keyword token">if</span> <span class="punctuation token">(</span>e<span class="punctuation token">.</span>target<span class="punctuation token">.</span>classList<span class="punctuation token">.</span><span class="function token">contains</span><span class="punctuation token">(</span><span class="string token">"reset"</span><span class="punctuation token">)</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">query</span><span class="punctuation token">(</span><span class="punctuation token">{</span>active<span class="punctuation token">:</span> <span class="keyword token">true</span><span class="punctuation token">,</span> currentWindow<span class="punctuation token">:</span> <span class="keyword token">true</span><span class="punctuation token">}</span><span class="punctuation token">)</span>
+ <span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>reset<span class="punctuation token">)</span>
+ <span class="punctuation token">.</span><span class="keyword token">catch</span><span class="punctuation token">(</span>reportError<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="comment token">/**
+ * スクリプトにエラーがあった。
+ * ポップアップのエラーメッセージを表示し、通常の UI を隠す。
+ */</span>
+<span class="keyword token">function</span> <span class="function token">reportExecuteScriptError</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ document<span class="punctuation token">.</span><span class="function token">querySelector</span><span class="punctuation token">(</span><span class="string token">"#popup-content"</span><span class="punctuation token">)</span><span class="punctuation token">.</span>classList<span class="punctuation token">.</span><span class="function token">add</span><span class="punctuation token">(</span><span class="string token">"hidden"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ document<span class="punctuation token">.</span><span class="function token">querySelector</span><span class="punctuation token">(</span><span class="string token">"#error-content"</span><span class="punctuation token">)</span><span class="punctuation token">.</span>classList<span class="punctuation token">.</span><span class="function token">remove</span><span class="punctuation token">(</span><span class="string token">"hidden"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span><span class="template-string token"><span class="string token">`Failed to execute beastify content script: </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>error<span class="punctuation token">.</span>message<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token">`</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="comment token">/**
+ * ポップアップを読み込んだ時、コンテンツスクリプトをアクティブなタブに挿入し、
+ * クリックハンドラーを追加する。
+ * スクリプトの挿入ができない場合、エラー処理をする。
+ */</span>
+browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">executeScript</span><span class="punctuation token">(</span><span class="punctuation token">{</span>file<span class="punctuation token">:</span> <span class="string token">"/content_scripts/beastify.js"</span><span class="punctuation token">}</span><span class="punctuation token">)</span>
+<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>listenForClicks<span class="punctuation token">)</span>
+<span class="punctuation token">.</span><span class="keyword token">catch</span><span class="punctuation token">(</span>reportExecuteScriptError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>開始するのは 96行です。ポップアップスクリプトはポップアップが読み込まれ次第、アクティブなタブのコンテンツスクリプトを実行し、その手段は <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">browser.tabs.executeScript()</a></code> API です。コンテンツスクリプトの実行が成功したら、タブが閉じられるかユーザーが別のページに移動するまで、コンテンツスクリプトがページにロードされたままになります。</p>
+
+<p><code>browser.tabs.executeScript()</code> の呼び出しがよく失敗する理由は、コンテンツスクリプトをすべてのページでは実行できないことです。例えば、about:debugging のような権限のあるブラウザーページでは実行できませんし、<a href="https://addons.mozilla.org/">addons.mozilla.org</a> ドメイン内のページでも実行できません。失敗した場合、<code>reportExecuteScriptError()</code> は <code>"popup-content"</code> <code>&lt;div&gt;</code> を隠して、<code>"error-content"</code> <code>&lt;div&gt;</code> を表示し、エラーを <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Debugging">console</a> にログ出力します。</p>
+
+<p>コンテンツスクリプトの実行が成功したら、<code>listenForClicks()</code> を呼び出します。これはポップアップのクリックをリッスンします。</p>
+
+<ul>
+ <li><code>class="beast"</code> の付いたボタンがクリックされたら、<code>beastify()</code> を呼び出す</li>
+ <li><code>class="reset"</code> の付いたボタンがクリックされたら、<code>reset()</code> を呼び出す</li>
+</ul>
+
+<p><code>beastify()</code> 関数は次の 3 つを行います:</p>
+
+<ul>
+ <li>特定の動物画像を指す URL をボタンクリックに割り当てる</li>
+ <li>CSS を挿入してページの全コンテンツを隠し、その手段は <code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/tabs/insertCSS">browser.tabs.insertCSS()</a></code> API</li>
+ <li>コンテンツスクリプトに "beastify" 送り、その手段は <code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage">browser.tabs.sendMessage()</a></code> API。ページを動物化するか尋ねて、動物画像への URL を渡す</li>
+</ul>
+
+<p><code>reset()</code> 関数は動物化を取り消す:</p>
+
+<ul>
+ <li>追加した CSS を削除し、その手段は <code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/tabs/removeCSS">browser.tabs.removeCSS()</a></code> API</li>
+ <li>コンテンツスクリプトにページをリセットする "reset" メッセージを送る</li>
+</ul>
+
+<h3 id="The_content_script" name="The_content_script">コンテンツスクリプト</h3>
+
+<p>拡張機能のルートディレクトリー配下に "content_scripts" というディレクトリーを新しく作成します。続いてそこに "beastify.js" という名前のファイルを作成し、下記のスクリプトを記述します。</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="comment token">/**
+ * グローバルなガード変数をチェック、設定する。
+ * コンテンツスクリプトが再び同じページに挿入された場合、
+ * 次は何もしない。
+ */</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>window<span class="punctuation token">.</span>hasRun<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">return</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ window<span class="punctuation token">.</span>hasRun <span class="operator token">=</span> <span class="keyword token">true</span><span class="punctuation token">;</span>
+
+ <span class="comment token">/**
+ * 動物の画像の URL を受け取り、既存の動物をすべて削除し、次に
+ * 画像を指す IMG 要素の作成・スタイル適用を行い、
+ * 作成したノードをドキュメント内に挿入する
+ */</span>
+ <span class="keyword token">function</span> <span class="function token">insertBeast</span><span class="punctuation token">(</span>beastURL<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="function token">removeExistingBeasts</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">let</span> beastImage <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">createElement</span><span class="punctuation token">(</span><span class="string token">"img"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ beastImage<span class="punctuation token">.</span><span class="function token">setAttribute</span><span class="punctuation token">(</span><span class="string token">"src"</span><span class="punctuation token">,</span> beastURL<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ beastImage<span class="punctuation token">.</span>style<span class="punctuation token">.</span>height <span class="operator token">=</span> <span class="string token">"100vh"</span><span class="punctuation token">;</span>
+ beastImage<span class="punctuation token">.</span>className <span class="operator token">=</span> <span class="string token">"beastify-image"</span><span class="punctuation token">;</span>
+ document<span class="punctuation token">.</span>body<span class="punctuation token">.</span><span class="function token">appendChild</span><span class="punctuation token">(</span>beastImage<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ <span class="comment token">/**
+ * ページからすべての動物を削除する
+ */</span>
+ <span class="keyword token">function</span> <span class="function token">removeExistingBeasts</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">let</span> existingBeasts <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">querySelectorAll</span><span class="punctuation token">(</span><span class="string token">".beastify-image"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="keyword token">let</span> beast <span class="keyword token">of</span> existingBeasts<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ beast<span class="punctuation token">.</span><span class="function token">remove</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span>
+
+ <span class="comment token">/**
+ * バックグラウンドスクリプトからのメッセージをリッスンし、
+ * "beastify()" か "reset()" を呼び出す。
+ */</span>
+ browser<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span>onMessage<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="punctuation token">(</span>message<span class="punctuation token">)</span> <span class="operator token">=</span><span class="operator token">&gt;</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>message<span class="punctuation token">.</span>command <span class="operator token">===</span> <span class="string token">"beastify"</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="function token">insertBeast</span><span class="punctuation token">(</span>message<span class="punctuation token">.</span>beastURL<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="keyword token">if</span> <span class="punctuation token">(</span>message<span class="punctuation token">.</span>command <span class="operator token">===</span> <span class="string token">"reset"</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="function token">removeExistingBeasts</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>このコンテンツスクリプトが最初にすることは、グローバル変数の <code>window.hasRun</code> のチェックです: セットされていればスクリプトは早くリターンし、そうでなければ <code>window.hasRun</code> をセットして処理し続けます。こうする理由は、ユーザーがポップアップを開くたびに、ポップアップはアクティブなタブのコンテンツスクリプトを実行して、そのために 1 つのタブに複数の実行スクリプトのインスタンスができてしまいます。これが起きると、最初のインスタンスだけが処理するのを確かめる必要があります。</p>
+
+<p>その次に、始まる場所は 40行で、ここでコンテンツスクリプトはポップアップからのメッセージをリッスンし、その手段は <code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/runtime/onMessage">browser.runtime.onMessage</a></code> API です。上で見たように、ポップアップスクリプトは 2種類の異なるメッセージを送ります: "beastify" と "reset"</p>
+
+<ul>
+ <li>メッセージが "beastify" なら、動物画像を指す URL が含まれるはずです。以前の "beastify" 呼び出しで追加された動物をすべて削除して、<code><a href="https://developer.mozilla.org/ja/docs/Web/HTML/Element/img">&lt;img&gt;</a></code> 要素を作成、追加して、その <code>src</code> 属性に動物の URL をセットします。</li>
+ <li>メッセージが "reset" なら、ただ追加された動物をすべて削除します。</li>
+</ul>
+
+<h3 id="The_beasts" name="The_beasts">動物</h3>
+
+<p>最後に、動物の画像を用意しておく必要があります。</p>
+
+<p>拡張機能のルートディレクトリー配下に   "beasts" という名前のディレクトリーを新しく作成し、その中に 3 つの画像を適切な名前で保存します。画像は <a href="https://github.com/mdn/webextensions-examples/tree/master/beastify/beasts">GitHub リポジトリ </a> から、またはここからでも取得できます。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/11459/frog.jpg" style="display: inline-block; height: 200px; margin: 20px; width: 200px;"><img alt="" src="https://mdn.mozillademos.org/files/11461/snake.jpg" style="display: inline-block; height: 200px; margin: 20px; width: 200px;"><img alt="" src="https://mdn.mozillademos.org/files/11463/turtle.jpg" style="display: inline-block; height: 200px; margin: 20px; width: 200px;"></p>
+
+<h2 id="Testing_it_out" name="Testing_it_out">動かしてみよう</h2>
+
+<p>正しいファイルが正しい場所にあるかどうか、もう一度確認してください。</p>
+
+<pre class="line-numbers language-html"><code class="language-html">beastify/
+
+ beasts/
+ frog.jpg
+ snake.jpg
+ turtle.jpg
+
+ content_scripts/
+ beastify.js
+
+ icons/
+ beasts-32.png
+ beasts-48.png
+
+ popup/
+ choose_beast.css
+ choose_beast.html
+ choose_beast.js
+
+ manifest.json</code></pre>
+
+<p>Firefox 45 以降では、拡張機能をディスクから一時的にインストールできるようになりました。</p>
+
+<p>Firefox で "about:debugging" を開き、"一時的なアドオンを読み込む" をクリックし、自分で作成した manifest.json ファイルを選択してください。拡張機能のアイコンが Firefox のツールバーに表示されているはずです。</p>
+
+<p>{{EmbedYouTube("sAM78GU4P34")}}</p>
+
+<p>適当なウェブページを開き、拡張機能のアイコンをクリックし、動物を選択してください。するとウェブページが動物の画像に置き換わるはずです。</p>
+
+<p>{{EmbedYouTube("YMQXyAQSiE8")}}</p>
+
+<h2 id="Developing_from_the_command_line" name="Developing_from_the_command_line">コマンドラインから開発する</h2>
+
+<p>仮インストールを <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> ツールを用いて自動化できます。次を試してください:</p>
+
+<pre class="brush: bash line-numbers language-bash"><code class="language-bash">cd beastify
+web-ext run</code></pre>
+</div>
diff --git a/files/ja/mozilla/add-ons/webextensions/what_are_webextensions/index.html b/files/ja/mozilla/add-ons/webextensions/what_are_webextensions/index.html
new file mode 100644
index 0000000000..18f9ae7071
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/what_are_webextensions/index.html
@@ -0,0 +1,57 @@
+---
+title: 拡張機能とは何か?
+slug: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions
+tags:
+ - Extensions
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions
+---
+<div>{{AddonSidebar}}</div>
+
+<p>拡張機能はウェブブラウザーに機能を追加します。標準化されている web 技術(JavaScript / HTML / CSS)に専用の JavaScript API をいくつか加えて書かれます。とりわけ、拡張機能はブラウザーに新しい機能を追加したり、特定のウェブサイトが持つ見た目やコンテンツを変更したりできます。</p>
+
+<p><strong>ウェブサイト全体の改良</strong>: アドオンを使ってブラウザー内の機能やウェブサイトからの情報を届けます。ユーザーが訪れたページの詳細を集めるようにできて、サービスを向上させることができます。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15808/Amazon_add_on.png"></p>
+
+<p>例: <a href="https://addons.mozilla.org/en-US/firefox/addon/amazon-browser-bar/">Amazon Assistant for Firefox</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/onenote-clipper/">OneNote Web Clipper</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/grammarly-1/">Grammarly for Firefox</a></p>
+
+<p><strong>ユーザーの個性を見せる</strong>: ブラウザー機能拡張はユーザーによってブラウズされるページコンテンツを操作できます。例えば、ユーザーのお気に入りのロゴや写真を、訪れるすべてのページの背景として追加できます。拡張機能は Firefox UI の見た目を更新する力を与えることもできます (スタンドアローンの <a href="https://developer.mozilla.org/ja/Add-ons/Themes/Theme_concepts">テーマアドオン</a>を使っても同様に Firefox UI を更新できます)。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15809/MyWeb_New_Tab_add_on.png" style="height: 398px; width: 540px;"></p>
+
+<p>例: <a href="https://addons.mozilla.org/en-US/firefox/addon/myweb-new-tab/">MyWeb New Tab</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/tabliss/">Tabliss</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/vivaldifox/">VivaldiFox</a></p>
+
+<p><strong>ウェブページのコンテンツを追加/削除</strong>: ウェブページで触れられた国や都市への旅行ガイドへのアクセスを提供してウェブページのしつこい広告をユーザーがブロックするのを補助したり、読む体験の一貫性を提供するためにページの再フォーマットをしたいかもしれません。ページの HTML と CSS にアクセスして更新する力を持って、拡張機能はユーザーが見たい方法でウェブを見るのを助けることができます。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15807/ublock_origin_add_on.png" style="height: 480px; width: 640px;"></p>
+
+<p>例: <a href="https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/">uBlock Origin</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/reader/">Reader</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/toolbox-google-play-store/">Toolbox for Google Play Store™</a></p>
+
+<p><strong>ツールや新しいブラウズ機能を追加</strong>: タスクボードに新しい機能を追加したり、URL やハイパーリンクやページのテキストから QR コード画像を生成したりします。<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions">WebExtensions APIs</a> の柔軟な UI オプションや力を得て、ブラウザーに新機能を簡単に追加できます。そしてほぼあらゆるウェブサイトの機能を改良できて、それはあなたのウェブサイトだけとは限りません。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15806/QR_Code_Image_Generator_add_on.png"></p>
+
+<p>例: <a href="https://addons.mozilla.org/en-US/firefox/addon/swimlanes-for-trello/">Swimlanes for Trello</a> and <a href="https://addons.mozilla.org/en-US/firefox/addon/tomato-clock/">Tomato Clock</a></p>
+
+<p><strong>ゲーム</strong>: オフラインで遊べるような伝統的なコンピューターゲームや、新しいゲームの可能性を探検できます。例えば、日々のブラウジングにゲームを取り込むなど。</p>
+
+<p> <img alt="" src="https://mdn.mozillademos.org/files/15805/Asteroids_in_Popup_add_on%20.png" style="height: 438px; width: 700px;"></p>
+
+<p>例: <a href="https://addons.mozilla.org/en-US/firefox/addon/asteroids-in-popup/">Asteroids in Popup</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/solitaire-card-game-new-tab/">Solitaire Card Game New Tab</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/2048-prime/">2048 Prime</a>.</p>
+
+<p><strong>開発ツールを追加</strong>: あなたのビジネスに沿った開発ツールを提供したり、共有しておきたい便利なテクニックやウェブ開発へのアプローチを提供できます。いずれの方法でも、開発者ツールバーに新規タブを追加することで、組み込みの Firefox 開発ツールを改良できます。<img alt="" src="https://mdn.mozillademos.org/files/15804/aXe_Developer_Tools_add_on.png" style="height: 261px; width: 700px;"></p>
+
+<p>例: <a href="https://addons.mozilla.org/en-US/firefox/addon/web-developer/">Web Developer</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/react-devtools/">Web React Developer Tools</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/">aXe Developer Tools</a></p>
+
+<p>Firefox 用の拡張機能は <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions">WebExtensions APIs</a> を使って作成され、この API はクロスブラウザーで動作可能な拡張機能を開発するための技術です。この API の大半は、Google Chrome や Opera でサポートされている <a class="external external-icon" href="https://developer.chrome.com/extensions">extension API</a> と互換性があります。これらのブラウザー向けに書かれた拡張機能のほとんどは、少し<a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Porting_from_Google_Chrome">変更を加えるだけで</a> Firefox や Microsoft Edge でも動かせるようになります。この API は完全に<a href="https://developer.mozilla.org/ja/Firefox/Multiprocess_Firefox">マルチプロセス Firefox</a> にも対応しています。</p>
+
+<p>何かアイデアがあったり、レガシーアドオンを WebExtensions API に移植する手助けが必要な場合、ご連絡は <a class="external external-icon" href="https://mail.mozilla.org/listinfo/dev-addons">dev-addons メーリングリスト</a> や <a href="https://chat.mozilla.org/#/room/#addons:mozilla.org">Add-ons room</a> や <a href="https://wiki.mozilla.org/Matrix">Matrix</a> までお願いします。英語のサポートです。</p>
+
+<h2 id="Whats_next" name="What's_next">次のステップ</h2>
+
+<ul>
+ <li>シンプルな拡張機能を一通り作成するには、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension">初めての拡張機能</a>を参照してください。</li>
+ <li>拡張機能の構成については <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">拡張機能の中身</a>を参照してください。</li>
+ <li><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Examples">拡張機能サンプル</a>にある拡張機能のサンプルを動かしてみましょう。</li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/what_next_/index.html b/files/ja/mozilla/add-ons/webextensions/what_next_/index.html
new file mode 100644
index 0000000000..28e21dedca
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/what_next_/index.html
@@ -0,0 +1,60 @@
+---
+title: 次にどうするのか?
+slug: Mozilla/Add-ons/WebExtensions/What_next_
+tags:
+ - Beginner
+ - Extensions
+ - WebExtension
+translation_of: Mozilla/Add-ons/WebExtensions/What_next_
+---
+<div>{{AddonSidebar}}</div>
+
+<p>ブラウザー拡張機能のアイデアを実現化していく準備ができているでしょう。開発の旅に出る前に、いくつかの注意点を意識することはスムーズに旅をする上で価値があります。</p>
+
+<h2 id="Your_development_environment" name="Your_development_environment">開発環境</h2>
+
+<p>ブラウザー拡張機能を開発するためには、どんな特別な開発ツールや環境構築も必要ありません。テキストエディターだけで素晴らしいブラウザー拡張機能を作成することはいくらでも可能です。しかし、ウェブ用の開発で再利用したいツールと環境を持っている場合もあるでしょう。その場合は、いくつかのことを意識する必要があります。</p>
+
+<p>圧縮や難読化ツールを使用して最終コードを提出する場合には、<a href="#The_review_process">AMO レビュープロセス</a>にソースコードを提供する必要があります。また、使用するツール (圧縮、難読化、ビルド用) は、オープンソース (または無期限の無料提供) かつレビュー担当者のコンピューター上 (Windows、Mac、Linux) で実行可能である必要があります。残念ながらレビュー担当者は有償ツール、またはウェブベースのツールでは作業することができません。</p>
+
+<p><a href="/ja/Add-ons/Source_Code_Submission#About_build_tools">ビルドツールに関する詳細</a></p>
+
+<h2 id="Third-party_libraries" name="Third-party_libraries">サードパーティライブラリー</h2>
+
+<p>サードパーティライブラリーはブラウザー拡張機能に複雑な特徴や機能性を素早く追加するための優れた手段です。<a href="#The_review_process">AMO レビュープロセス</a>に拡張機能を提出する時、どんなサードパーティライブラリーが使用されているかも検討されます。効率的なレビューのため、サードパーティライブラリーは常に公式ウェブサイトやリポジトリーからダウンロードし、ライブラリーが圧縮されている場合はソースコードへのリンクを提供してください。サードパーティライブラリーはいかなる方法でも変更できないことに注意してください。</p>
+
+<p><a href="/ja/Add-ons/Source_Code_Submission">ソースコードの提出に関する詳細</a></p>
+
+<h2 id="The_Firefox_Add-on_Distribution_Agreement" name="The_Firefox_Add-on_Distribution_Agreement">Firefox アドオン配布同意事項</h2>
+
+<p>Firefox のリリース版、またはベータ版にインストールを行うために、拡張機能に署名する必要があります。署名は、addons.mozilla.org (AMO) で行われ、Firefox アドオン配布同意事項の条件に従います。この契約の目的は、Firefox ユーザーに対し、Firefox での体験を強化するような、十分にサポートされた高品質のアドオンを提供することにあります。</p>
+
+<p><a href="/Add-ons/AMO/Policy/Agreement">同意約内容を確認する</a></p>
+
+<p><a href="/ja/Add-ons/WebExtensions/Distribution">署名に関する詳細</a></p>
+
+<h2 id="The_review_process" name="The_review_process">レビュープロセス</h2>
+
+<p>署名のためにブラウザー拡張機能が提出されると、自動審査の対象となります。また、自動審査においてマニュアル審査が必要と判定された場合には、マニュアル審査の対象となる場合もあります。ブラウザー拡張機能は自動審査を通過するまで署名は行われず、マニュアル審査を通過しなかった場合に署名が取り消されることがあります。この審査の過程は厳密なガイドラインに従っているため、審査で問題になりそうな点を確認して回避することは簡単です。</p>
+
+<p><a href="/ja/Add-ons/AMO/Policy/Reviews">レビューポリシーとガイドラインに関する詳細</a></p>
+
+<h2 id="AMO_featured_browser_extensions" name="AMO_featured_browser_extensions">AMO のおすすめブラウザー拡張機能</h2>
+
+<p>AMO にブラウザー拡張機能を掲載することを選んだ場合、拡張機能は AMO のウェブサイト、Firefox ブラウザーのアドオンマネージャー、または Mozilla のウェブサイト上のいずれかの場所に表示されます。拡張機能がどのようにおすすめとして選ばれるかを取り上げたガイドラインの一覧を作成しました。これらのガイドラインに従うことで、拡張機能をおすすめされるための最高の機会を得ることになります。</p>
+
+<p><a href="/ja/Add-ons/AMO/Policy/Featured">アドオンのおすすめに関する詳細</a></p>
+
+<h2 id="Continue_your_learning_experience" name="Continue_your_learning_experience">学習体験を続ける</h2>
+
+<p>これまでの内容を知ったところで、今度はブラウザー拡張機能の開発について詳しく説明します。以下のセクションを確認してください:</p>
+
+<ul>
+ <li>ブラウザー拡張機能の裏にある基本的なコンセプトについて、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Using_the_JavaScript_APIs">JavaScript API</a> の使い方の詳細から説明します。</li>
+ <li>ブラウザー拡張機能で利用できる、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface">ユーザーインターフェイスコンポーネント</a> のガイド。</li>
+ <li>拡張機能の主な課題を達成する方法や、JavaScript API の使用方法に関するガイドのまとめ。</li>
+ <li>他のブラウザー拡張機能を Firefox に移行する方法に関する情報。</li>
+ <li>ブラウザー拡張機能の開発で使用できる Firefox 特有のワークフローの詳細について。</li>
+ <li>JavaScript API に関するリファレンスガイド。</li>
+ <li>マニフェストキーに関するリファレンスガイド。</li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.html b/files/ja/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.html
new file mode 100644
index 0000000000..daca995565
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.html
@@ -0,0 +1,199 @@
+---
+title: Bookmarks API を使う
+slug: Mozilla/Add-ons/WebExtensions/Work_with_the_Bookmarks_API
+tags:
+ - Add-ons
+ - Beginner
+ - Bookmarks
+ - Extensions
+ - How-to
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Work_with_the_Bookmarks_API
+---
+<p>{{AddonSidebar}}</p>
+
+<p>ブックマークにより、ユーザーはウェブページのリストを集めたり編集したりできて、お気に入りに簡単に戻ることができます。Bookmarks API を使って、拡張機能はユーザーができるのとほぼ同じ方法でブックマークを操作できます。</p>
+
+<h2 id="Permissions" name="Permissions">権限</h2>
+
+<p>Bookmarks API を利用するには、拡張機能の manifest.json ファイルで <code>"bookmarks"</code> 権限を要求する必要があります:</p>
+
+<pre class="brush: json">"permissions": [
+  "bookmarks"
+],</pre>
+
+<h2 id="Features" name="Features">機能</h2>
+
+<p>Bookmarks API は、拡張機能にとって、ユーザーがブックマークとその機能でできることを可能にします:</p>
+
+<ul>
+ <li>基本的なブックマーク項目の操作:
+ <ul>
+ <li>追加 ({{WebExtAPIRef("bookmarks.create")}}).</li>
+ <li>取得 ({{WebExtAPIRef("bookmarks.get")}}).</li>
+ <li>更新 ({{WebExtAPIRef("bookmarks.update")}}).</li>
+ <li>移動 ({{WebExtAPIRef("bookmarks.move")}}).</li>
+ <li>削除 ({{WebExtAPIRef("bookmarks.remove")}}).</li>
+ <li>検索 ({{WebExtAPIRef("bookmarks.search")}}).</li>
+ </ul>
+ </li>
+ <li>最近追加したブックマークの取得 ({{WebExtAPIRef("bookmarks.getRecent")}}).</li>
+ <li>ブックマークのフォルダーツリー操作:
+ <ul>
+ <li>ツリー情報取得 ({{WebExtAPIRef("bookmarks.getTree")}}, {{WebExtAPIRef("bookmarks.getChildren")}}, {{WebExtAPIRef("bookmarks.getSubTree")}}).</li>
+ <li>ブランチの追加 ({{WebExtAPIRef("bookmarks.create")}}).</li>
+ <li>ノードの削除 ({{WebExtAPIRef("bookmarks.removeTree")}}).</li>
+ <li>ノードの移動 ({{WebExtAPIRef("bookmarks.move")}}).</li>
+ </ul>
+ </li>
+ <li>ブックマーク (やブックマークツリーフォルダー) のイベント監視:
+ <ul>
+ <li>追加 ({{WebExtAPIRef("bookmarks.onCreated")}}).</li>
+ <li>変更 ({{WebExtAPIRef("bookmarks.onChanged")}}).</li>
+ <li>移動 ({{WebExtAPIRef("bookmarks.onMoved")}}.</li>
+ <li>並び替え ({{WebExtAPIRef("bookmarks.onChildrenReordered")}}).</li>
+ <li>削除 ({{WebExtAPIRef("bookmarks.onRemoved")}}).</li>
+ </ul>
+ </li>
+ <li>ブックマークインポートの監視、これは他のブックマーク処理をブックマークのインポートが進行する間サスペンドするのに使われます:
+ <ul>
+ <li>インポート開始 ({{WebExtAPIRef("bookmarks.onImportBegan")}}).</li>
+ <li>インポート終了 ({{WebExtAPIRef("bookmarks.onImportEnded")}}).</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Example_walkthrough" name="Example_walkthrough">実例を一通り見る</h2>
+
+<p>Bookmarks API の使い方を理解するため、<a href="https://github.com/mdn/webextensions-examples/tree/master/bookmark-it">bookmark-it</a> の例を見てみましょう。この例ではツールバーアイコン ({{WebExtAPIRef("browserAction")}}) を追加し、これがクリックされたときに、ブックマークから現在のページを追加や削除します。ページが他の方法でブックマークされている(または削除されている)場合、ページのブックマーク状態を表示するようにアイコンが更新されます。</p>
+
+<p>この動画で拡張機能を表示します:</p>
+
+<p>{{EmbedYouTube("hCDN0FotiFw")}}</p>
+
+<h3 id="manifest.json" name="manifest.json">manifest.json</h3>
+
+<p>拡張機能を記述する <a href="https://github.com/mdn/webextensions-examples/blob/master/bookmark-it/manifest.json">manifest.json</a>:</p>
+
+<pre class="brush: json">{
+  "manifest_version": 2,
+  "name": "Bookmark it!",
+  "version": "1.1",
+  "description": "A simple bookmark button",
+  "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/bookmark-it",</pre>
+
+<p>アドオンマネージャーの代わりに、拡張機能を表すアイコンを定義します。</p>
+
+<pre class="brush: json">  "icons": {
+    "48": "icons/bookmark-it.png",
+    "96": "icons/bookmark-it@2x.png"
+  },</pre>
+
+<p>権限のリクエスト。<code>"bookmarks"</code> は Bookmarks API を利用するのに要求されます。アクティブなタブの URL とタイトルを読み込んだり、ページのブックマークを作成/検索するのに、<code>"tabs"</code> が要求されます。こうした詳細にアクセスするのに Tabs API が必要なのは、Bookmark API を Tabs API なしに使うのが考えにくいということです。</p>
+
+<pre class="brush: json">  "permissions": [
+    "bookmarks",
+    "tabs"
+  ],</pre>
+
+<p>基本的なツールバーボタンの詳細をセットします。ボタン機能の大半は、ページのブックマーク状態が分かった後に、コード内でセットされます。</p>
+
+<pre class="brush: json">  "browser_action": {
+    "default_icon": "icons/star-empty-38.png",
+    "default_title": "Bookmark it!"
+  },</pre>
+
+<p>ページのブックマークを追加/削除してツールバーボタンの特色をセットするバックグラウンドスクリプトを定義します。</p>
+
+<pre class="brush: json">  "background": {
+    "scripts": ["background.js"]
+  }
+
+}</pre>
+
+<h3 id="background.js" name="background.js">background.js</h3>
+
+<p>他のバックグラウンドスクリプトと同様に、<a href="https://github.com/mdn/webextensions-examples/blob/master/bookmark-it/background.js">background.js</a> は拡張機能が開始してすぐに実行されます。最初にスクリプトは <code>updateActiveTab()</code> を呼び出し、ここでは {{WebExtAPIRef("tabs.query")}} を使って現在のタブの <code>Tabs</code> オブジェクトを取得して開始し、そのオブジェクトを <code>updatetab()</code> に渡します、コードは次の通り:</p>
+
+<pre class="brush: js">  var gettingActiveTab = browser.tabs.query({active: true, currentWindow: true});
+  gettingActiveTab.then(updateTab);</pre>
+
+<p><code>updatetab()</code> は 最初にアクティブなタブの URL を <code>isSupportedProtocol()</code> に渡します:</p>
+
+<pre class="brush: js">  function updateTab(tabs) {
+    if (tabs[0]) {
+      currentTab = tabs[0];
+      if (isSupportedProtocol(currentTab.url)) {</pre>
+
+<p><code>isSupportedProtocol()</code> はアクティブタブに表示される URL がブックマークできるかを決めます。タブの URL からプロトコルを抽出するために、拡張機能は <a href="/ja/docs/Web/API/HTMLHyperlinkElementUtils">HTMLHyperlinkElementUtils</a> を利用して <code>&lt;a&gt;</code> 要素にタブの URL を追加してから、<code>protocol</code> プロパティを使ってプロトコルを取得します。</p>
+
+<pre class="brush: js">  function isSupportedProtocol(urlString) {
+    var supportedProtocols = ["https:", "http:", "ftp:", "file:"];
+    var url = document.createElement('a');
+    url.href = urlString;
+    return supportedProtocols.indexOf(url.protocol) != -1;
+  }</pre>
+
+<p>ブックマークがプロトコルをサポートしている場合、拡張機能はタブの URL がブックマーク済みかどうかを決めて、その場合に <code>updateIcon()</code> を呼び出します:</p>
+
+<pre class="brush: js">      var searching = browser.bookmarks.search({url: currentTab.url});
+      searching.then((bookmarks) =&gt; {
+        currentBookmark = bookmarks[0];
+        updateIcon();</pre>
+
+<p><code>updateIcon()</code> は、URL がブックマーク済みかどうかにより、ツールバーボタンのアイコンとタイトルをセットします。</p>
+
+<pre class="brush: js">function updateIcon() {
+  browser.browserAction.setIcon({
+    path: currentBookmark ? {
+      19: "icons/star-filled-19.png",
+      38: "icons/star-filled-38.png"
+    } : {
+      19: "icons/star-empty-19.png",
+      38: "icons/star-empty-38.png"
+    },
+    tabId: currentTab.id
+  });
+  browser.browserAction.setTitle({
+    // Screen readers can see the title
+    title: currentBookmark ? 'Unbookmark it!' : 'Bookmark it!',
+    tabId: currentTab.id
+  });
+}</pre>
+
+<p>ツールバーボタンが初期化されると、拡張機能はツールバーボタンのクリックを、<code>toggleBookmark()</code> を呼び出して、監視し始めます</p>
+
+<pre class="brush: js">browser.browserAction.onClicked.addListener(toggleBookmark);</pre>
+
+<p><code>toggleBookmark()</code> は、URL がブックマークにあるかどうか探す <code>updateTabs()</code> の検索結果を使い、現在の URL のブックマークを削除するか、追加するのかを決定します。</p>
+
+<pre class="brush: js">function toggleBookmark() {
+  if (currentBookmark) {
+    browser.bookmarks.remove(currentBookmark.id);
+  } else {
+    browser.bookmarks.create({title: currentTab.title, url: currentTab.url});
+  }
+}</pre>
+
+<p>ツールバーアイコンを更新するため、拡張機能はブックマークの作成/削除を監視します。この方法の利点は、拡張機能によるブックマーク更新と、拡張機能の外のユーザーの更新の両方を捕捉できることです。</p>
+
+<pre class="brush: js">// listen for bookmarks being created
+browser.bookmarks.onCreated.addListener(updateActiveTab);
+
+// listen for bookmarks being removed
+browser.bookmarks.onRemoved.addListener(updateActiveTab);</pre>
+
+<p>最後に、拡張機能はアクティブなタブの URL変更や、ユーザーが他のタブやウィンドウに移動するのを監視します。これらの動作は閲覧 URL と、拡張機能のツールバーアイコンを変えることがあります。</p>
+
+<pre class="brush: js">// listen to tab URL changes
+browser.tabs.onUpdated.addListener(updateActiveTab);
+
+// listen to tab switching
+browser.tabs.onActivated.addListener(updateActiveTab);
+
+// listen for window switching
+browser.windows.onFocusChanged.addListener(updateActiveTab);</pre>
+
+<h2 id="Learn_more" name="Learn_more">関連項目</h2>
+
+<p>より詳しく学習するには、<a href="/ja/Add-ons/WebExtensions/API/bookmarks">Bookmarks API リファレンス</a>を見てみてください。</p>
diff --git a/files/ja/mozilla/add-ons/webextensions/working_with_files/index.html b/files/ja/mozilla/add-ons/webextensions/working_with_files/index.html
new file mode 100644
index 0000000000..299643f95c
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/working_with_files/index.html
@@ -0,0 +1,160 @@
+---
+title: ファイルの操作
+slug: Mozilla/Add-ons/WebExtensions/Working_with_files
+tags:
+ - Guide
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Working_with_files
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>拡張機能にて完全な機能を提供するのにファイルを操作する必要があるかもしれません。この記事ではファイルを扱うための 5 つのメカニズムを見ていきます:</p>
+
+<ul>
+ <li>ユーザーが選択したファイルをダウンロードフォルダーにダウンロードする</li>
+ <li>ウェブページのファイルピッカーを使ってファイルを開く</li>
+ <li>ウェブページへのドラッグアンドドロップを使ってファイルを開く</li>
+ <li>idb-file-storage ライブラリーを使ってファイルや blob を IndexedDB に保管する</li>
+ <li>ユーザーのコンピューター上のネイティブアプリケーションにファイルを渡す</li>
+</ul>
+
+<p>それぞれのメカニズムに対し、各 API ドキュメンテーションやガイド、対応する API の使用法の例のリファレンスと一緒に、使い方を紹介します。</p>
+
+<h2 id="Download_files_using_the_downloads_API" name="Download_files_using_the_downloads_API">ダウンロード API を使ってファイルをダウンロード</h2>
+
+<p>この仕組みでは、あなたのウェブサイト(や URL で決められたあらゆる場所)からユーザーのコンピューターにファイルを入手できます。主要なメソッドは {{WebExtAPIRef("downloads.download()")}} で、その簡単なフォームで URL を受け付けて、その URL からユーザーの既定のダウンロードフォルダーにファイルをダウンロードします:</p>
+
+<pre class="brush: js">browser.downloads.download({url: "https://example.org/image.png"})</pre>
+
+<p>ユーザーが <code>saveAs</code> パラメーターで指定した場所にダウンロードさせることもできます。</p>
+
+<div class="note">
+<p>Using <a href="https://developer.mozilla.org/ja/docs/Web/API/URL/createObjectURL">URL.createObjectURL()</a> you can also download files and blobs defined in your JavaScript, which can include local content retrieved from IndexedDB.</p>
+</div>
+
+<p>ダウンロード API はダウンロードをキャンセル、停止、再開、消去、削除することもできます; ダウンロードマネージャーでダウンロード済みのファイルを探します; コンピューターのファイルマネージャーでダウンロード済みのファイルを表示します; 関連付けられたアプリケーションでそのファイルを開きます。</p>
+
+<p>この API を使うには <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> ファイルにて "downloads"<a href="/ja/docs/Web/API/Permissions#API_permissions"> API パーミッション</a>が必要です。</p>
+
+<p>例: <a href="https://github.com/mdn/webextensions-examples/tree/master/latest-download">Latest download</a><br>
+ API リファレンス: <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/downloads">downloads API</a></p>
+
+<h2 id="Open_files_in_an_extension_using_a_file_picker" name="Open_files_in_an_extension_using_a_file_picker">ファイルピッカーを使って拡張機能でファイルを開く</h2>
+
+<p>ユーザーのコンピューターからのファイルを扱いたい場合、1 つの選択はコンピューターのファイルブラウザーを使ってユーザーがファイル選択できるようにすることです。新しいページを作るか既存のページにコードを挿入して、ファイルピッカーをユーザーに提供するため HTML <code>input</code> 要素の <code>file</code> タイプを使います。ユーザーがファイルを選ぶと、ページに関連付けられたスクリプトにより、<a href="/ja/docs/Web/API/File">DOM File API</a> を使ってウェブアプリケーションと同様な方法でファイルの中身にページからアクセスできます。</p>
+
+<p>例: <a href="https://github.com/mdn/webextensions-examples/tree/master/imagify">Imagify</a><br>
+ ガイド: <a href="/ja/docs/Using_files_from_web_applications">Using files from web applications</a><br>
+ API リファレンス: <a href="/ja/docs/Web/HTML/Element/input/file">HTML input element</a> | <a href="/ja/docs/Web/API/File">DOM File API</a></p>
+
+<div class="note">
+<p>選択したフォルダーの全ファイルにアクセスや処理したい場合、<code>&lt;input type="file" </code><code>webkitdirectory="true"/&gt;</code> を使ってフォルダーを選択して、そこにある全ファイルを返すようにできます。</p>
+</div>
+
+<h2 id="Open_files_in_an_extension_using_drag_and_drop" name="Open_files_in_an_extension_using_drag_and_drop">ドラッグアンドドロップを使って拡張機能でファイルを開く</h2>
+
+<p>Web Drag and Drop API では別のファイルピッカーがあります。このメソッドを使うには、UI にフィットする ‘drop zone’ を設置して、<a href="/ja/docs/Web/Events/dragenter">dragenter</a>,<a href="/ja/docs/Web/Events/dragover"> dragover</a>, <a href="/ja/docs/Web/Events/drop">drop</a> イベントのリスナーを要素に追加します。ドロップイベントのハンドラーでは、<a href="/ja/docs/Web/API/DataTransfer/files">DataTransfer.files</a> を使って dataTransfer プロパティから提供されたオブジェクトからユーザーにドロップされたあらゆるファイルに、コードからアクセスできます。すると <a href="/ja/docs/Web/API/File">DOM File API</a> を使ってファイルにアクセス・操作することができます。</p>
+
+<p>例: <a href="https://github.com/mdn/webextensions-examples/tree/master/imagify">Imagify</a><br>
+ ガイド: <a href="/ja/docs/Using_files_from_web_applications">Using files from web applications</a> | <a href="/ja/docs/Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop">File drag and drop</a><br>
+ API リファレンス: <a href="/ja/docs/Web/API/File">DOM File API</a></p>
+
+<h2 id="Store_files_data_locally_using_the_IndexedDB_file_storage_library" name="Store_files_data_locally_using_the_IndexedDB_file_storage_library"> IndexedDB ファイルストレージライブラリーを使ってローカルにファイル保存する</h2>
+
+<p>拡張機能がローカルにファイル保存する必要がある場合、<a href="https://www.npmjs.com/package/idb-file-storage">idb-file-storage ライブラリー</a>は 完結な Promiseベースの<a href="/ja/docs/Web/API/IndexedDB_API">IndexedDB API</a>ラッパーであり、ストレージやファイルやblobの取得を助けます。</p>
+
+<p>Firefoxでは、このライブラリーは非標準の IDBMutableFile APIのラッパーとしてPromiseベースのAPIも提供します (IDBMutableFile API を使うと、拡張機能はIndexedDB データベースファイルオブジェクトの作成と保存ができて、それによりメモリーにファイルを読み込むことなくファイルの中身を読み書きできるAPIが提供されます)</p>
+
+<p>このライブラリーのキーとなる機能は:</p>
+
+<ul>
+ <li>IDBFileStorageインスタンスを返す <a href="https://rpl.github.io/idb-file-storage/function/index.html#static-function-getFileStorage">getFileStorage</a>。名前付きストレージが存在しない場合には作成します。</li>
+ <li><a href="https://rpl.github.io/idb-file-storage/class/src/idb-file-storage.js~IDBFileStorage.html">IDBFileStorage</a>。これはファイルを保存したり取得するメソッドを提供します、例えば次のもの:
+ <ul>
+ <li>データベース内の(フィルターされた)ファイルのlist</li>
+ <li>データベースにファイルやblobを追加するput</li>
+ <li>データベースからファイルやblobを取得するget</li>
+ <li>データベースからファイルやblobを削除するremove</li>
+ </ul>
+ </li>
+</ul>
+
+<p><a href="https://github.com/mdn/webextensions-examples/tree/master/store-collected-images/webextension-plain">Store Collected Images</a> の例ではこの機能の大半の使い方を示します。(IDBMutableFile は含まれていませんが、<a href="https://rpl.github.io/idb-file-storage/examples/">idb-file-storage examples</a> にて、ライブラリーの他の多くの例と一緒に見ることができます)。</p>
+
+<p>Store Collected Images の例では、画像コンテキストメニューを使ってユーザーが画像を追加できます。選択された画像はポップアップメニューに集められて、名前付きコレクションに保存されます。ツールバーボタンの({{WebExtAPIRef("browserAction")}}) ナビゲートコレクションのページを開き、そこでユーザーは選択を狭められるフィルターオプションを使って、保存された画像を見たり消去したりできます。<a href="https://youtu.be/t6aVqMMe2Rc">この例を見てください</a>。</p>
+
+<p>/utils/ 内の <a href="https://github.com/mdn/webextensions-examples/blob/master/store-collected-images/webextension-plain/utils/image-store.js">image-store.js</a> を見てライブラリーの動作を理解できます:</p>
+
+<h3 id="Creating_the_store_and_saving_the_images" name="Creating_the_store_and_saving_the_images">store を作成して画像を保存する</h3>
+
+<pre class="brush: js">async function saveCollectedBlobs(collectionName, collectedBlobs) {
+ const storedImages = await getFileStorage({name: "stored-images"});
+
+ for (const item of collectedBlobs) {
+ await storedImages.put(`${collectionName}/${item.uuid}`, item.blob);
+ }
+}</pre>
+
+<p><code>saveCollectedBlobs</code> is called when the user clicks save in the popup and has provided a name for the image collection. First, <code>getFileStorage</code> creates, if it does not exist already, or retrieves the IndexedDB database “stored-images” to the object <code>storedImages</code>. <code>storedImages.put</code> then adds each collected image to the database, under the collection name, using the blob’s unique id (the file name). If the image being store has the same name as one already in the database, it is overwritten. If you want to avoid this, query the database first using <code>imagesStore.list()</code> with a filter for the file name, and, if the list returns a file, add a suitable suffix to the name of the new image to store a separate item.</p>
+
+<h3 id="Retrieving_stored_images_for_display" name="Retrieving_stored_images_for_display">保管された画像を表示用に取得する</h3>
+
+<pre class="brush: js">export async function loadStoredImages(filter) {
+ const imagesStore = await getFileStorage({name: "stored-images"});
+ let listOptions = filter ? {includes: filter} : undefined;
+ const imagesList = await imagesStore.list(listOptions);
+ let storedImages = [];
+ for (const storedName of imagesList) {
+    const blob = await imagesStore.get(storedName);
+    storedImages.push({storedName, blobUrl: URL.createObjectURL(blob)});
+ }
+ return storedImages;
+}
+</pre>
+
+<p><code>loadStoredImages</code> is called when the user clicks view or reload in the navigate collection page. <code>getFileStorage</code> opens the “stored-images” database, then <code>imagesStore.list</code> gets a filtered list of the stored images. This list is then used to retrieve images with <code>imagesStore.get</code> and build a list to return to the UI.</p>
+
+<p>Note the use of <a href="/ja/docs/Web/API/URL/createObjectURL">URL.createObjectURL(blob)</a> to create a URL that references the image blob. This URL is then used in the UI (<a href="https://github.com/mdn/webextensions-examples/blob/master/store-collected-images/webextension-plain/navigate-collection.js">navigate-collection.js</a><a href="https://github.com/mdn/webextensions-examples/blob/master/store-collected-images/webextension-plain/navigate-collection.js">collection.js</a>) to display the image.</p>
+
+<h3 id="Delete_collected_images" name="Delete_collected_images">集まった画像を削除する</h3>
+
+<pre class="brush: js">async function removeStoredImages(storedImages) {
+ const imagesStore = await getFileStorage({name: "stored-images"});
+ for (const storedImage of storedImages) {
+    URL.revokeObjectURL(storedImage.blobUrl);
+    await imagesStore.remove(storedImage.storedName);
+ }
+}
+</pre>
+
+<p><code>removeStoredImages</code> is called when the user clicks delete in the navigate collection page. Again, <code>getFileStorage</code> opens the “stored-images” database then <code>imagesStore.remove</code> removes each image from the filtered list of images.</p>
+
+<p>Note the use of <a href="/ja/docs/Web/API/URL/revokeObjectURL">URL.revokeObjectURL()</a> to explicitly revoke the blob URL. This enables the garbage collector to free the memory allocated to the URL. If this is not done, the memory will not get returned until the page on which it was created is closed. If the URL was created in an extension’s background page, this is not unloaded until the extension is disabled, uninstalled, or reloaded, so holding this memory unnecessarily could affect browser performance. If the URL is created in an extension’s page (new tab, popup, or sidebar) the memory is released when the page is closed, but it is still a good practice to revoke the URL when it is no longer needed.</p>
+
+<p>Once the blob URL has been revoked any attempt to load it will result in an error. 例えば、if the blob url was used as the <code>SRC</code> attribute of an <code>IMG</code> tag, the image will not load and will not be visible. It is therefore good practice to remove any revoked blob urls from generated HTML elements when the blob URL is revoked.</p>
+
+<p>Example: <a href="https://github.com/mdn/webextensions-examples/tree/master/store-collected-images/webextension-plain">Store Collected Images</a><br>
+ API References:  <a href="https://rpl.github.io/idb-file-storage/">idb-file-storage library</a></p>
+
+<div class="note">
+<p>Note: You can also use the full Web <a href="https://developer.mozilla.org/ja/docs/Web/API/IndexedDB_API">IndexedDB API</a> to store data from your extension. This can be useful where you need to store data that isn’t handled well by the simple key/value pairs offered by the DOM <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/Storage">Storage API</a>.</p>
+</div>
+
+<h2 id="Process_files_in_a_local_app" name="Process_files_in_a_local_app">ローカルアプリでファイルを処理する</h2>
+
+<p>Where you have a native app or want to deliver additional native features for file processing, use native messaging to pass a file to a native app for processing.</p>
+
+<p>You have two options:</p>
+
+<ul>
+ <li>Connection-based messaging. Here you trigger the process with runtime.connectNative(), which returns a <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port">runtime.Port</a> object. You can then pass a JSON message to the native application using the postMessage() function of Port. Using the onMessage.addListener() function of Port you can listen for messages from the native application. The native application is opened if it is not running when runtime.connectNative() is called and the application remains running until the extension calls Port.disconnect() or the page that connected to it is closed.</li>
+ <li>Connectionless messaging. Here you use runtime.sendNativeMessage() to send a JSON message to a new, temporary instance of the native application. The browser closes the native application after receiving any message back from the native application.</li>
+</ul>
+
+<p>To add the file or blob you want the native application to process use <a href="https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify">JSON.stringify()</a>.</p>
+
+<p>To use this method the extension must request the "nativeMessaging"<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions"> permission</a> in its manifest.json file. Reciprocally, the native application must grant permission for the extension by including its ID in the "allowed_extensions" field of the app manifest.</p>
+
+<p>Example: <a href="https://github.com/mdn/webextensions-examples/tree/master/native-messaging">Native Messaging</a> (illustrates simple messaging only)<br>
+ Guides: <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/Native_messaging">Native messaging</a><br>
+ API references: <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/API/runtime">runtime API</a></p>
diff --git a/files/ja/mozilla/add-ons/webextensions/working_with_the_tabs_api/index.html b/files/ja/mozilla/add-ons/webextensions/working_with_the_tabs_api/index.html
new file mode 100644
index 0000000000..5dd16ac2da
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/working_with_the_tabs_api/index.html
@@ -0,0 +1,629 @@
+---
+title: Tabs API を使う
+slug: Mozilla/Add-ons/WebExtensions/Working_with_the_Tabs_API
+tags:
+ - Add-ons
+ - Beginner
+ - Extensions
+ - How-to
+ - WebExtensions
+ - tabs
+translation_of: Mozilla/Add-ons/WebExtensions/Working_with_the_Tabs_API
+---
+<p>{{AddonSidebar}}</p>
+
+<p>タブを使うとユーザーはブラウザーウィンドウに複数のウェブページを開いてウェブページ間をスイッチできるようになります。Tabs API により、タブを操作して、新しい方法でタブを使ったり拡張機能の機能として配布できます。</p>
+
+<p>このハウツー記事では次のようなことを見ていきます:</p>
+
+<ul>
+ <li>Tabs API を使うのに必要な権限</li>
+ <li>タブについての詳しい探検と{{WebExtAPIRef("tabs.query")}}を使ったプロパティ</li>
+ <li>タブの作成、複製、移動、更新、読み込み、と削除</li>
+ <li>タブのズームレベル操作</li>
+ <li>タブの CSS操作</li>
+</ul>
+
+<p>その次には、API で提供されるその他のいろいろな機能を見て終わります。</p>
+
+<div class="blockIndicator note">
+<p><strong>注:</strong> There are some Tab API features covered elsewhere. These are the methods you can use to manipulate tab content with scripts ({{WebExtAPIRef("tabs.connect")}}, {{WebExtAPIRef("tabs.sendMessage")}}, and {{WebExtAPIRef("tabs.executeScript")}}). If you want more information on these methods, see the Concepts article <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">Content scripts</a> and the how-to guide <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Modify_a_web_page">Modify a web page</a>.</p>
+</div>
+
+<h2 id="Permissions_and_the_Tabs_API" name="Permissions_and_the_Tabs_API">権限と Tabs API</h2>
+
+<p>Tabs API 機能の大半では権限は不要ですが、次の例外はあります:</p>
+
+<ul>
+ <li>Tab オブジェクトの <code>Tab.url</code>, <code>Tab.title</code>, <code>Tab.favIconUrl</code> プロパティにアクセスするには<code>"tabs</code>" 権限が必要です。Firefox では、URL の <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">query</a> を実行するのに<code>"tabs</code>"が要ります。</li>
+ <li>{{WebExtAPIRef("tabs.executeScript")}} や {{WebExtAPIRef("tabs.insertCSS")}} には <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">Host 権限</a>が必要です。</li>
+</ul>
+
+<p>下記は、拡張機能の manifest.json ファイルで <code>"tabs"</code> 権限を要求する方法です:</p>
+
+<pre class="brush: json">"permissions": [
+  "&lt;all_urls&gt;",
+  "tabs"
+],
+</pre>
+
+<p>この要求により、訪問するすべてのウェブサイトですべての Tabs API 機能を使うことができます。また、host権限不要の {{WebExtAPIRef("tabs.executeScript")}} や {{WebExtAPIRef("tabs.insertCSS")}} を使うのに、<a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission"><code>"activeTab"</code></a>の形で権限を要求する別のこの権限は <code>"tabs"</code> に <code>&lt;all_urls&gt;</code> つきのものと同じですが、次の 2 つの制限があります:</p>
+
+<ul>
+ <li>ユーザーは拡張機能のページアクション、コンテキストメニュー、ショートカットキーいずれかでやりとりせねばならない。</li>
+ <li>アクティブなタブ内の権限のみ許可される。</li>
+</ul>
+
+<p>このアプローチの利点は、拡張機能が “Access your data for all websites” という警告をユーザーに表示しないことです。これは <code>&lt;all_urls&gt;</code> 権限により、拡張機能がいつでもどんなタブでも実行できるのに対し、<a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission"><code>"activeTab"</code></a> では、現在のタブでのユーザーが要求したアクションのみ実行するためです。</p>
+
+<h2 id="Discovering_more_about_tabs_and_their_properties" name="Discovering_more_about_tabs_and_their_properties">タブとそのプロパティの探検</h2>
+
+<p>すべてのブラウザーウィンドウのすべてのタブのリストを取得したいときもあるでしょう。ある条件にマッチするタブ、例えば特定のタブから開かれた、あるいはあるドメインのページを表示したもの、のサブセットを発見したいこともあるでしょう。タブのリストを持っていれば、そのプロパティを詳しく知りたくなるでしょう。</p>
+
+<p>これが {{WebExtAPIRef("tabs.query")}} の出てくる場所です。単独で使ってすべてのタブを取得したり、<code>queryInfo</code> オブジェクト—これでタブがアクティブかとか、現在のウィンドウ内かとかといった、17 の条件のいくつかを指定する条件—をつけて、{{WebExtAPIRef("tabs.query")}} はタブの情報を含んだ {{WebExtAPIRef("tabs.Tab")}} オブジェクトの配列を返します。</p>
+
+<p>現在のタブだけの情報が欲しいときは、そのタブの {{WebExtAPIRef("tabs.Tab")}} オブジェクトを {{WebExtAPIRef("tabs.getCurrent")}} を使って取得できます。タブの ID がある場合、{{WebExtAPIRef("tabs.Tab")}} オブジェクトを {{WebExtAPIRef("tabs.get")}} を使って取得できます。</p>
+
+<h3 id="How_to_example" name="How_to_example">方法の実例</h3>
+
+<p>{{WebExtAPIRef("tabs.query")}} と {{WebExtAPIRef("tabs.Tab")}} の使われ方を見るために、<a href="https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs">tabs-tabs-tabs</a> の例で “switch to tabs” のリストをツールバーボタンのポップアップに追加するのを見てみましょう。</p>
+
+<p><img alt="The tabs tabs tabs toolbar menu showing the switch to tap area" src="https://mdn.mozillademos.org/files/15723/Switch_to_tab.png" style="height: 645px; width: 369px;"></p>
+
+<h3 id="manifest.json" name="manifest.json">manifest.json</h3>
+
+<p>これが <a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/manifest.json">manifest.json</a> です:</p>
+
+<pre class="brush: json">{
+  "browser_action": {
+    "browser_style": true,
+    "default_title": "Tabs, tabs, tabs",
+    "default_popup": "tabs.html"
+  },
+  "description": "A list of methods you can perform on a tab.",
+  "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs",
+  "manifest_version": 2,
+  "name": "Tabs, tabs, tabs",
+  "permissions": [
+    "tabs"
+  ],
+  "version": "1.0"
+}
+</pre>
+
+<div class="blockIndicator note">
+<p>次のことに注意します:</p>
+
+<ul>
+ <li>
+ <p><strong>tabs.html は <code>browser_action</code> の <code>default_popup</code> で定義されていること。</strong>これはユーザーが拡張機能のツールバーアイコンをクリックするといつでも表示されます。</p>
+ </li>
+ <li>
+ <p><strong>権限にタブが入っていること。</strong>これはタブリスト機能をサポートするのに必要であり、なぜなら拡張機能がポップアップに表示するためにタブのタイトルを読み取るためです。</p>
+ </li>
+</ul>
+</div>
+
+<h3 id="tabs.html" name="tabs.html">tabs.html</h3>
+
+<p>tabs.html では拡張機能のポップアップのコンテンツを定義します。</p>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+
+ &lt;head&gt;
+    &lt;meta charset="utf-8"&gt;
+    &lt;link rel="stylesheet" href="tabs.css"/&gt;
+ &lt;/head&gt;
+
+&lt;body&gt;
+
+ &lt;div class="panel"&gt;
+    &lt;div class="panel-section panel-section-header"&gt;
+     &lt;div class="text-section-header"&gt;Tabs-tabs-tabs&lt;/div&gt;
+    &lt;/div&gt;
+
+    &lt;a href="#" id="tabs-move-beginning"&gt;Move active tab to the beginning of the window&lt;/a&gt;&lt;br&gt;
+
+
+…
+
+Define the other menu items
+…
+
+    &lt;div class="switch-tabs"&gt;
+
+     &lt;p&gt;Switch to tab&lt;/p&gt;
+
+     &lt;div id="tabs-list"&gt;&lt;/div&gt;
+
+    &lt;/div&gt;
+ &lt;/div&gt;
+
+ &lt;script src="tabs.js"&gt;&lt;/script&gt;
+
+&lt;/body&gt;
+
+&lt;/html&gt;
+</pre>
+
+<p>上記のまとめとして:</p>
+
+<ol>
+ <li>メニュー項目が定義されます。</li>
+ <li>タブのリストを入れるため、ID が <code>tabs-list</code> の空の <code>div</code> が定義されます。</li>
+ <li>tabs.js が呼ばれます。</li>
+</ol>
+
+<h3 id="tabs.js" name="tabs.js">tabs.js</h3>
+
+<p><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.js">tabs.js</a> では、タブのリストが作られて、ポップアップに追加される方法を見ていきましょう。</p>
+
+<h4 id="Creating_the_popup" name="Creating_the_popup">ポップアップの作成</h4>
+
+<p>まず、tabs.html が読み込まれたとき、<code>listTabs()</code> を実行するイベントハンドラを追加します。:</p>
+
+<pre class="brush: js">document.addEventListener("DOMContentLoaded", listTabs);</pre>
+
+<p><code>listTabs()</code> は最初に <code>getCurrentWindowTabs()</code> を呼び出します。ここで現在のウィンドウ内のタブの {{WebExtAPIRef("tabs.Tab")}} オブジェクトを取得するのに{{WebExtAPIRef("tabs.query")}} が使われます:</p>
+
+<pre class="brush: js">function getCurrentWindowTabs() {
+  return browser.tabs.query({currentWindow: true});
+}
+</pre>
+
+<p>今度は、ポップアップのコンテンツを作成するために <code>ListTabs()</code> が準備できています。</p>
+
+<p>開始するには:</p>
+
+<ol>
+ <li><code>tabs-list</code> <code>div</code> を取得。</li>
+ <li>文書のフラグメントを作成 (ここにリストが作成される)。</li>
+ <li>カウンターをセット。</li>
+ <li><code>tabs-list</code> <code>div</code> のコンテンツをクリアする。</li>
+</ol>
+
+<pre class="brush: js">function listTabs() {
+ getCurrentWindowTabs().then((tabs) =&gt; {
+    let tabsList = document.getElementById('tabs-list');
+    let currentTabs = document.createDocumentFragment();
+    let limit = 5;
+    let counter = 0;
+
+    tabsList.textContent = '';
+</pre>
+
+<p>次に、それぞれのタブのリンクを作ります:</p>
+
+<ol>
+ <li> {{WebExtAPIRef("tabs.Tab")}} オブジェクトからの最初の 5項目でループする。</li>
+ <li>各項目ごとに、文書のフラグメントのハイパーリンクを追加する。
+ <ul>
+ <li>リンクのラベル—つまり、そのテキスト—が、タブのタイトル (ない場合はその ID)を使って、セットされる</li>
+ <li>タブの ID を使ってリンクのアドレスがセットされる。</li>
+ </ul>
+ </li>
+</ol>
+
+<pre class="brush: js">    for (let tab of tabs) {
+     if (!tab.active &amp;&amp; counter &lt;= limit) {
+        let tabLink = document.createElement('a');
+
+        tabLink.textContent = tab.title || tab.id;
+
+       tabLink.setAttribute('href', tab.id);
+        tabLink.classList.add('switch-tabs');
+        currentTabs.appendChild(tabLink);
+     }
+
+     counter += 1;
+
+    }
+</pre>
+
+<p>最後に、<code>tabs-list</code> div に文書のフラグメントが書き込まれる:</p>
+
+<pre class="brush: js">    tabsList.appendChild(currentTabs);
+  });
+}
+</pre>
+
+<h4 id="Working_with_the_active_tab" name="Working_with_the_active_tab">アクティブタブを操作する</h4>
+
+<p>関連するもう 1 つの例として、“Alert active tab” インフォオプションがあり、これはアクティブなタブのすべての {{WebExtAPIRef("tabs.Tab")}} オブジェクトのプロパティをアラートにダンプするものです:</p>
+
+<pre class="brush: js"> else if (e.target.id === "tabs-alertinfo") {
+   callOnActiveTab((tab) =&gt; {
+     let props = "";
+     for (let item in tab) {
+       props += `${ item } = ${ tab[item] } \n`;
+     }
+     alert(props);
+   });
+ }
+</pre>
+
+<p><code>callOnActiveTab()</code> では、アクティブなセットを求めて {{WebExtAPIRef("tabs.Tab")}} オブジェクトをループすることで、アクティブなタブを探します:</p>
+
+<pre class="brush: js">document.addEventListener("click", function(e) {
+ function callOnActiveTab(callback) {
+   getCurrentWindowTabs().then((tabs) =&gt; {
+     for (var tab of tabs) {
+       if (tab.active) {
+         callback(tab, tabs);
+       }
+     }
+   });
+ }
+}
+
+</pre>
+
+<h2 id="Creating_duplicating_moving_updating_reloading_and_removing_tabs" name="Creating_duplicating_moving_updating_reloading_and_removing_tabs">タブを作成、複製、移動、更新、読み込み、削除する</h2>
+
+<p>Having gathered information about the tabs you’ll most likely want to do something with them—either to offer users features for manipulating and managing tabs or to implement functionality in your extension.</p>
+
+<p>The following functions are available:</p>
+
+<ul>
+ <li>create a new tab ({{WebExtAPIRef("tabs.create")}}).</li>
+ <li>duplicate a tab ({{WebExtAPIRef("tabs.duplicate")}}).</li>
+ <li>remove a tab ({{WebExtAPIRef("tabs.remove")}}).</li>
+ <li>move a tab ({{WebExtAPIRef("tabs.move")}}).</li>
+ <li>update the tab’s URL—effectively browse to a new page—({{WebExtAPIRef("tabs.update")}}).</li>
+ <li>reload the tab’s page ({{WebExtAPIRef("tabs.reload")}}).</li>
+</ul>
+
+<div class="blockIndicator note">
+<p><strong>NOTE: </strong></p>
+
+<p>These functions all require the ID (or IDs) of the tab they are manipulating:</p>
+
+<ul>
+ <li>{{WebExtAPIRef("tabs.duplicate")}}</li>
+ <li>{{WebExtAPIRef("tabs.remove")}}</li>
+ <li>{{WebExtAPIRef("tabs.move")}}</li>
+</ul>
+
+<p>Whereas the following functions will act on the active tab (if no tab ID is provided): </p>
+
+<ul>
+ <li>{{WebExtAPIRef("tabs.update")}}</li>
+ <li>{{WebExtAPIRef("tabs.reload")}}</li>
+</ul>
+</div>
+
+<h3 id="How_to_example_2" name="How_to_example_2">方法の実例</h3>
+
+<p>The <a href="https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs">tabs-tabs-tabs</a> example exercises all of these features except for updating a tab’s URL The way in which these APIs are used is similar, so we’ll look at one of the more involved implementations, that of the “Move active tab to the beginning of the window list” option.</p>
+
+<p>But first, here is a demonstration of the feature in action:</p>
+
+<p>{{EmbedYouTube("-lJRzTIvhxo")}}</p>
+
+<h4 id="manifest.json_2" name="manifest.json_2"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/manifest.json">manifest.json</a></h4>
+
+<p>None of the functions require a permission to operate, so there are no features in the manifest.json file that need to be highlighted.</p>
+
+<h4 id="tabs.html_2" name="tabs.html_2"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.html">tabs.html</a></h4>
+
+<p>tabs.html defines the “menu” displayed in the popup, which includes the “Move active tab to the beginning of the window list” option, with a series of <code>&lt;a&gt;</code> tags grouped by a visual separator. Each menu item is given an ID, which is used in tabs.js to determine which menu item is being requested.</p>
+
+<pre class="brush: html">    &lt;a href="#" id="tabs-move-beginning"&gt;Move active tab to the beginning of the window&lt;/a&gt;&lt;br&gt;
+    &lt;a href="#" id="tabs-move-end"&gt;Move active tab to the end of the window&lt;/a&gt;&lt;br&gt;
+
+    &lt;div class="panel-section-separator"&gt;&lt;/div&gt;
+
+
+    &lt;a href="#" id="tabs-duplicate"&gt;Duplicate active tab&lt;/a&gt;&lt;br&gt;
+
+    &lt;a href="#" id="tabs-reload"&gt;Reload active tab&lt;/a&gt;&lt;br&gt;
+    &lt;a href="#" id="tabs-alertinfo"&gt;Alert active tab info&lt;/a&gt;&lt;br&gt;</pre>
+
+<h4 id="tabs.js_2" name="tabs.js_2"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.js">tabs.js</a></h4>
+
+<p>To implement the “menu” defined in tabs.html, tabs.js includes a listener for clicks in tabs.html:</p>
+
+<pre class="brush: js">document.addEventListener("click", function(e) {
+ function callOnActiveTab(callback) {
+
+   getCurrentWindowTabs().then((tabs) =&gt; {
+     for (var tab of tabs) {
+       if (tab.active) {
+         callback(tab, tabs);
+       }
+     }
+   });
+}
+}
+</pre>
+
+<p>A series of <code>if</code> statements then look to match the ID of the item clicked.</p>
+
+<p>This code snippet is for the “Move active tab to the beginning of the window list” option:</p>
+
+<pre class="brush: js"> if (e.target.id === "tabs-move-beginning") {
+   callOnActiveTab((tab, tabs) =&gt; {
+     var index = 0;
+     if (!tab.pinned) {
+       index = firstUnpinnedTab(tabs);
+     }
+     console.log(`moving ${tab.id} to ${index}`)
+     browser.tabs.move([tab.id], {index});
+   });
+ }
+</pre>
+
+<p>It's worth noting the use of <code>console.log()</code>. This enables you to output information to the <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Debugging">debugger</a> console, which can be useful when resolving issues found during development.</p>
+
+<p><img alt="Example of the console.log output, from the move tabs feature, in the debugging console" src="https://mdn.mozillademos.org/files/15722/console.png" style="height: 329px; width: 911px;"></p>
+
+<p>The move code first calls <code>callOnActiveTab()</code> which in turn calls <code>getCurrentWindowTabs()</code> to get a {{WebExtAPIRef("tabs.Tab")}} object containing the active window’s tabs. It then loops through the object to find and return the active tab object:</p>
+
+<pre class="brush: js"> function callOnActiveTab(callback) {
+   getCurrentWindowTabs().then((tabs) =&gt; {
+     for (var tab of tabs) {
+       if (tab.active) {
+         callback(tab, tabs);
+       }
+     }
+   });
+ }
+</pre>
+
+<h5 id="Pinned_tabs" name="Pinned_tabs">ピン止めされたタブ</h5>
+
+<p>A feature of tabs is that the user can <dfn>pin</dfn> tabs in a window. Pinned tabs are placed at the start of the tab list and cannot be moved. This means that the earliest position a tab can move to is the first position after any pinned tabs. So, <code>firstUnpinnedTab()</code> is called to find the position of the first unpinned tab by looping through the <code>tabs</code> object:</p>
+
+<pre class="brush: js">function firstUnpinnedTab(tabs) {
+ for (var tab of tabs) {
+   if (!tab.pinned) {
+     return tab.index;
+   }
+ }
+}
+</pre>
+
+<p>We now have everything needed to move the tab: the active tab object from which we can get the tab ID and the position the tab is to be moved to. So, we can implement the move:</p>
+
+<pre class="brush: js">     browser.tabs.move([tab.id], {index});</pre>
+
+<p>The remaining functions to duplicate, reload, create, and remove tabs are implemented similarly.</p>
+
+<h2 id="タブのズームレベルを操作する">タブのズームレベルを操作する</h2>
+
+<p>The next set of functions enable you to get ({{WebExtAPIRef("tabs.getZoom")}}) and set ({{WebExtAPIRef("tabs.setZoom")}}) the zoom level within a tab. You can also retrieve the zoom settings ({{WebExtAPIRef("tabs.getZoomSettings")}}) but, at the time of writing, the ability to set the settings ({{WebExtAPIRef("tabs.setZoomSettings")}}) wasn’t available in Firefox.</p>
+
+<p>The level of zoom can be between 30% and 300% (represented as decimals <code>0.3</code> to <code>3</code>).</p>
+
+<p>In Firefox the default zoom settings are:</p>
+
+<ul>
+ <li><strong>default zoom level: </strong>100%.</li>
+ <li><strong>zoom mode:</strong> automatic (so the browser manages how zoom levels are set).</li>
+ <li><strong>scope of zoom changes:</strong> <code>"per-origin"</code>, meaning that when you visit a site again, it takes the zoom level set in your last visit.</li>
+</ul>
+
+<h3 id="How_to_example_3" name="How_to_example_3">方法の実例</h3>
+
+<p>The <a href="https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs">tabs-tabs-tabs</a> example includes three demonstrations of the zoom feature: zoom in, zoom out, and reset zoom. Here is the feature in action:</p>
+
+<p>{{EmbedYouTube("RFr3oYBCg28")}}</p>
+
+<p>Let’s take a look at how the zoom in is implemented.</p>
+
+<h4 id="manifest.json_3" name="manifest.json_3"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/manifest.json">manifest.json</a></h4>
+
+<p>None of the zoom functions require permissions, so there are no features in the manifest.json file that need to be highlighted.</p>
+
+<h4 id="tabs.html_3" name="tabs.html_3"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.html">tabs.html</a></h4>
+
+<p>We have already discussed how the tabs.html defines the options for this extension, nothing new or unique is done to provide the zoom options.</p>
+
+<h4 id="tabs.js_3" name="tabs.js_3"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.js">tabs.js</a></h4>
+
+<p>tabs.js starts by defining several constants used in the zoom code:</p>
+
+<pre class="brush: js">const ZOOM_INCREMENT = 0.2;
+const MAX_ZOOM = 3;
+const MIN_ZOOM = 0.3;
+const DEFAULT_ZOOM = 1;
+</pre>
+
+<p>It then uses the same listener we discussed earlier so it can act on clicks in tabs.html.</p>
+
+<p>For the zoom in feature, this runs:</p>
+
+<pre class="brush: js"> else if (e.target.id === "tabs-add-zoom") {
+   callOnActiveTab((tab) =&gt; {
+     var gettingZoom = browser.tabs.getZoom(tab.id);
+     gettingZoom.then((zoomFactor) =&gt; {
+       //the maximum zoomFactor is 3, it can't go higher
+       if (zoomFactor &gt;= MAX_ZOOM) {
+         alert("Tab zoom factor is already at max!");
+       } else {
+         var newZoomFactor = zoomFactor + ZOOM_INCREMENT;
+         //if the newZoomFactor is set to higher than the max accepted
+         //it won't change, and will never alert that it's at maximum
+         newZoomFactor = newZoomFactor &gt; MAX_ZOOM ? MAX_ZOOM : newZoomFactor;
+         browser.tabs.setZoom(tab.id, newZoomFactor);
+       }
+     });
+   });
+ }
+</pre>
+
+<p>This code uses <code>callOnActiveTab()</code> to get the details of the active tab, then {{WebExtAPIRef("tabs.getZoom")}} gets the tab’s current zoom factor. The current zoom is compared to the defined maximum (<code>MAX_ZOOM</code>) and an alert issued if the tab is already at the maximum zoom. Otherwise, the zoom level is incremented but limited to the maximum zoom, then the zoom is set with {{WebExtAPIRef("tabs.getZoom")}}.</p>
+
+<h2 id="タブの_CSS_を操作する">タブの CSS を操作する</h2>
+
+<p>Another significant capability offered by the Tabs API is the ability to manipulate the CSS within a tab—add new CSS to a tab ({{WebExtAPIRef("tabs.insertCSS")}}) or remove CSS from a tab ({{WebExtAPIRef("tabs.removeCSS")}}).</p>
+
+<p>This can be useful, 例えば、 if you want to highlight certain page elements or change the default layout of the page.</p>
+
+<h3 id="How_to_example_4" name="How_to_example_4">方法の実例</h3>
+
+<p>The <a href="https://github.com/mdn/webextensions-examples/tree/master/apply-css">apply-css</a> example uses these features to add a red border to the web page in the active tab. Here is the feature in action:</p>
+
+<p>{{EmbedYouTube("bcK-GT2Dyhs")}}</p>
+
+<p>Let’s walk through how it’s set up.</p>
+
+<h4 id="manifest.json_4" name="manifest.json_4"><a href="https://github.com/mdn/webextensions-examples/blob/master/apply-css/manifest.json">manifest.json</a></h4>
+
+<p>To use the CSS features you need either:</p>
+
+<ul>
+ <li><code>"tabs"</code> permission and <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">host permission</a> or</li>
+ <li><code>"activeTab"</code> permission.</li>
+</ul>
+
+<p>The latter is the most useful, as it allows an extension to use {{WebExtAPIRef("tabs.insertCSS")}} and {{WebExtAPIRef("tabs.removeCSS")}} in the active tab when run from the extension’s browser or page action, context menu, or a shortcut.</p>
+
+<pre class="brush: json">{
+  "description": "Adds a page action to toggle applying CSS to pages.",
+
+ "manifest_version": 2,
+ "name": "apply-css",
+ "version": "1.0",
+ "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/apply-css",
+
+ "background": {
+
+    "scripts": ["background.js"]
+ },
+
+ "page_action": {
+
+    "default_icon": "icons/off.svg",
+    "browser_style": true
+ },
+
+ "permissions": [
+    "activeTab",
+    "tabs"
+ ]
+
+}
+</pre>
+
+<p>You will note that <code>"tabs"</code> permission is requested in addition to <code>"activeTab"</code>. This additional permission is needed to enable the extension’s script to access the tab’s URL, the importance of which we’ll see in a moment.</p>
+
+<p>The other main features in the manifest.json file are the definition of:</p>
+
+<ul>
+ <li><strong>a background script</strong>, which starts running as soon as the extension is loaded.</li>
+ <li><strong>a “page action”</strong>, which defines an icon to be added to the browser’s address bar.</li>
+</ul>
+
+<h4 id="background.js" name="background.js"><a href="https://github.com/mdn/webextensions-examples/blob/master/apply-css/background.js">background.js</a></h4>
+
+<p>On startup, background.js sets some constants to define the CSS to be applied, titles for the “page action”, and a list of protocols the extension will work in:</p>
+
+<pre class="brush: js">const CSS = "body { border: 20px solid red; }";
+const TITLE_APPLY = "Apply CSS";
+const TITLE_REMOVE = "Remove CSS";
+const APPLICABLE_PROTOCOLS = ["http:", "https:"];
+</pre>
+
+<p>When first loaded, the extension uses {{WebExtAPIRef("tabs.query")}} to get a list of all the tabs in the current browser window. It then loops through the tabs calling <code>initializePageAction()</code>.</p>
+
+<pre class="brush: js">var gettingAllTabs = browser.tabs.query({});
+
+gettingAllTabs.then((tabs) =&gt; {
+ for (let tab of tabs) {
+   initializePageAction(tab);
+ }
+});
+</pre>
+
+<p><code>initializePageAction</code> uses <code>protocolIsApplicable()</code> to determine whether the active tab’s URL is one the CSS can be applied to:</p>
+
+<pre class="brush: js">function protocolIsApplicable(url) {
+ var anchor =  document.createElement('a');
+ anchor.href = url;
+ return APPLICABLE_PROTOCOLS.includes(anchor.protocol);
+}
+</pre>
+
+<p>Then, if the example can act on the tab, <code>initializePageAction()</code> sets the tab’s <code>pageAction</code> (navigation bar) icon and title to use the “off” versions before making the <code>pageAction</code> visible:</p>
+
+<pre class="brush: js">function initializePageAction(tab) {
+
+ if (protocolIsApplicable(tab.url)) {
+   browser.pageAction.setIcon({tabId: tab.id, path: "icons/off.svg"});
+   browser.pageAction.setTitle({tabId: tab.id, title: TITLE_APPLY});
+   browser.pageAction.show(tab.id);
+ }
+}
+</pre>
+
+<p>Next, a listener on <code>pageAction.onClicked</code> waits for the <code>pageAction</code> icon to be clicked, and calls <code>toggleCSS</code> when it is.</p>
+
+<pre class="brush: js">browser.pageAction.onClicked.addListener(toggleCSS);</pre>
+
+<p><code>toggleCSS()</code> gets the title of the <code>pageAction</code> and then takes the action described:</p>
+
+<ul>
+ <li><strong>For "Apply CSS”:</strong>
+
+ <ul>
+ <li>toggles the <code>pageAction</code> icon and title to the “remove” versions.</li>
+ <li>applies the CSS using {{WebExtAPIRef("tabs.insertCSS")}}.</li>
+ </ul>
+ </li>
+ <li><strong>For “Remove CSS”:</strong>
+ <ul>
+ <li>toggles the <code>pageAction</code> icon and title to the “apply” versions.</li>
+ <li>removes the CSS using {{WebExtAPIRef("tabs.removeCSS")}}.</li>
+ </ul>
+ </li>
+</ul>
+
+<pre class="brush: js">function toggleCSS(tab) {
+
+
+ function gotTitle(title) {
+
+    if (title === TITLE_APPLY) {
+     browser.pageAction.setIcon({tabId: tab.id, path: "icons/on.svg"});
+     browser.pageAction.setTitle({tabId: tab.id, title: TITLE_REMOVE});
+     browser.tabs.insertCSS({code: CSS});
+    } else {
+     browser.pageAction.setIcon({tabId: tab.id, path: "icons/off.svg"});
+     browser.pageAction.setTitle({tabId: tab.id, title: TITLE_APPLY});
+     browser.tabs.removeCSS({code: CSS});
+    }
+ }
+
+ var gettingTitle = browser.pageAction.getTitle({tabId: tab.id});
+
+ gettingTitle.then(gotTitle);
+}
+</pre>
+
+<p>Finally, to ensure that the <code>pageAction</code> is valid after each update to the tab, a listener on {{WebExtAPIRef("tabs.onUpdated")}} calls <code>initializePageAction()</code> each time the tab is updated to check that the tab is still using a protocol to which the CSS can be applied.</p>
+
+<pre class="brush: js">browser.tabs.onUpdated.addListener((id, changeInfo, tab) =&gt; {
+ initializePageAction(tab);
+});
+</pre>
+
+<h2 id="Some_other_interesting_abilities" name="Some_other_interesting_abilities">その他の興味深い機能</h2>
+
+<p>There are a couple of other Tabs API features that don’t fit into one of the earlier sections:</p>
+
+<ul>
+ <li>Capture the visible tab content with {{WebExtAPIRef("tabs.captureVisibleTab")}}.</li>
+ <li>Detect the primary language of the content in a tab using {{WebExtAPIRef("tabs.detectLanguage")}}. This could be used, 例えば、to match the language in your extension’s UI with that of the page it’s running in.</li>
+</ul>
+
+<h2 id="Learn_more" name="Learn_more">関連項目</h2>
+
+<p>If you want to learn more about the Tabs API, check out:</p>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/API/tabs">Tabs API reference</a></li>
+ <li><a href="/ja/Add-ons/WebExtensions/Examples">Example extensions</a> (many of which use the Tabs API)</li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/your_first_webextension/index.html b/files/ja/mozilla/add-ons/webextensions/your_first_webextension/index.html
new file mode 100644
index 0000000000..c08554e9f6
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/your_first_webextension/index.html
@@ -0,0 +1,153 @@
+---
+title: 初めての拡張機能
+slug: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension
+tags:
+ - Guide
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension
+---
+<div>{{AddonSidebar}}</div>
+
+<p>この記事では、Firefox 用の拡張機能をどのように作ればよいのか、その初めから最後までを一通り説明します。この拡張機能は "mozilla.org" とそのサブドメインから読み込まれたページに赤い枠を付けるだけです。</p>
+
+<p>このサンプルのソースコードは GitHub で公開しています(<a href="https://github.com/mdn/webextensions-examples/tree/master/borderify">https://github.com/mdn/webextensions-examples/tree/master/borderify</a>)。</p>
+
+<p>これ以降は、バージョン 45 以降の Firefox が必要となります。</p>
+
+<h2 id="Writing_the_extension" name="Writing_the_extension">拡張機能を書く</h2>
+
+<p>新しいディレクトリーを作成し、そのディレクトリーに移動します。例えば、コマンドライン/ターミナルでは次のようにできます:</p>
+
+<pre class="brush: bash">mkdir borderify
+cd borderify</pre>
+
+<h3 id="manifest.json" name="manifest.json">manifest.json</h3>
+
+<p>それでは、"borderify" ディレクトリー配下に新しいファイル "manifest.json" を作成します。以下の内容を書き込んで保存してください。</p>
+
+<pre class="brush: json">{
+
+ "manifest_version": 2,
+ "name": "Borderify",
+ "version": "1.0",
+
+ "description": "Adds a solid red border to all webpages matching mozilla.org.",
+
+  "icons": {
+ "48": "icons/border-48.png"
+ },
+
+ "content_scripts": [
+ {
+ "matches": ["*://*.mozilla.org/*"],
+ "js": ["borderify.js"]
+ }
+ ]
+
+}</pre>
+
+<ul>
+ <li>最初の 3 つのキー <code><a href="/ja/Add-ons/WebExtensions/manifest.json/manifest_version">manifest_version</a></code>、<code><a href="/ja/Add-ons/WebExtensions/manifest.json/name">name</a></code>、<code><a href="/ja/Add-ons/WebExtensions/manifest.json/version">version</a></code> は必須であり、拡張機能の基本的なメタデータを指定します。</li>
+ <li><code><a href="/ja/Add-ons/WebExtensions/manifest.json/description">description</a></code> は省略可能ですが、設定しておくことをお勧めします。この値はアドオンマネージャーに表示されます。</li>
+ <li><code><a href="/ja/Add-ons/WebExtensions/manifest.json/icons">icons</a></code> は省略可能ですが、設定しておくことをお勧めします。この値は拡張機能のアイコンを指定するものであり、アイコンはアドオンマネージャーに表示されます。</li>
+</ul>
+
+<p>ここで最も興味深いキーは <code><a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> です。このキーは、指定したパターンにマッチする URL のウェブページにスクリプトを読み込ませるよう Firefox に指示するものです。今回は、"borderify.js" というスクリプトを "mozilla.org" とそのサブドメインの HTTP / HTTPS ページすべてに読み込ませるように指定しています。</p>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/Content_scripts">コンテンツスクリプト関する詳細</a></li>
+ <li><a href="/ja/Add-ons/WebExtensions/Match_patterns">マッチパターンに関する詳細</a></li>
+</ul>
+
+<div class="warning">
+<p><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID#When_do_you_need_an_Add-on_ID">時折、あなたの拡張機能用に ID を指定する必要があります</a>。アドオンの ID が必要なとき、<code>manifest.json</code> 内に <code><a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions/manifest.json/applications">applications</a></code> キーを入れて <code>gecko.id</code> プロパティをセットします:</p>
+
+<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"applications":</span> <span class="punctuation token">{</span>
+ <span class="key token">"gecko":</span> <span class="punctuation token">{</span>
+ <span class="key token">"id":</span> <span class="string token">"borderify@example.com"</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span></code></pre>
+</div>
+
+<h3 id="iconsborder-48.png" name="iconsborder-48.png">icons/border-48.png</h3>
+
+<p>拡張機能にはアイコンを用意すると良いでしょう。このアイコンは、アドオンマネージャーでアドオンのリスト横に表示されます。今回の manifest.json では "icons/border-48.png" を用意していると宣言しています。</p>
+
+<p>まずは "borderify" ディレクトリーの下に "icons" ディレクトリーを作成します。次に、アイコンを "border-48.png" という名前で "icons" ディレクトリー内に保存します。必要であれば <a href="https://github.com/mdn/webextensions-examples/blob/master/borderify/icons/border-48.png">サンプルで使用しているアイコン</a> を利用しても構いません(このアイコンは Google Material Design iconset から引用したものであり、<a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike</a> ライセンスの下で使用しています)。</p>
+
+<p>ここでアイコンを自分で用意する場合は 48x48 ピクセルのサイズにする必要があります。高解像度のディスプレイには 96x96 ピクセルのアイコンを表示させたい場合は、manifest.json の <code>icons</code> オブジェクトに <code>96</code> というプロパティで設定してください。</p>
+
+<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"icons":</span> <span class="punctuation token">{</span>
+ <span class="key token">"48":</span> <span class="string token">"icons/border-48.png",
+ "96": "icons/border-96.png"</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>他の方法として、SVG ファイルを指定すれば正しく拡大・縮小されて表示されます。(しかし、SVG にテキストが含んだアイコンを使っている場合、SVG エディターの "convert to path" ツールでテキストを展開し、適切なサイズ/位置に拡大/縮小したくなるかもしれません。)</p>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/manifest.json/icons">アイコンを指定する方法に関する詳細</a></li>
+</ul>
+
+<h3 id="borderify.js" name="borderify.js">borderify.js</h3>
+
+<p>最後に、"borderify" ディレクトリーの下に "borderify.js" というファイルを作成します。次の内容を書き込んで保存してください。</p>
+
+<pre class="brush: js">document.body.style.border = "5px solid red";</pre>
+
+<p>このスクリプトは、manifest.json の <code>content_scripts</code> キーで指定したパターンにマッチするページに読み込まれます。読み込まれたスクリプトは、そのページ自身のスクリプトと同じようにドキュメントへ直接アクセスします。</p>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/Content_scripts">コンテンツスクリプトに関する詳細</a></li>
+</ul>
+
+<h2 id="Trying_it_out" name="Trying_it_out">動かしてみよう</h2>
+
+<p>ここで、必要なファイルが正しい場所に保存されているか再確認してください。</p>
+
+<pre>borderify/
+ icons/
+ border-48.png
+ borderify.js
+ manifest.json</pre>
+
+<h3 id="Installing" name="Installing">インストール</h3>
+
+<p>Firefox の場合: <a href="https://wiki.developer.mozilla.org/ja/docs/Tools/about:debugging">about:debugging</a> ページを開いて、"この Firefox" (Firefox の新しいバージョンで)をクリックし、"一時的なアドオンを読み込む" をクリックし、アドオンのディレクトリーにあるファイルをどれか 1 つ選択します。</p>
+
+<p>{{EmbedYouTube("cer9EUKegG4")}}</p>
+
+<p>ここでインストールされたアドオンは Firefox を再起動するまで有効です。</p>
+
+<p>あるいは、<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> ツールを使ってコマンドラインから拡張機能を実行することもできます。</p>
+
+<h3 id="Testing" name="Testing">テスト</h3>
+
+<p>それでは "mozilla.org" 配下のページを開いてみましょう。ページが赤い枠で囲まれていることを確認できるはずです。</p>
+
+<p>{{EmbedYouTube("rxBQl2Z9IBQ")}}</p>
+
+<div class="note">
+<p>ただ addons.mozilla.org では試さないで! このドメインでは現在、コンテンツスクリプトがブロックされています。</p>
+</div>
+
+<p>もう少し実験をします。コンテンツスクリプトを編集して、枠線の色を変更したり、ページのコンテンツに何か他の操作を加えてみましょう。コンテンツスクリプトを保存し、"about:debugging"の"再読み込み"ボタンをクリックして拡張機能ファイルを再読み込みすると、加えた変更がすぐに反映されているはずです。</p>
+
+<p>{{EmbedYouTube("NuajE60jfGY")}}</p>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/Packaging_and_installation#Loading_from_disk">拡張機能の読み込みに関する詳細</a></li>
+</ul>
+
+<h2 id="Packaging_and_publishing" name="Packaging_and_publishing">パッケージ化と公開</h2>
+
+<p>自分が作ったアドオンを他の人にも使ってもらうには、アドオンをパッケージとしてまとめた後、署名するために Mozilla へ送信する必要があります。詳細は<a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension">拡張機能の公開</a>を参照してください。</p>
+
+<h2 id="Whats_next" name="What's_next">次のステップ</h2>
+
+<p>これで Firefox 用 WebExtension の開発手順について概念を学ぶことが出来ました。それでは次のステップに進みましょう。</p>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">拡張機能の中身を詳しく学ぶ</a></li>
+ <li><a href="/ja/Add-ons/WebExtensions/Your_second_WebExtension">より複雑な拡張機能を書いてみる</a></li>
+ <li><a href="/ja/Add-ons/WebExtensions/API">拡張機能で利用できる JavaScript API を詳しく調べる</a></li>
+</ul>
diff --git a/files/ja/mozilla/add-ons/webextensions/前提条件/index.html b/files/ja/mozilla/add-ons/webextensions/前提条件/index.html
new file mode 100644
index 0000000000..751de9fe15
--- /dev/null
+++ b/files/ja/mozilla/add-ons/webextensions/前提条件/index.html
@@ -0,0 +1,17 @@
+---
+title: 前提条件
+slug: Mozilla/Add-ons/WebExtensions/前提条件
+translation_of: Mozilla/Add-ons/WebExtensions/Prerequisites
+---
+<p>WebExtension API を使って開発するには、いくつかの小さいセットアップが必要です。</p>
+
+<ul>
+ <li><a href="https://www.mozilla.org/firefox/developer/">Firefox Developer Edition</a> または <a class="external text" href="https://nightly.mozilla.org/" rel="nofollow">Firefox Nightly</a> をダウンロード、インストールして、起動してください。最近の追加機能を使用したい場合、Nightly を使用してください。</li>
+ <li>Firefox が未署名のアドオンをインストールを許可するかどうかを制御する設定をオンにします。この設定は Firefox Developer Edition と Firefox Nightly のみで使用できます。
+ <ul>
+ <li>Firefox のアドレスバーに <code>about:config</code> と入力して下さい。</li>
+ <li><code>xpinstall.signatures.required</code> を検索して下さい。</li>
+ <li>設定をダブルクリックするか、右クリックして "切り替え" を選択して、<code>false</code> にセットしてください。</li>
+ </ul>
+ </li>
+</ul>